Мир современных языков программирования развивается под знаком яростного противостояния Java и C#. И все же новые языки, возрождающие славные традиции прошлого, не боятся бросить вызов признанным лидерам.

Куда мы идем?

Языки программирования, несмотря на все свое бесконечное разнообразие и значительную адаптацию к особенностям компьютерной обработки, еще не утеряли связи с привычными нам естественными языками, что в общем-то объяснимо, ведь писать на них должны люди, а не машины.

Как и в естественном языке, в программировании мы встречаемся с повелительными конструкциями (императивные языки, такие как Фортран, Си и Паскаль), изъявительными (декларативные языки, например Лисп и Пролог) и вопросительными (языки запросов, в частности SQL). В известной степени их всех объединяет повествовательная форма (сценарные языки, подобные Perl, Python), а также текстуальное структурирование (языки разметки вроде HTML- и XML-семейств).

Перечисленные группы языков значительно различаются синтаксисом и семантикой. Более того, можно даже утверждать, что пишущие на них программисты должны мыслить по-разному. Не думаю, что здесь стоит погружаться в глубины психо- и нейролингвистики или выяснять, насколько сильно при использовании таких языков различается работа левого и правого полушарий мозга. Но даже на интуитивном уровне понятно, что конкретный язык программирования, подобно естественному языку, в значительной степени диктует способ мышления.

Различия наблюдаются не только между группами языков, но и внутри них. Наверное, не будет преувеличением сказать, что среди императивных языков с точки зрения синтаксиса можно выделить три доминирующих направления: Фортран-ориентированное (Фортран, Кобол, Visual Basic), Паскаль-ориентированное (Паскаль, Delphi/Object Pascal, Ada), Си-ориентированное (Си, С++, Java, C#). Конечно же я намеренно упрощаю реальную картину, но при изложении новых идей лучше отталкиваться от понятных эталонов.

Фортран-ориентированное направление привлекает к себе людей, связанных с прикладными задачами программирования, т. е. тех, кто посредством языка решает весьма специфические задачи, будь то из области математики или бизнеса. Паскаль-ориентированное направление чаще выбирают люди, следующие классическим канонам программирования и четким принципам, заложенным еще на университетской скамье (программирование как наука и искусство). Наконец, Си-ориентированное направление стало уже общепризнанной нормой промышленного производства программного обеспечения, другими словами, неотъемлемой частью программирования как ремесла. К сожалению, приходится признать, что мир профессионального программирования, выбрав языки Си-семейства, давно уже вступил на скользкий путь избыточной сложности.

В результате такие критерии, как простота (наглядность исходных текстов), надежность, компактность программ и эффективность исполняемого кода, теперь заменяются на один главный критерий — скорость реализации идей. А это неизбежно ведет к резкому снижению влияния самого языка и возрастанию роли инструментальной среды, которой подчас вообще все равно, чем оперировать, и прежде всего ее возможностей визуализации. Как точно отмечает Никлаус Вирт, «постоянный недостаток времени — вот, вероятно, первейшая причина, приводящая к появлению громоздкого программного обеспечения» [1]. Приоритет времени разработки в общем-то понятен: человеческие ресурсы нынче стоят значительно выше, чем аппаратные. Но не теряем ли мы по дороге то ценное, что вернуть потом будет крайне тяжело?

Лидеры компьютерной индустрии, следуя законам маркетинговых войн, последовательно внедряют в массы все новые и новые мифы (что именно компиляторы C++ формируют наиболее эффективный код, что именно Java создает самые переносимые программы и что именно C# отражает самые передовые концепции программирования).

Сейчас редко кто ставит под сомнение целесообразность почти повсеместного использования доминирующей...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.