Компьютерра Журнал 658 - Компьютерра #676 от 27.02.2007 стр 16.

Шрифт
Фон

Еще один пример «программы, которая повлияла на язык», - текстовый редактор ed в Unix, привнесший в «широкие массы» (а также в языки AWK и Perl, далее везде) регулярные выражения как гибкий, универсальный (хоть и запутанный) способ обработки строковых данных.

И обратный, несколько неожиданный пример: наиболее широкое распространение функциональный подход к программированию получил не в каком-либо конкретном языке, а в электронных таблицах вроде Excel. Когда мы определяем одну ячейку как SUM, а другую как AVG и выполняем дальнейшие операции над этими значениями - мы занимаемся именно функциональным программированием (придумал не я, а один из микрософтовцев, разрабатывавших Haskell; см. http://research.microsoft.com/~simonpj/papers/excel/index.htm).

Маленький, но очень-очень гордый

Как пример можно привести линейку Snobol-Icon, языков Ральфа Гриспвольда для обработки строк. В 70-х и начале 80-х эти языки были очень популярными среди разработчиков компиляторов и исследователей ИИ, а затем их идеи вобрал в себя юниксовый AWK (при близких по мощности возможностях обработки строк он наследовал также и Algol-линейку традиционных языков, то есть в целом был более привычен и прост для изучения), а через него эти идеи попали в Perl (наравне с идеями из редактора ed, см. врезку «Неязыки»). Называя «патриархов», Ральфа Гриспвольда часто забывают упомянуть (даже Тьюринговской премии у него не было), он умер несколько месяцев назад не то чтобы «всеми забытым», но явно недооцененным героем.

Судьба языка APL за авторством Кеннета Айверсона (того самого, что написал «Notation as a Tool of Thought») сложилась более счастливо - по крайней мере, «Тьюринга» Айверсону дали. Язык, который расширял привычную математическую нотацию для работы с массивами (все его операторы были одно-двухсимвольными комбинациями, APL требовал особой клавиатуры со спецсимволами), иногда считался «издевательством» и «write-only» языком. Тем не менее «нотация» Айверсона показала свою мощь на задачах, для которых предназначалась (сложные операции с массивами данных); годы спустя появились языки-наследники J (1990, создан Айверсоном как более простая и логичная версия APL) и K (1993, создан учеником Айверсона Артуром Уитни как более простая и логичная версия J), имеющие ограниченную, но устойчивую популярность. На K, к слову, написана коммерческая РСУБД kdb, вроде как являющаяся самой быстрой в мире; по слухам, код ее составляет 26 файлов с однобуквенными именами [Отгадать, какие именно буквы использованы, оставляем как домашнее задание внимательному читателю], в каждом из которых - всего одна страница.

И наконец, для полноты картины упомянем язык Forth, который стоит несколько особняком - по «глобальности задумки» (есть только стек и ничего кроме стека) он находится на уровне Лиспа (по странности внешнего вида - тоже), а по «локальности последствий» - где-то в районе Snobol и APL. Сегодняшнее использование Forth смахивает на «развлечение для понимающих»; языки, на которые повлияли концепции Форта, - несколько экспериментальных гибридов (Kevo, Joy, Factor) да PostScript, язык описания страниц для печатающих устройств.

Lisp

Программируя на Лиспе, просто невозможно зайти в тупик: язык будет поддерживать тот стиль программирования, который вы сами для себя выберете или придумаете. Понятно, что такой подход требует от программиста самых свежих знаний для правильной и лаконичной реализации своих идей, но никто еще не жаловался на то, что ему приходится развиваться.

Те, кто хорошо знают и умеют применять Лисп, никогда не скажут, что какой-то язык может его полностью заменить, что Лисп устарел. Даже если такой программист использует в повседневной практике другой язык, значит, этот язык лучше подходит для решаемых задач или хорошо реализует полюбившуюся программисту парадигму.

Роман Клюйков

Итоги: небо становится ближе

«Оторванность от реальности», свойственная «модернистским идеям», всегда мешала их выходу на «широкую публику» - как напрямую (непонятность), так и косвенно, через вопросы производительности («если язык программирования не естествен для архитектуры компьютера, то чего будет стоить их взаимодействие?»), взаимодействия («как использовать библиотеки на более традиционных языках, коих уже есть много и отказываться от них не хочется?»), наличия программистов («если язык немэйнстримовый, а нам понадобится еще один программист в команду, где мы его возьмем?») [Интересно, что мэйнстрим часто и с удовольствием принимает побочные продукты развития «модернизма» - как технологические решения, вроде сборщика мусора (Lisp и другие) и компиляции в байткод (Smalltalk), так и организационные (популярные понятия рефакторинга, экстремального программирования родились в сообществе Smalltalk)]. Здесь можно провести параллель с судьбой мэйнфреймов и прочих специализированных компьютеров: есть случаи, в которых «вроде бы все понимают», что случай сложный и нужно использовать специальные мощные решения, но «стоимость» этих решений (включая затраты по внедрению, подбору соответствующих специалистов, интеграции со «стандартными частями») такова, что «мы уж сделаем как обычно».

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке