]]> ]]>
Править | Обсудить | История

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+

Схема клавиатуры для работы с A+
Схема клавиатуры для работы с A+

Примеры:

Hello, World!:

Пример для версий A+ 4.18

Строковые литералы можно заключать как в одинарные, так и в двойные кавычки.

"Hello, World!"
'Hello, World!'

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам