«В ближайшем будущем стоимость компьютерного оборудования, необходимого для запуска и работы программы, будет ничтожно мала по сравнению со стоимостью труда программиста, поэтому имеет смысл разрабатывать языки программирования, которые хотя и более требовательны к ресурсам компьютера, но позволяют нам, чтобы минимизировать объем кода», — примерно так рассуждал доктор Джим Браун, возглавлявший в середине 80-х группу APL разработчиков IBM. Что ж, его прогнозы оправдались лишь частично.
Сейчас APL используется, и весьма успешно, для программирования финансовых и научных расчетов, входит в состав платформы .
NET и занимает 33-е место в индексе TIOBE по состоянию на ноябрь 2010 года (рейтинг 0,366%).
APL действительно позволяет минимизировать объем кода, а программировать на нем легко и приятно, но его синтаксис настолько отличается от всех других популярных языков программирования, что отпугивает большинство «потенциальных фанатов».
Постараюсь познакомить вас с APL поближе, язык достаточно полезный, и, несмотря на пугающие на первый взгляд «заморочки», он логичен, красив, а для программирования математических расчетов и операций с большими объемами данных, это также лучший выбор инструмента разработки.
Итак, APL, аббревиатура расшифровывается очень просто: Язык программирования.
Идея языка пришла Кеннету ?.
Айверсону в 1957 году, когда он работал в Гарвардском университете, и была реализована во время его работы в IBM в 1964 году.
Пик использования APL пришелся на середину 80-х годов, когда появилось множество версий языка и диалектов.
, в том числе для микроконтроллеров.
В какой-то момент даже корпорация Microsoft планировала выпустить свою версию APL, но по неизвестным причинам этот релиз так и не состоялся.
В начале 80-х появилась новая версия языка — APL2, которую создала группа разработчиков IBM под руководством доктора Джима Брауна.
Эта версия стала основой современной АПЛ.
Сейчас существует около дюжины различных интерпретаторов APL. Основные из них — Dyalog APL, APL Now и MicroAPL, все три работают с Windows, Unix и Linux, а последний еще и с MacOS (далее я приведу примеры с использованием Dyalog APL, кроме того, студенты могут бесплатно скачать этот интерпретатор с сайта Сайт Диалога: dss.dyalog.com/edu ).
Поскольку в среде APL используется множество нестандартных символов, для разработки используется специальная раскладка клавиатуры.
В последних версиях Dyalog APL специальные символы уже отображаются прямо на панели приборов, и их легко выбрать, просто нажав на нужный символ.
Итак, зачем нам все это? Основными особенностями и преимуществами языка являются следующие:
1. Кроссплатформенные реализации.
2. Вычисления происходят справа налево, а вычисленный результат присваивается функции слева.
Позволь мне привести пример:
3. Объем кода минимизирован за счет использования специальных символов и того, что все операции можно производить непосредственно над массивом, т.е.
нет необходимости использовать циклы.
Например, давайте создадим массив, найдем сумму всех элементов массива, найдем длину массива, а затем увеличим каждый элемент массива на 1 + номер элемента массива.
Благодаря этим правилам APL по сути позволяет реализовать любую функцию в одной строке кода.
Один друг реализовал множество Мандельброта на APL, и Здесь скачать реализацию знаменитой игры «Жизнь» можно, естественно тоже одной строчкой кода.
Еще один огромный плюс – возможность работы с большими матрицами.
Клиенты, которые используют наш программный продукт (а клиентами являются инвестиционные банки, пенсионные фонды, банковские альянсы), часто имеют данные в матрицах размерностью 100 000 по одной оси.
APL позволяет выполнять различные математические операции над такими матрицами без потери производительности.
Конечно, есть и недостатки.
Главный из них, как уже не раз упоминалось, — необычный синтаксис.
Долгое время APL вообще считался «языком только для записи», поскольку понять написанный код довольно сложно.
В настоящее время используется лишь малая часть возможностей языка, поэтому можно обойтись несколькими наиболее важными символами и вообще инкапсулировать код APL внутри .
Net-библиотек.
Изначально APL был функционально-модульным языком программирования, хотя современный APL и поддерживает ООП, но написание полностью объектно-ориентированного кода будет, мягко говоря, не очень простым и читабельным.
Однако стоит иметь в виду тот факт, что язык поддерживает возможность создания сложных объектов.
В принципе, современный APL позволяет создать графический интерфейс (не дай Бог вам это сделать), и что приятно, он поддерживает XML и лямбда-выражения.
Я приведу вам еще несколько примеров, чтобы вы могли почувствовать язык.
APL предоставляет очень мощные механизмы для работы с массивами и матрицами.
Элементы массива могут быть любого типа, массивы могут иметь любой уровень вложенности, и вы можете легко добраться до любого элемента массива.
Создадим матрицу 10 на 10 и заполним ее элементами от 1 до 100. Доступ к строкам матрицы стандартный:
Теперь создадим массив из трёх элементов: числа, строки и нашей матрицы.
Мы можем легко получить доступ к любому элементу массива.
Поменяем вторую букву в строке и последний элемент матрицы (изменился только массив, матрица мата не изменилась).
Чтобы создать функцию, просто введите ее название и дважды щелкните по ней мышкой – функция откроется в отдельном окне.
Все, что идет слева и справа от имени функции, является аргументами, результат — это то, что идет слева от символа присваивания.
Результат возвращается в переменную с тем же именем, что указано в первой строке.
В APL подписью функции является только ее имя.
Я создаю функцию, которая принимает один аргумент и возвращает его приращение.
Отдельно стоит отметить отладчик APL. Изменять значения переменных и перемещаться по стеку можно прямо во время выполнения, что не может не радовать.
Вам просто нужно переключиться из режима трассировки в режим редактирования.
Я меняю переменную a на 1 перед выполнением последней строки функции, справа окно Watch, в котором значение переменной res равно:
Вы можете показать множество примеров, но самый простой вариант — скачать Dyalog APL и попробовать самостоятельно.
При этом ознакомьтесь со стандартными функциями, представленными символами.
При наведении курсора на символ появляется информация о его функции и использовании.
Анализатор языка проверяет введенную строку справа налево, пока не встретит первую функцию (символ).
Затем он проверяет, есть ли аргументы слева от функции.
Если аргументов нет, то символ используется в своем единственном значении (монадическом), но если слева есть аргументы, то используется двоичное значение.
Пример: этот символ либо округляет в большую сторону, либо выбирает максимум два элемента.
Я думаю, этой информации должно быть достаточно, чтобы вы самостоятельно освоились с языком.
В заключение могу порекомендовать еще несколько видеоуроков.
Надеюсь, мне удалось вас заинтересовать, потому что кажется несправедливым, что про АПЛ нет русскоязычных статей и вообще она у нас совершенно непопулярна.
И, конечно же, я постараюсь ответить на ваши вопросы и/или комментарии.
Теги: #язык программирования #APL #Функциональное программирование #финансовое программирование #программирование
-
Атланта — Новый Дом Игрового Дизайна?
19 Oct, 24 -
Как Я Работал Два Часа В День
19 Oct, 24 -
Шпаргалка По Цветам Яндекс Тци
19 Oct, 24 -
Где Останавливаются Боты
19 Oct, 24 -
Кстати
19 Oct, 24