Добавить в корзинуПозвонить
Найти в Дзене
Синдром Утёнка | IT

APL: язык программирования, который выглядит как ругательство инопланетянина и почему его до сих пор любят математики

Представь: ты открываешь файл с кодом и видишь не привычные if, else и скобки, а строку, напоминающую проклятие древнего бога. life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵} Это одна строчка. Она реализует игру «Жизнь» Джона Конвея целиком. Без циклов. Без переменных. Без привычных структур. Если ты не математик и не криптограф, то, скорее всего, ты не понял ни единого символа. Добро пожаловать в мир APL — «A Programming Language», языка, который изобрёл гениальный Кен Айверсон в 1960 году и который до сих пор используется там, где обычные языки пищат и ломаются. Кен Айверсон был математиком из Канады. В середине 50-х он работал в Гарварде и сильно устал от того, что математические описания алгоритмов занимают страницы текста, хотя по сути являются простыми операциями над массивами. Он решил придумать нотацию — компактную систему записи, где каждый символ означает целую операцию. Никакого синтаксического мусора. Только суть. Его книга «A Programming Language» вышла в 1962 году и стала сенса
Оглавление

Представь: ты открываешь файл с кодом и видишь не привычные if, else и скобки, а строку, напоминающую проклятие древнего бога.

life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

Это одна строчка. Она реализует игру «Жизнь» Джона Конвея целиком. Без циклов. Без переменных. Без привычных структур. Если ты не математик и не криптограф, то, скорее всего, ты не понял ни единого символа. Добро пожаловать в мир APL — «A Programming Language», языка, который изобрёл гениальный Кен Айверсон в 1960 году и который до сих пор используется там, где обычные языки пищат и ломаются.

Нотация, которая стала языком

Кен Айверсон был математиком из Канады. В середине 50-х он работал в Гарварде и сильно устал от того, что математические описания алгоритмов занимают страницы текста, хотя по сути являются простыми операциями над массивами. Он решил придумать нотацию — компактную систему записи, где каждый символ означает целую операцию. Никакого синтаксического мусора. Только суть.

Его книга «A Programming Language» вышла в 1962 году и стала сенсацией в узких кругах. Айверсон придумал десятки новых символов, потому что стандартной клавиатуры не хватало. Знак ⍴ (rho) — форма массива, ⌽ (circle stile) — вращение, ⍋ (delta stile) — сортировка по возрастанию. Каждый символ — как иероглиф, который заменяет собой целую функцию. Для программистов, привыкших к FORTRAN и ALGOL, это выглядело как шифр. Но математики обожали: наконец-то можно записывать алгоритмы так же кратко, как формулы.

Сравнение с пристрастием
Обычный язык программирования — это как писать роман. APL — это писать хайку. В первом случае у тебя есть слова, абзацы, сюжет. Во втором — три строки, которые содержат в себе целый мир. Но если ты не понимаешь правил хайку, ты просто видишь странный набор слогов. С APL то же самое: чтобы читать его, нужно перестроить мозг. Зато когда перестроишь — ты больше не захочешь писать длинные романы там, где хватит трёх строк.

Клавиатура, на которую страшно смотреть

Когда APL начали использовать на практике, встала проблема: где взять все эти символы? Клавиатуры того времени имели минимум клавиш. Решение было радикальным: IBM выпустила специальную клавиатуру для APL, которая печатала символы поверх обычных букв. Она называлась IBM 2741 с головкой «APL golf ball» — шариком для печатной машинки, на котором вместо букв были иероглифы Айверсона.

Чтобы напечатать программу, нужно было переключать регистры, комбинировать клавиши и помнить, где какой символ спрятан. Со временем появились APL-клавиатуры с греческими буквами, математическими значками и стрелками всех направлений. Случайный человек, садившийся за такой терминал, впадал в ступор. Где здесь буква «A»? А её нет. Вернее, она есть, но означает не «A», а оператор «and».

APL-программисты были отдельной кастой. Они носили с собой накладки на клавиатуру и обожали спорить о том, чья программа короче. Считалось особым шиком написать алгоритм в одну строку. Чем меньше символов — тем круче. Это был спорт, искусство и одержимость одновременно.

Байка из серверной
Однажды программист APL написал программу для анализа ядерных реакторов. Она занимала ровно одну строку. Коллеги из FORTRAN-отдела не поверили, что это работает, пока он не запустил её на тестовых данных. Результат совпал с их собственным кодом, который занимал три страницы. Говорят, начальник FORTRAN-отдела ушёл в отпуск на неделю, а APL-программисту выписали премию в размере одного цента за каждый сэкономленный байт. Шутка, конечно. Но только наполовину.
-2

Где APL жив до сих пор

Казалось бы, язык с иероглифами должен был умереть в 80-е. Но APL не умер. Он мутировал. Потомки оригинального языка — APL2, Dyalog APL, J (созданный самим Айверсоном в 90-е) и K — используются в финансах, страховании, криптографии и высоконагруженных системах, где скорость обработки массивов критична.

Швейцарский банк UBS десятилетиями использовал APL для риск-менеджмента. Страховые гиганты рассчитывают тарифы на APL-подобных языках. В Великобритании до сих пор существует рынок APL-разработчиков с зарплатами выше, чем у Python-программистов. А язык K, прямой потомок APL, лежит в основе kdb+ — базы данных, которая обрабатывает миллиарды транзакций на Уолл-стрит быстрее, чем любая SQL-система.

Секрет живучести APL — в его математической природе. Он работает с массивами так же естественно, как калькулятор — с числами. Операция, которая в Python требует цикла и нескольких строк, в APL — один символ. Для задач, где нужно перемалывать гигантские таблицы, это не просто удобство — это разница между минутой и миллисекундой.

-3

Наследие Айверсона

Кен Айверсон получил премию Тьюринга в 1979 году — именно за APL и вклад в математическую нотацию. Он ушёл из жизни в 2004 году, но его идеи живы. Современные языки обработки данных — MATLAB, Julia, NumPy в Python — все вдохновлены APL. Они не используют иероглифы, но философия работы с массивами как с единым целым пришла именно оттуда.

APL никогда не станет массовым языком. Но в этом и его прелесть. Есть вещи, которые созданы не для всех. Они созданы для тех, кто способен увидеть красоту в строке символов, похожих на заклинание. Для тех, кто знает: иногда одна строчка кода может заменить тысячу. И в мире, где программы раздуваются гигабайтами, эта экономия мысли — настоящее искусство.

Пять копеек напоследок
APL — это напоминание о том, что простота и краткость — не одно и то же. Можно писать коротко и быть непонятным. А можно писать коротко и быть гениальным. APL выбрал второй путь, но входной билет на этот рейс стоит дорого: нужно выучить новый алфавит, пересобрать мозг и смириться с тем, что твой код похож на заклинание из «Некрономикона». Зато те, кто осилил, уже не возвращаются обратно. Потому что, когда ты можешь выразить всю сложность мира одним символом, многословие кажется пустой тратой времени.

Понравился выпуск? Жми лайк и подписывайся на «Синдром Утёнка | IT» — мы тут расшифровываем технологические письмена и рассказываем, на каких языках говорит цифровая вселенная.