A+
- Русское название:
- А Плюс
- Дата создания:
- 1988
- Создан под влиянием:
- Повлиял на:
- Парадигма:
- Типизация:
- Реализации и версии (свернуть все | развернуть все):
A+ — матричный язык программирования, потомок языка A, который, в свою очередь, был создан как замена APL.
A+ был создан в Morgan Stanley командой разработчиков во главе с Артуром Уитни (Arthur Whitney). В 1988 году Уитни создал язык A; он задумывался как бизнес-ориентированная реализация APL, способная выполняться на SunOS (платформе для распределенных вычислений) и эффективно обрабатывать большие объемы данных. Позднее другие разработчики доработали язык, добавив графический интерфейс пользователя с автоматической синхронизацией переменных и соответствующих виджетов (средств отображения переменных) и ряд других возможностей. В 1992 году новый язык был официально назван A+ (+ в честь главного из добавленных элементов — графического интерфейса).
Особенности языка:
-
A+ использует набор символов APL, поэтому разработка на нем сопряжена с теми же сложностями. Основной средой разработки на A+ является XEmacs с соответствующим расширением и шрифтом
kapl
. В поставку языка входит схема клавиатуры с нанесенными на нее специальными символами шрифта. - Программа на A+ состоит из определений функций, команд присвоения и вызовов функций.
- В отличие от APL, команды разделяются точкой с запятой, и поэтому могут занимать несколько строк.
- Функция может принимать до 9 аргументов; если аргументов два, вместо обычного префиксного вызова функции можно использовать инфиксный.
- Элементарные функции разделяются на три основных типа. Скалярные функции применяются независимо к каждому элементу массива, хотя синтаксис позволяет записывать это как применение функции к массиву в целом; к ним относятся арифметические, логические и некоторые математические функци. Структурные функции определяются в терминах индексов массива, меняя местами или выбирая элементы массива, не изменяя их. Наконец, специализированные функции работают с массивом в целом и изменяют его; к ним относится, например, функция инвертирования матрицы.
-
Большинство структурных функций (
Catenate
,Take
,Drop
,Reverse
,Rotate
,Replicate
иExpand
) и функции, полученные в результате использования операторовReduce
иScan
, применяются к главной оси правого аргумента; его элементами считаются срезы массива, перпендикулярные этой оси. -
Понятие главной оси и элемента массива обобщаются для случая
m
главных осей: массив рассматривается как блок данных (frame
) размерностиm
, содержащий ячейки (cell
) размерностиn
. Функциюf
можно модифицировать так, чтобы она применялась ко всем ячейкам размерностиn
, оператором рангаf@n
. - Отображаемые файлы — это файлы, представленные как массивы. За счет того, что в физическую память загружаются только используемые части файлов, этот механизм позволяет работать с большими объемами файлов.
- Механизм зависимостей между переменными позволяет запоминать связи между ними и при изменении некоторой переменной автоматически пересчитывать все зависимые от нее. В частности, это позволяет легко реализовать приложение-электронную таблицу.
- Механизм обратной связи (callback) реализует обработку асинхронных событий посредством автоматического запуска ассоциированных с ними функций.
- Контексты позволяют отдельным пакетам и инструментам разделять свои пространства имен.
В наши дни A+ находится в свободном доступе, хотя и не является активно используемым языком.
Элементы синтаксиса:
Комментарий до конца строки | ⍝ |
---|---|
Регулярное выражение идентификатора переменной | [a-zA-Z][_a-zA-Z0-9]* |
Присваивание значения переменной | varname ← value |
Блок | { ... } |
Определение функции | f{arg1; ...; argN} : fBody |
Вызов функции | f{arg1; ...; argN} |
Последовательность | ; |
Логотип A+
Схема клавиатуры для работы с A+
Комментарии
]]>blog comments powered by Disqus
]]>