A+

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
A+
Парадигма Масивове програмуванняd
Дата появи 1988
Творці Arthur Whitneyd
Розробник Morgan Stanley
Система типізації динамічна типізація[d] і строга типізація
Ліцензія GNU GPL
Вебсайт aplusdev.org

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+

Посилання[ред. | ред. код]