Языки будущего Крис Касперски ака мыщъх Спецвыпуск: Хакер, номер #055, стр. 055-052-3 Короче говоря, за что боролись, на то и напоролись. Языки в процессе своей эволюции выродились в настоящих монстров, ужасающих своей сложностью. Насколько проще было выучить пару сотен машинных команд, чем освоить С++! Вместо того чтобы заниматься решением задачи, программист вынужден воевать с транслятором, пытаясь заставить его сделать то, что он должен делать. Как все начиналось? Программисту предоставлялся набор хорошо продуманных примитивов, из которых, как из кирпичиков, и собиралась программа. Сейчас же кирпичики сменились готовыми бетонными блоками, к каждому из которых прилагается увесистая спецификация. Программист больше не возводит стены, не устанавливает окна, унитаз и двери - он листает спецификации в поисках модулей, которые должны подойти лучше всего. Программирование медленно, но неуклонно вырождается в проектирование. Это в императивных языках можно приступать к программированию, даже не имея никакого проекта, со смутными представлениями в голове. Жестких иерархий нет. Исходный код гибок и подвижен. Отрезали отсюда, приклеили сюда. Объективно-ориентированный же подход заковывает программу в неподвижный скелет. Неудачно спроектированную систему классов на поздних стадиях разработки уже не исправить, и ее придется тащить за собой, как асфальтовый каток. Хуже всего, что языки становятся неотделимыми от среды разработки и библиотек. Можно ли представить себе С++ без RTL? Что же тогда от него останется?! Не будут работать ни исключения, ни оператор new. А какой же без этого ООП? То же самое и со средой. В Microsoft Visual C++ еще можно отказаться от мастеров, но некоторые языки (Delphi, Флора) без нее уже немыслимы. Чем плохи мастера? Претензий к ним много, вот только несколько из них. Мастера генерируют ужасно запутанный код. Лучше удавиться, чем ковыряться в таком (а без ковыряний дело все равно не обходится, особенно когда в программе требуется что-то доработать или подкрутить). Мастера провоцируют на дурной стиль программирования, перемешивающий интерфейс с реализацией. Мастера делают процесс обучения непоследовательным, нелинейным и трудновоспроизводимым. Вместо исходного текста программы, который можно написать и прочитать, новичку предлагается последовательность нажатий клавиш, в которой мало что можно разобрать. В общем, языки программирования вырождаются в жестикуляцию. Но по-другому сегодня уже нельзя. Возросший оверхид (англ. overhead - накладные расходы) в прямом смысле слова раздувает муху до размеров слона. Представляет интерес проследить эволюцию программы Hello, world! (www.sources.ru/news/20010609.shtml). Насколько же проще было программировать на ассемблере под PDP-10, чем на современных высокоуровневых языках под OLE/ActiveX! Что ждет нас в будущем? Бесконечный мусор многолетних наслоений или необычайно удобный и элегантный язык? |