Язык 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" не столь захватывающе как предыдущее, но всё же имеет право на существование:
А вот, собственно, основное заклинание:
ПопробоватьС сайта APLX можно скачать бесплатную версию для некоммерческого использования под Linux и Windows. С сайта Dyalog APL на аналогичных условиях доступна версия для Windows.
Ссылки
- Язык программирования APL
- Язык АПЛ
- LIFEGAME.aws - копия workspace'а для APLX из данной статьи

:-) Исходник конечно жестевый. Есть ЯП который интепритирует пробельные символы, т.е. пару пробелов и табуляция это например аналог традиционного СИ, забыл вот только его название. Раз основа его исходника это пробелы, то можно его прятать в тестах.
ОтветитьУдалитьДа, этот язык называется Whitespace: http://en.wikipedia.org/wiki/Whitespace_(programming_language)
ОтветитьУдалитьЯ про него читал, но сам пока не пробовал