APL (язык программирования)

APL
Изображение логотипа
Класс языка векторный, функциональный, структурный, модульный
Появился в 1964
Автор Кеннет Айверсон
Разработчик Кеннет Айверсон, IBM и Лоуренс Брид[вд]
Система типов динамическая
Основные реализации IBM APL2, Dyalog APL, APL2000, Sharp APL, APLX
Диалекты A+, Dyalog APL, APLNext
Испытал влияние математическая нотация
Повлиял на J,[1] K,[2] Mathematica,[3] MATLAB,[3] Nial[англ.],[4] PPL, Q
Логотип Викисклада Медиафайлы на Викискладе

APL (назван по книге A Programming Language)[5] — язык программирования, оптимизированный для работы с массивами, предшественник современных научных вычислительных сред, таких как MATLAB, использует функциональную парадигму программирования.

Клавиатура APL со специальными символами

В своей области применения (физика, математическое моделирование, обработка данных) APL — мощный язык, обладающий кратким и выразительным синтаксисом. Например:

N ← 4 5 6 7 Присвоить массиву N значения 4 5 6 7.
N+4 Увеличить значения массива N на 4, и напечатать его. Результат для предыдущего массива будет: 8 9 10 11.
+/N Напечатать сумму элементов массива N, то есть 22.

Большое количество специальных символов в синтаксисе APL, функциональный стиль и краткие нотации (большинство операций обозначается 1—2 символами специального алфавита) делает программы на APL крайне непонятными для непосвящённых. При этом некоторые знаки — ключевые слова языка вышли за пределы собственно APL и употребляются в научных текстах по математике и информатике (см. Символы Айверсона, скобка Айверсона).

История

Язык APL был разработан Кеном Айверсоном, преподававшим тогда в Гарвардском университете, в качестве системы обозначений для описания вычислений. В 1957 вышла его книга «A Program Language»[5], в которой эта нотация была описана. В 1960 году Айверсон продолжал работу над APL в IBM. Здесь этот язык использовался для описания машинной архитектуры.[6][7]

Первой попыткой реализации APL был написанный для IBM 7090 на Фортране в 1965 году интерпретатор IVSYS.[8] Однако, в нём ещё не использовался набор APL-символов, они заменялись ключевыми словами на английском языке. Годом позже этот интерпретатор был портирован на IBM/360. В том же 1966 году APL впервые реализован с использованием специализированного терминала на базе IBM 1050[англ.] и печатающего устройства с соответствующей сменной печатной головкой. В 1967 году IBM выпускает на рынок реализацию APL для IBM 1130[англ.], известную как APL\1130.[9][10]. Вследствие краткости выражений на APL у этого языка появились немногочисленные, но преданные сторонники, которые гордились тем, что легко разрабатывали сложные программы.

APL был микропрограммно реализован для портативного компьютера IBM 5100, выпускавшегося в 1973—1982 годах, который иногда называют «первым персональным компьютером». На работу с APL был ориентирован и один из первых ноутбуков — выпущенный в 1985 году Ampere WS-1[серб.][11].

В ВЦ АН СССР в начале 80-х годов было разработано оригинальное программное обеспечение для работы с APL на мини-ЭВМ серии СМ-4, СМ-1420 и микро-ЭВМ Электроника-60, ДВК, Электроника-85. Разработчик — А. В. Кондрашев. В состав комплекса входили: программный интерпретатор языка APL; микросхемы знакогенератора для поддержки APL-символов на наиболее популярных алфавитно-цифровых мониторах; версия интерпретатора на плате ППЗУ для Электроники-60 и ДВК. Поддерживалась работа с графическими мониторами и графопостроителями, а также использование дисков и принтеров центральной мини-ЭВМ. Наряду с традиционным использованием APL-систем в системах анализа данных, в СССР также разрабатывались программно-аппаратные комплексы для использования в промышленности и атомной энергетике.

В настоящее время язык APL поддерживается практически на всех аппаратных платформах от рабочих станций до наладонных компьютеров. По языку ежегодно проводятся конференции в рамках Association for Computer Machinery (ACM). Дальнейшим развитием APL являются языки J и K.

Реализации APL

Открытые

Коммерческие

Примечания

  1. A Bibliography of APL and J. Jsoftware.com. Дата обращения: 3 февраля 2010. Архивировано 23 августа 2011 года.
  2. Kx Systems - An Interview with Arthur Whitney - Jan 2004. Kx.com (4 января 2004). Дата обращения: 3 февраля 2010. Архивировано 23 августа 2011 года.
  3. 1 2 The Growth of MatLab - Cleve Moler (PDF). Дата обращения: 3 февраля 2010. Архивировано 23 августа 2011 года.
  4. About Q'Nial. Nial.com. Дата обращения: 3 февраля 2010. Архивировано 23 августа 2011 года.
  5. 1 2 Архивированная копия. Дата обращения: 30 октября 2010. Архивировано 4 июня 2009 года.Архивированная копия. Дата обращения: 30 октября 2010. Архивировано из оригинала 4 июня 2009 года.
  6. Programming notation in systems design K.E. Iverson, IBM Systems Journal, 1963. Дата обращения: 30 октября 2010. Архивировано 24 декабря 2014 года.
  7. A formal description of SYSTEM/360 A.D. Falkoff, K.E. Iverson and E.H. Sussenguth, IBM Systems Journal 3.3, 1964. Дата обращения: 30 октября 2010. Архивировано 24 декабря 2014 года.
  8. Abrams, Philip S., An interpreter for «Iverson notation» Архивная копия от 16 декабря 2010 на Wayback Machine, Technical Report: CS-TR-66-47, Department of Computer Science, Stanford University, August 1966.
  9. Larry Breed[англ.]. How We Got to APL\1130 (неопр.) // Vector (British APL Association). — 2006. — August (т. 22, № 3). Архивировано 12 мая 2008 года.
  10. APL\1130 Manual Архивная копия от 21 февраля 2011 на Wayback Machine, May 1969
  11. Младшие братья. История самых первых портативных компьютеров. Дата обращения: 30 октября 2010. Архивировано 13 октября 2010 года.

Литература

  • Магариу Н. А. Язык программирования АПЛ. — М.: «Радио и связь», 1983. — 96 с.
  • ISO standard 13751 Programming Language APL, Extended

Ссылки