Каждому иногда приходится размышлять над тем, что же происходит в ИТ, как оно будет дальше развиваться, и как потом с этим жить. Хотелось бы этим постом ответить на статью «Мысли об идеальном языке программирования».
Что мы видим в оригинальной статье? Осведомленный о современных тенденциях языкостроения автор оценивает один из флагманских языков системного программирования, рассуждая, каких еще положительных концепций и архитектурных решений можно воткнуть в современный язык методом наращивания фич силами огромного общемирового сообщества.
Типичная ошибка бытового экстраполирования. Одна фича хорошо, две фичи хорошо-хорошо, а если сто фич в язык добавим, по инерции кажется, будто станет 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