A+

Материал из Циклопедии
Перейти к навигации Перейти к поиску
A+
Логотип А+.jpeg
Тип исполнения:

Матричный

Появился в:

1988

Автор(ы):

Артур Уитни

Релиз:

4.18

Типизация данных:

строгая, динамическая

Испытал влияние:

APL

Повлиял на:

K

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+ Примеры: Hello, World!: Пример для версий A+ 4.18 Строковые литералы можно заключать как в одинарные, так и в двойные кавычки.

См. также[править]

Ссылки[править]

 
Используемые
в разработке

Ада • A+ • APL • Atlast Forth • AWL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • BeanShell • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • DuAL • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • IBM PL/S • Icon • Iridium • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • Pixilang • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Qi • Ruby • Scala • Scheme • Seed7 • Smalltalk • SQL • PL/SQL • Tcl • TouchDesigner • Vala • Visual Basic (.NET) • X-Robot

Академические

Agda • Clean • Curry • Idris • Лого • ML • Оберон • Planning C • РЕФАЛ • Симула •

IEC 61131-3

Instruction List • ST • FBD • Ladder Diagram (LD) • SFC

Прочие

Алгол • Алгол 68 • Модула-2 • Миранда • Hope • НОРМИН • Санда

Эзотерические

HQ9+/HQ9++ • INTERCAL • Brainfuck • Befunge • Malbolge • Piet • Spoon • Unlambda • Whitespace • FALSE • LOLCODE • Глагол

Визуальные

G (LabVIEW) • Microsoft VPL • Sikuli • VisSim • Алиса • ДРАКОН • Скретч

Прочее

Динамические • Для создания компьютерных игр • Компилируемые • С ключевыми словами не на английском языке • С C-style синтаксисом • Синтаксис • Системное программное обеспечение • YoptaScript

Категория Языки программирования