суббота, 20 ноября 2010 г.

Язык APL: разминка для ума

Введение

Язык APL, разработанный в IBM Кеннетом Иверсоном (Kenneth Iverson) и Эдином Фалкоффом (Adin Falkoff), примечателен по многим причинам. Во-первых, ему уже почти 50 лет. Во-вторых, первые 7-8 лет разработка велась вообще без компьютеров, на бумажке. В те времена язык называли не иначе как нотацией Иверсона. Название APL появилось позже, когда в 1962 Иверсон опубликовал книгу под названием "A Programming Language". Ещё один удивительный факт - наличие собственного ни на что не похожего набора символов, для ввода которых использовалась специальная APL-клавиатура. В четвёртых, новаторская по тем временам технология работы со сложными иерархическими структурами данных.

Поскольку сам язык ориентирован на работу с массивами (в том числе и многомерными), в грамотно-написанной программе на APL редко встречаются циклы и "возня" с отдельными элементами. Наличие специфической нотации и очень высокоуровневых даже по современным меркам операций, позволяет запрограммировать в однострочнике на APL то, на что в другом языке потребовало бы целой программы. От некоторых таких "шедевров", незнакомый с APL-ем программист вполне может временно впасть в оцепенение. Один из ярких примеров - реализация знаменитой математической забавы известной как Game of Life. Реализация игры на Dyalog APL, одном из современных диалектов APL-я, приводится в википедии.

Посмотреть

Вообще, изучение незнакомых языков, пусть даже и весьма поверхностное, существенно расширяет кругозор. А знакомство с APL-ем бесспорно стоит потраченного времени. Посмотреть за тем как гуру пишет и объясняет однострочник для Game of Life на Dyalog APL можно тут.

Диалект APLX, который использовался мной для экспериментов с APL-ем несколько отличается от Dyalog'а. Иначе определяются функции и нет некоторых операторов. Моё видео - "Game of Life на APLX" не столь захватывающе как предыдущее, но всё же имеет право на существование:

video

А вот, собственно, основное заклинание:

Попробовать

С сайта APLX можно скачать бесплатную версию для некоммерческого использования под Linux и Windows. С сайта Dyalog APL на аналогичных условиях доступна версия для Windows.

Ссылки

2 комментария:

  1. :-) Исходник конечно жестевый. Есть ЯП который интепритирует пробельные символы, т.е. пару пробелов и табуляция это например аналог традиционного СИ, забыл вот только его название. Раз основа его исходника это пробелы, то можно его прятать в тестах.

    ОтветитьУдалить
  2. Да, этот язык называется Whitespace: http://en.wikipedia.org/wiki/Whitespace_(programming_language)

    Я про него читал, но сам пока не пробовал

    ОтветитьУдалить