Каждому иногда приходится размышлять над тем, что же происходит в ИТ, как оно будет дальше развиваться, и как потом с этим жить. Хотелось бы этим постом ответить на статью «Мысли об идеальном языке программирования».
Что мы видим в оригинальной статье? Осведомленный о современных тенденциях языкостроения автор оценивает один из флагманских языков системного программирования, рассуждая, каких еще положительных концепций и архитектурных решений можно воткнуть в современный язык методом наращивания фич силами огромного общемирового сообщества.
Типичная ошибка бытового экстраполирования. Одна фича хорошо, две фичи хорошо-хорошо, а если сто фич в язык добавим, по инерции кажется, будто станет 100×хорошо. Линейный, а лучше экспоненциальный рост количества фич в языке и стандартной библиотеке, вот рецепт счастья настоящих суровых программистов промышленного уровня в 2015-м году.
А про всякие картиночки типа этой мало кто вспоминает, а если и вспоминают, то думают о них только плохое. Потому что справедливое возмущение. Потому что негодование. Потому что как это так, разве можно выкидывать из языка фичи, разве можно отказаться от foreach? И вообще, что это за развитие такое, если фичи исчезают? Совместимость теряется. Пометьте уже @Deprecated как @Deprecated.
С другой стороны, возникают вопросы. Все ли читали огромный language reference своего любимого языка от корки до корки? А если читали, то сколько процентов запомнили? Так ли нужно иметь стопицот видов циклов? Действительно ли нужно каждое полюбившееся толпе библиотечное решение внедрять в язык?
Обладание идеальным исполнителем и практическое отсутствие сопромата (про порядок сложности только на собеседованиях вспоминают) привело софтверную индустрию к состоянию, в котором магистральным течением в рассуждениях является экспансия. А если точнее, не экспансия, а эксплозия. Борьба со сложностью задач сложностью инструментов, с помощью которых эти задачи решаются. Конечно, многие от этого выигрывают. Зарплаты растут. Что еще нужно?
Существует несколько направлений эксплозии в языкостроении. Синтаксический сахар, смешивание парадигм, ослабление ограничений типизации в надежде на позитивный сценарий использования. По-военному упрямая гонка за повышением читаемости, выразительности, компактности записи. Введение неявных механизмов, типа шаблонов и супер-компиляции.
Конечно, во всем этом можно найти позитивные устремления, которые по факту остаются такими же виртуальными, какими они предстают перед компилятором.
Могут возразить, что в реальности, у самых крутых языков есть стандартизация, экспертные комиссии, которые выполняют невообразимо глубокую проработки проблем индустрии. Но что это за проблемы? Не те ли, которые были созданы на предыдущей итерации стандартизации и экспертизы?
А в остальном, все как всегда, индустрия ИТ идет вслед за бизнес-тенденциями, реализуя аутентичные средства решения проблем бизнеса методом суслика просто потому, что бизнесу нужен минимально значимый продукт. Постепенно это приводит к тому, что и сам ИТ-бизнес становится минимально значимым. Когда и где компании вырывались в лидеры, потому что потратили 80% ресурсов проекта на архитектуру, а 20% ресурсов на разработку? Уже смешно, не правда ли?
Интересно, что и когда должно произойти в мире, чтобы эксплозия остановилась? Может быть, коллапс экономики? Нельзя такого желать, это смерть и страдания многих людей, будет уже не до ИТ. Может, метеорит? Хорошее, годное средство против гегемонов. Но мы же в 21-м веке, умные образованные люди. Стремимся к научному и формальному мышлению. Может, надо желать эволюционного скачка человеческого вида? Но это долго, а компьютеры способно выполнить ошибочный код за наносекунды. Сколько раз они его выполнят, прежде чем сознательность человека алгоритмического повысится на 1%? Сколько еще раз упадут спутники и заглохнут двигатели Боинга после выхода за пределы сишного массива?
А вы в курсе, что ПО для спутников пишут на Модуле? На той самой, из 80-х, которую Никлаус Вирт создал, просто отсекая все лишнее. Ребята из Excelsior Jet до сих пор поддерживают свой XDS, значит это кому-то надо. Значит, спутники, не прощающие ошибок, поощряют Модулу?
А что можно противопоставить тем, кто не поощряет? Ничего. Надо искать ниши, бегать по норам, как млекопитающие в позднюю эпоху динозавров. У динозавров доминирование, и никому уже нет дела до ваших алгоритмов и циклов Дейкстры. Ну и что, что мозг (два мозга) размером с орех, ведь все работает. Процессы идут, контракты заключаются. И не то чтобы сильно хотелось контрактов. Хочется, конечно, принуждение голодом для всех одинаковое.
Никто не принуждает к Оберону. Особенно в школах. Особенно в начальных классах. Не нужно учить Оберону с начальных классов. И школьники с алгоритмическим мышлением не нужны. И простой язык не нужен. И миллионы готовых алгоритмистов не нужны. А кому они нужны, за копейки-то? А как иначе, за что тут много платить, ведь просто все, такое я и сам сделаю. Где там моя книжечка «Программирование для непрограммистов»? Еще научим на свою голову понимать алгоритмы и дадим простой язык, так они ведь все без нас начнут программировать. Не очень радужно. А потом не захотят писать на Java. Скажут, некачественно сделано, провалы в концепциях видеть начнут. Лишние фичи критиковать. Нехорошо это. Как говорится, после изучения Оберона, изучение любого другого языка это изучение его (другого языка) недостатков.
Как же так, язык простой, к��мпилятор еще проще. И операционная система получается простая.

И интерфейс пользователя простой. А страничка проекта вообще простая. Все это довольно просто, по-спартански. И платка FPGA такая же. Простые вещи не привлекают внимания.
И эта статья никак не является призывом взять и пересесть на Оберон. Как говорил Никлаус Вирт:
А после того, как вы закроете этот невзрачный текст, которому явно не хватает внятной и серьезной аргументации, и вообще, что курил автор, почитайте эту статью, она про простоту: issuu.com/xcelljournal/docs/xcell_journal_issue_91/30?e
Что мы видим в оригинальной статье? Осведомленный о современных тенденциях языкостроения автор оценивает один из флагманских языков системного программирования, рассуждая, каких еще положительных концепций и архитектурных решений можно воткнуть в современный язык методом наращивания фич силами огромного общемирового сообщества.
Типичная ошибка бытового экстраполирования. Одна фича хорошо, две фичи хорошо-хорошо, а если сто фич в язык добавим, по инерции кажется, будто станет 100×хорошо. Линейный, а лучше экспоненциальный рост количества фич в языке и стандартной библиотеке, вот рецепт счастья настоящих суровых программистов промышленного уровня в 2015-м году.
А про всякие картиночки типа этой мало кто вспоминает, а если и вспоминают, то думают о них только плохое. Потому что справедливое возмущение. Потому что негодование. Потому что как это так, разве можно выкидывать из языка фичи, разве можно отказаться от foreach? И вообще, что это за развитие такое, если фичи исчезают? Совместимость теряется. Пометьте уже @Deprecated как @Deprecated.
С другой стороны, возникают вопросы. Все ли читали огромный language reference своего любимого языка от корки до корки? А если читали, то сколько процентов запомнили? Так ли нужно иметь стопицот видов циклов? Действительно ли нужно каждое полюбившееся толпе библиотечное решение внедрять в язык?
Обладание идеальным исполнителем и практическое отсутствие сопромата (про порядок сложности только на собеседованиях вспоминают) привело софтверную индустрию к состоянию, в котором магистральным течением в рассуждениях является экспансия. А если точнее, не экспансия, а эксплозия. Борьба со сложностью задач сложностью инструментов, с помощью которых эти задачи решаются. Конечно, многие от этого выигрывают. Зарплаты растут. Что еще нужно?
Существует несколько направлений эксплозии в языкостроении. Синтаксический сахар, смешивание парадигм, ослабление ограничений типизации в надежде на позитивный сценарий использования. По-военному упрямая гонка за повышением читаемости, выразительности, компактности записи. Введение неявных механизмов, типа шаблонов и супер-компиляции.
Конечно, во всем этом можно найти позитивные устремления, которые по факту остаются такими же виртуальными, какими они предстают перед компилятором.
Могут возразить, что в реальности, у самых крутых языков есть стандартизация, экспертные комиссии, которые выполняют невообразимо глубокую проработки проблем индустрии. Но что это за проблемы? Не те ли, которые были созданы на предыдущей итерации стандартизации и экспертизы?
А в остальном, все как всегда, индустрия ИТ идет вслед за бизнес-тенденциями, реализуя аутентичные средства решения проблем бизнеса методом суслика просто потому, что бизнесу нужен минимально значимый продукт. Постепенно это приводит к тому, что и сам ИТ-бизнес становится минимально значимым. Когда и где компании вырывались в лидеры, потому что потратили 80% ресурсов проекта на архитектуру, а 20% ресурсов на разработку? Уже смешно, не правда ли?
Интересно, что и когда должно произойти в мире, чтобы эксплозия остановилась? Может быть, коллапс экономики? Нельзя такого желать, это смерть и страдания многих людей, будет уже не до ИТ. Может, метеорит? Хорошее, годное средство против гегемонов. Но мы же в 21-м веке, умные образованные люди. Стремимся к научному и формальному мышлению. Может, надо желать эволюционного скачка человеческого вида? Но это долго, а компьютеры способно выполнить ошибочный код за наносекунды. Сколько раз они его выполнят, прежде чем сознательность человека алгоритмического повысится на 1%? Сколько еще раз упадут спутники и заглохнут двигатели Боинга после выхода за пределы сишного массива?
А вы в курсе, что ПО для спутников пишут на Модуле? На той самой, из 80-х, которую Никлаус Вирт создал, просто отсекая все лишнее. Ребята из Excelsior Jet до сих пор поддерживают свой XDS, значит это кому-то надо. Значит, спутники, не прощающие ошибок, поощряют Модулу?
А что можно противопоставить тем, кто не поощряет? Ничего. Надо искать ниши, бегать по норам, как млекопитающие в позднюю эпоху динозавров. У динозавров доминирование, и никому уже нет дела до ваших алгоритмов и циклов Дейкстры. Ну и что, что мозг (два мозга) размером с орех, ведь все работает. Процессы идут, контракты заключаются. И не то чтобы сильно хотелось контрактов. Хочется, конечно, принуждение голодом для всех одинаковое.
Никто не принуждает к Оберону. Особенно в школах. Особенно в начальных классах. Не нужно учить Оберону с начальных классов. И школьники с алгоритмическим мышлением не нужны. И простой язык не нужен. И миллионы готовых алгоритмистов не нужны. А кому они нужны, за копейки-то? А как иначе, за что тут много платить, ведь просто все, такое я и сам сделаю. Где там моя книжечка «Программирование для непрограммистов»? Еще научим на свою голову понимать алгоритмы и дадим простой язык, так они ведь все без нас начнут программировать. Не очень радужно. А потом не захотят писать на Java. Скажут, некачественно сделано, провалы в концепциях видеть начнут. Лишние фичи критиковать. Нехорошо это. Как говорится, после изучения Оберона, изучение любого другого языка это изучение его (другого языка) недостатков.
Как же так, язык простой, к��мпилятор еще проще. И операционная система получается простая.

И интерфейс пользователя простой. А страничка проекта вообще простая. Все это довольно просто, по-спартански. И платка FPGA такая же. Простые вещи не привлекают внимания.
И эта статья никак не является призывом взять и пересесть на Оберон. Как говорил Никлаус Вирт:
Многие люди относятся к стилям и языкам программирования как к религиозным конфессиям: если вы принадлежите к одной из них, то не можете принадлежать к другой. Но это ложная аналогия, и она сознательно поддерживается по причинам коммерческого порядка.
А после того, как вы закроете этот невзрачный текст, которому явно не хватает внятной и серьезной аргументации, и вообще, что курил автор, почитайте эту статью, она про простоту: issuu.com/xcelljournal/docs/xcell_journal_issue_91/30?e