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# Clarion Clojure ColdFusion Common Lisp D dBase Delphi DuAL Eiffel Erlang Euphoria F# Форт Фортран Gambas Go Groovy HAL/S Haskell IBM PL/S Icon IridiumJava 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

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