APL (язык программирования)
![]() | |
Парадигма | Массив , функциональный , структурированный , модульный |
---|---|
Разработано | Кеннет Э. Айверсон |
Разработчик | Ларри Брид , Дик Лэтвелл , Роджер Мур и другие. |
Впервые появился | 27 ноября 1966 г [1] |
Стабильная версия | ИСО/МЭК 13751:2001
/ 1 февраля 2001 г |
Дисциплина набора текста | Динамический |
Платформа | Кросс-платформа |
Лицензия | Собственный , с открытым исходным кодом |
Веб-сайт | приложениевики |
Основные реализации | |
| |
Под влиянием | |
Математические обозначения | |
Под влиянием | |
APL (назван в честь книги «Язык программирования» ) [3] — язык программирования , разработанный в 1960-х годах Кеннетом Э. Айверсоном . Его центральным типом данных является многомерный массив . Он использует большой набор специальных графических символов. [4] для представления большинства функций и операторов, что приводит к очень краткому коду. Это оказало важное влияние на развитие концептуального моделирования, электронных таблиц , функционального программирования . [5] и пакеты компьютерной математики. [6] Он также вдохновил несколько других языков программирования. [7] [8]
История [ править ]
Математические обозначения [ править ]
для Математическая запись управления массивами была разработана Кеннетом Э. Айверсоном , начиная с 1957 года в Гарвардском университете . В 1960 году он начал работать в IBM разработал эту систему обозначений , где вместе с Адином Фалькоффом и опубликовал ее в своей книге «Язык программирования» в 1962 году. [3] В предисловии излагается его предпосылка:
Прикладная математика в основном занимается разработкой и анализом явных процедур вычисления точных или приближенных значений различных функций. Такие явные процедуры называются алгоритмами или программами . Поскольку эффективная нотация описания программ имеет значительную синтаксическую структуру, ее называют языком программирования .
Эта нотация использовалась внутри IBM для кратких исследовательских отчетов о компьютерных системах, таких как Burroughs B5000 и его стековый механизм, когда стековые машины по сравнению с регистровыми машинами IBM оценивала для будущих компьютеров.
Айверсон также использовал свои обозначения в черновике главы «Язык программирования» , написанной для книги », которую он писал вместе с Фредом Бруксом , «Автоматическая обработка данных которая должна была быть опубликована в 1963 году. [9] [10]
В 1979 году Айверсон получил премию Тьюринга за работу над APL. [11]
языка компьютерного Разработка программирования
Еще в 1962 году первая попытка использовать эту нотацию для описания полной компьютерной системы произошла после того, как Фалькофф обсудил с Уильямом К. Картером свою работу по стандартизации набора команд для машин, которые позже стали семейством IBM System/360 .
В 1963 году Герберт Хеллерман, работавший в Исследовательском институте систем IBM, реализовал часть системы обозначений на компьютере IBM 1620 , и она использовалась студентами в специальном школьном курсе по вычислению трансцендентных функций путем суммирования рядов. Студенты тестировали свой код в лаборатории Хеллермана. Такая реализация части обозначений получила название Personalized Array Translator (PAT). [12]
В 1963 году Фалькофф, Айверсон и Эдвард Х. Сассенгут-младший , работавшие в IBM, использовали эту нотацию для формального описания архитектуры и функциональности машин серии IBM System/360 , в результате чего была опубликована статья в IBM Systems Journal в 1963 году. 1964. После того, как это было опубликовано, команда обратила свое внимание на реализацию нотации в компьютерной системе. Одной из причин такого фокуса внедрения был интерес Джона Л. Лоуренса, у которого были новые обязанности в Science Research Associates , образовательной компании, купленной IBM в 1964 году. Лоуренс попросил Айверсона и его группу помочь использовать язык в качестве инструмента для разрабатывать и использовать компьютеры в образовании. [13]
После того, как Лоуренс М. Брид и Филип С. Абрамс из Стэнфордского университета присоединились к команде IBM Research, они продолжили свою предыдущую работу над реализацией, запрограммированной на FORTRAN IV для части обозначений, которая была сделана для компьютера IBM 7090 , работающего на IBSYS Операционная система . Эта работа была завершена в конце 1965 года и позже получила название IVSYS (от системы Айверсона). Основа этой реализации была подробно описана Абрамсом в техническом отчете Стэнфордского университета «Интерпретатор нотации Айверсона» в 1966 году. Академический аспект этого формально контролировался Никлаусом Виртом . [14] Как и предыдущая система PAT Хеллермана, эта реализация не включала набор символов APL, но использовала специальные английские зарезервированные слова для функций и операторов. Позже система была адаптирована для системы разделения времени , а к ноябрю 1966 года она была перепрограммирована для компьютера IBM System / 360 Model 50, работающего в режиме разделения времени, и использовалась внутри IBM. [15]
Аппаратное обеспечение [ править ]


Ключевым достижением в области эффективного использования APL, до широкого использования терминалов с электронно-лучевой трубкой ( ЭЛТ ), была разработка специального сменного печатного элемента для пишущей машинки IBM Selectric со всеми специальными символами APL на нем. Он использовался на терминальных рабочих станциях для печати на бумаге с использованием пишущей машинки Selectric и механизма печатающих элементов, таких как терминал IBM 1050 и IBM 2741 . Колпачки клавиш можно было разместить поверх обычных клавиш, чтобы показать, какие символы APL будут введены и напечатаны при нажатии этой клавиши. Впервые программист мог вводить и видеть правильные символы APL, используемые в обозначениях Айверсона, и не быть вынужденным использовать неудобные английские ключевые слова для их представления. У Фалькоффа и Айверсона были специальные печатные элементы APL Selectric, 987 и 988, разработанные в конце 1964 года, хотя компьютерной системы APL для их использования не было. [16] Айверсон назвал Фалькоффа источником вдохновения для идеи использования элемента набора текста IBM Selectric для набора символов APL. [17]
Многие символы APL, даже с символами APL на печатном элементе Selectric, по-прежнему приходилось вводить путем перечеркивания двух существующих символов элемента. Примером может служить символ повышения класса , который нужно было составить из дельты (shift-H) и штриха Шеффера (shift-M). Это было необходимо, поскольку набор символов APL был намного больше, чем 88 символов, разрешенных для элемента ввода, даже когда буквы были ограничены прописными буквами (заглавными).
Коммерческая доступность [ править ]
Первый интерактивный вход в систему APL и создание рабочего пространства APL были осуществлены Ларри Бридом в 1966 году с использованием терминала IBM 1050 в лаборатории IBM Mohansic Labs недалеко от исследовательского центра Томаса Дж. Уотсона , дома APL, в Йорктаун-Хайтс , штат Нью-Йорк. [16]
IBM несла главную ответственность за вывод APL на рынок. Первая общедоступная версия APL была выпущена в 1968 году для IBM 1130 . IBM предоставила APL\1130 бесплатно, но без каких-либо обязательств или поддержки. [18] [19] Он работал всего в 8 тысячах 16-битных слов памяти и использовал выделенный жесткий диск емкостью 1 мегабайт.
APL закрепилась в системах разделения времени для мэйнфреймов с конца 1960-х по начало 1980-х годов, отчасти потому, что она поддерживала несколько пользователей в системах с более низкими характеристиками, не имевших оборудования для динамической трансляции адресов . [20] Дополнительные улучшения производительности для некоторых IBM System / 370 мэйнфреймов включали микрокод APL Assist процессора , в котором некоторая поддержка выполнения APL была включена в прошивку , в отличие от полной реализации программного обеспечения более высокого уровня. Несколько позже, когда в середине-конце 1980-х годов, наконец, стало доступно аппаратное обеспечение с соответствующей производительностью, многие пользователи перенесли свои приложения в среду персональных компьютеров.
Ранние интерпретаторы IBM APL для аппаратного обеспечения IBM 360 и IBM 370 реализовали собственное многопользовательское управление вместо того, чтобы полагаться на службы хоста, таким образом, они представляли собой собственные системы разделения времени. Впервые представленный для использования в IBM в 1966 году, APL\360 [21] [22] [23] система представляла собой многопользовательский интерпретатор. Возможность программного взаимодействия с операционной системой для получения информации и установки системных переменных интерпретатора осуществлялась с помощью специальных привилегированных функций «Двутаврового луча», используя как монадические , так и диадические операции. [24]
В 1973 году IBM выпустила APL.SV , который был продолжением того же продукта, но предлагал общие переменные как средство доступа к средствам вне системы APL, таким как файлы операционной системы. В середине 1970-х годов интерпретатор мэйнфрейма IBM был даже адаптирован для использования на настольном компьютере IBM 5100 , который имел небольшой ЭЛТ и клавиатуру APL, тогда как большинство других небольших компьютеров того времени предлагали только BASIC . В 1980-х годах VSAPL программный продукт широко использовался пользователями Conversational Monitor System (CMS), Time Sharing Option (TSO), VSPC , MUSIC/SP и CICS .
В 1973–1974 годах Патрик Э. Хагерти руководил внедрением интерпретатора APL Университета Мэриленда для линейки 1100 Sperry UNIVAC серии 1100/2200 . мэйнфреймов [25] В 1974 году студенту Алану Стеббенсу было поручено реализовать внутреннюю функцию. [26] Xerox APL был доступен с июня 1975 года для мейнфреймов Xerox 560 и Sigma 6, 7 и 9, работающих под управлением CP-V , а также для Honeywell CP-6 . [27]
В 1960-х и 1970-х годах возникло несколько фирм с разделением времени, которые продавали услуги APL, используя модифицированные версии IBM APL\360. [23] устный переводчик. В Северной Америке наиболее известными из них были IP Sharp Associates , Scientific Time Sharing Corporation (STSC), Time Sharing Resources (TSR) и The Computer Company (TCC). CompuServe также вышла на рынок в 1978 году с интерпретатором APL, основанным на модифицированной версии Digital Equipment Corp и Carnegie Mellon, который работал на 36-битных машинах DEC KI и KL. APL CompuServe был доступен как для коммерческого рынка, так и для службы информации для потребителей. С появлением к середине 1980-х годов сначала менее дорогих мейнфреймов, таких как IBM 4300 , а затем и персональных компьютеров, индустрия разделения времени практически исчезла.
Sharp APL был доступен от IP Sharp Associates, сначала как служба разделения времени в 1960-х годах, а затем как программный продукт, начиная примерно с 1979 года. Sharp APL представлял собой усовершенствованную реализацию APL со многими языковыми расширениями, такими как пакеты (возможность помещать один или больше объектов в одну переменную), файловую систему, вложенные массивы и общие переменные .
Интерпретаторы APL были доступны и у других производителей мэйнфреймов и мини-компьютеров, в частности, Burroughs , Control Data Corporation (CDC), Data General , Digital Equipment Corporation (DEC), Harris , Hewlett-Packard (HP), Siemens , Xerox и других.
Гарт Фостер из Сиракузского университета спонсировал регулярные встречи сообщества разработчиков APL в конференц-центре Минноубрук в Сиракьюс в Блу-Маунтин-Лейк, Нью-Йорк . В последующие годы Юджин Макдоннелл организовал подобные встречи на конференц-площадке Асиломар недалеко от Монтерея , Калифорния , и в Дюнах Пахаро недалеко от Уотсонвилля , Калифорния. Группа особых интересов SIGAPL Ассоциации вычислительной техники продолжает поддерживать сообщество APL. [28]
Микрокомпьютеры [ править ]
На микрокомпьютерах, которые стали доступны с середины 1970-х годов, BASIC стал доминирующим языком программирования. [29] Тем не менее, некоторые микрокомпьютеры вместо этого использовали APL - первым из них был Intel 8008 на базе MCM/70 , выпущенный в 1974 году. [30] [31] и который в основном использовался в образовании. [32] Другой машиной того времени был компьютер семейства VideoBrain , выпущенный в 1977 году, который поставлялся со своим диалектом APL под названием APL/S. [33]
Commodore SuperPET , представленный в 1981 году, включал в себя интерпретатор APL, разработанный Университетом Ватерлоо . [34]
В 1976 году Билл Гейтс заявил в своем « Открытом письме любителям» , что корпорация Microsoft внедряла APL для Intel 8080 и Motorola 6800, но у нее «очень мало стимулов сделать [это] доступным для любителей» из-за пиратства в области программного обеспечения . [35] Он так и не был выпущен.
APL2 [ править ]
Начиная с начала 1980-х годов, разработка IBM APL под руководством Джима Брауна реализовала новую версию языка APL, которая в качестве основного усовершенствования содержала концепцию вложенных массивов , где массив может содержать другие массивы, и новые возможности языка, которые облегчил интеграцию вложенных массивов в рабочий процесс программы. Кен Айверсон, больше не контролирующий разработку языка APL, покинул IBM и присоединился к IP Sharp Associates , где одним из его основных вкладов было руководство эволюцией Sharp APL, чтобы она больше соответствовала его видению. [36] [37] [38] APL2 был впервые выпущен для CMS и TSO в 1984 году. [39] Версия APL2 Workstation (Windows, OS/2 , AIX , Linux и Solaris ) последовала позже. [40] [41]
Поскольку другие поставщики были заняты разработкой интерпретаторов APL для нового оборудования, особенно Unix на базе для микрокомпьютеров , APL2 почти всегда был стандартом, выбираемым для разработки новых интерпретаторов APL. Даже сегодня большинство поставщиков APL или их пользователей называют совместимость APL2 преимуществом своих продуктов. [42] [43] IBM ссылается на свое использование для решения проблем, проектирования систем, прототипирования, инженерных и научных вычислений, экспертных систем, [44] для преподавания математики и других предметов, визуализации и доступа к базам данных. [45]
Современные реализации [ править ]
Различные реализации APL от APLX, Dyalog и др. включают расширения для объектно-ориентированного программирования , поддержку .NET , примитивы преобразования XML-массивов, построение графиков, интерфейсы операционной системы и выражения лямбда-исчисления . Бесплатные версии включают GNU APL для Linux и NARS2000 для Windows (который работает в Linux под Wine). Оба они являются довольно полными версиями APL2 с различными языковыми расширениями.
Производные языки [ править ]
APL лег в основу следующих языков или повлиял на них: [ нужна ссылка ]
- A и A+ , альтернативный APL, последний с графическими расширениями.
- FP — функциональный язык программирования.
- Ivy — интерпретатор APL-подобного языка, разработанный Робом Пайком и использующий в качестве входных данных ASCII . [46]
- J , который также был разработан Айверсоном и который использует ASCII с орграфами вместо специальных символов. [7]
- K — собственный вариант APL, разработанный Артуром Уитни. [8]
- MATLAB , инструмент численных вычислений. [6]
- Nial — язык программирования массивов высокого уровня с нотацией функционального программирования.
- Полиморфный язык программирования — интерактивный расширяемый язык со схожим базовым языком.
- S — язык статистического программирования (обычно сейчас встречающийся в версии с открытым исходным кодом, известной как R ).
- Щелчок ! , язык программирования на основе блоков с низким кодом, созданный как расширенная реализация Scratch.
- Speakeasy — интерактивная среда числовых вычислений.
- Wolfram Language — язык программирования Mathematica . [47]
Языковые характеристики [ править ]
Набор символов [ править ]
APL критиковали и хвалили за выбор уникального нестандартного набора символов. В 1960-х и 1970-х годах лишь немногие терминальные устройства или даже дисплеи могли воспроизводить набор символов APL. В самых популярных из них использовался механизм печати IBM Selectric со специальным элементом типа APL. Одним из первых линейных терминалов APL (работа только в линейном режиме, а не в полноэкранном режиме) был Texas Instruments TI Model 745 ( ок. 1977 г. ) с полным набором символов APL. [48] который имел полу- и полнодуплексный режимы связи для взаимодействия со службой разделения времени APL или удаленным мэйнфреймом для выполнения удаленного компьютерного задания, называемого RJE .
Со временем, благодаря повсеместному использованию высококачественных графических дисплеев, устройств печати и поддержке Unicode , проблема символьных шрифтов APL была в значительной степени устранена. Однако для ввода символов APL необходимо использовать редакторы методов ввода , раскладки клавиатуры, виртуальные/экранные наборы символов APL, [49] [50] или простые печатные карточки с клавиатурой, которые могут расстроить новичков, привыкших к другим языкам программирования. [51] [52] [53] Исследование, в котором приняли участие новички, не имеющие опыта работы с другими языками программирования, с участием старшеклассников показало, что ввод и использование символов APL не мешает ученикам каким-либо измеримым образом. [54]
В защиту APL необходимо отметить, что для ввода требуется меньше символов, а раскладки клавиатуры со временем запоминаются. Сегодня также производятся и используются специальные клавиатуры APL, а также свободно загружаемые шрифты для таких операционных систем, как Microsoft Windows. [55] Заявленный прирост производительности предполагает, что человек тратит достаточно времени на работу с языком, чтобы было полезно запомнить символы, их семантику и раскладки клавиатуры, не говоря уже о значительном количестве идиом для общих задач. [ нужна ссылка ]
Дизайн [ править ]
В отличие от традиционно структурированных языков программирования, код APL обычно структурирован как цепочки монадических или диадических функций и операторов. [56] работа с массивами . [57] В APL имеется множество нестандартных примитивов (функций и операторов), которые обозначаются одним символом или комбинацией нескольких символов. Все примитивы имеют одинаковый приоритет и всегда располагаются справа. Таким образом, APL читается или лучше всего понимается справа налево .
Ранние реализации APL ( около 1970 года или около того) не имели структур управления циклом программирования , таких как do
или while
петли и if-then-else
конструкции. Вместо этого они использовали операции с массивами, а в использовании конструкций структурированного программирования часто не было необходимости, поскольку операцию можно было выполнить над полным массивом за один оператор. Например, iota
функция ( ι
цикла for ) может заменить итерацию : ιN при применении к скалярному положительному целому числу дает одномерный массив (вектор), 1 2 3 ... N. Более поздние реализации APL обычно включают комплексные структуры управления, так что структура данных и поток управления программой может быть четко и ясно разделен.
Среда APL называется рабочей областью . В рабочей области пользователь может определять программы и данные, т. е. значения данных существуют также вне программ, и пользователь также может манипулировать данными без необходимости определения программы. [58] В приведенных ниже примерах интерпретатор APL сначала вводит шесть пробелов, прежде чем ожидать ввода пользователя. Его собственный вывод начинается в первом столбце.
n ← 4 5 6 7
|
Присваивает вектор значений {4 5 6 7} переменной n , операция создания массива. Эквивалентным, но более кратким выражением APL было бы n ← 3 + ⍳4 . Несколько значений хранятся в массиве n , операция, выполняемая без формальных циклов или языка потока управления .
|
n
4 5 6 7
|
Отобразить содержимое n , в настоящее время массив или вектор.
|
n+4
8 9 10 11
|
4 теперь добавляется ко всем элементам вектора. n , создавая 4-элементный вектор {8 9 10 11}. Как указано выше, интерпретатор APL отображает результат, поскольку значение выражения не было присвоено переменной (с помощью ← ).
|
+/n
22
|
APL отображает сумму компонентов вектора n , то есть, 22 (= 4 + 5 + 6 + 7) используя очень компактную запись: читайте +/ как «плюс, более...», а небольшое изменение будет «умножить, более...».
|
m ← +/3+⍳4
m
22
|
Эти операции можно объединить в один оператор, помня, что APL вычисляет выражения справа налево: сначала ⍳4 создает массив, [1,2,3,4] , затем к каждому компоненту добавляется 3, которые суммируются и результат сохраняется в переменной m , наконец отображается. В обычной математической записи это эквивалентно: . Напомним, что математические выражения не читаются и не оцениваются справа налево.
|
Пользователь может сохранить рабочую область со всеми значениями, программами и статусом выполнения.
APL использует набор символов, отличных от ASCII , которые являются расширением традиционных арифметических и алгебраических обозначений. Наличие односимвольных имен для одной инструкции и векторных функций нескольких данных ( SIMD ) - это один из способов, с помощью которого APL позволяет компактно формулировать алгоритмы преобразования данных, такие как вычисление « Игры жизни» Конвея, в одной строке кода. [59] Почти во всех версиях APL теоретически возможно выразить любую вычислимую функцию в одном выражении, то есть в одной строке кода. [ нужна ссылка ]
Из-за необычного набора символов многие программисты используют специальные клавиатуры с клавишами APL для написания кода APL. [60] Хотя существуют различные способы написания кода APL, используя только символы ASCII, [61] на практике это почти никогда не делается. (Можно подумать, что это подтверждает тезис Айверсона об обозначениях как инструменте мышления . [62] ) Большинство, если не все современные реализации используют стандартные раскладки клавиатуры со специальными сопоставлениями или редакторами методов ввода для доступа к символам, отличным от ASCII. Исторически сложилось так, что шрифт APL был отличительным: с прописными буквами, курсивом, вертикальными цифрами и символами. Большинство поставщиков продолжают отображать набор символов APL в специальном шрифте.
Сторонники АПЛ [ ВОЗ? ] утверждают, что примеры так называемого кода, предназначенного только для записи (плохо написанного и почти непонятного кода), почти всегда являются примерами плохой практики программирования или ошибок новичков, которые могут произойти на любом языке. Сторонники также утверждают, что с APL они гораздо более продуктивны, чем с более традиционными компьютерными языками, и что работающее программное обеспечение может быть реализовано за гораздо меньшее время и с гораздо меньшим количеством программистов, чем при использовании других технологий. [ нужна ссылка ]
Они также могут утверждать, что, поскольку APL компактен и краток, он хорошо подходит для крупномасштабной разработки программного обеспечения и его сложности, поскольку количество строк кода может быть значительно уменьшено. Многие сторонники и практики APL также считают стандартные языки программирования, такие как COBOL и Java , сравнительно утомительными. APL часто встречается там, где важно время выхода на рынок, например, в торговых системах. [63] [64] [65] [66]
Терминология [ править ]
APL проводит четкое различие между функциями и операторами . [56] [67] Функции принимают массивы (переменные, константы или выражения) в качестве аргументов и возвращают массивы в качестве результатов. Операторы (аналогично функциям высшего порядка ) принимают функции или массивы в качестве аргументов и выводят связанные функции. Например, функция суммы получается путем применения оператора сокращения к функции сложения . Применяя тот же оператор сокращения к функции максимума (которая возвращает большее из двух чисел), выводится функция, которая возвращает наибольшее из группы (вектора) чисел. В языке J Айверсон заменил термины «глагол» на «функцию» и «наречие или союз» на «оператор» .
APL также идентифицирует те функции, встроенные в язык и представленные символом или фиксированной комбинацией символов, как примитивы . Большинство примитивов являются либо функциями, либо операторами. Кодирование APL — это в основном процесс написания непримитивных функций и (в некоторых версиях APL) операторов. Однако некоторые примитивы не считаются ни функциями, ни операторами, особенно присваиванием.
Некоторые слова, используемые в литературе по APL, имеют значения, отличные от значений как в математике, так и в общей информатике.
Срок | Описание |
---|---|
функция | операция или отображение, которая принимает ноль, один (правый) или два (левый и правый) аргументы, которые могут быть скалярами, массивами или более сложными структурами, и могут возвращать столь же сложный результат. Функция может быть: |
множество | объект со значением данных, имеющий ноль или более ортогональных измерений в порядке строк , в котором каждый элемент представляет собой примитивный скалярный элемент данных или другой массив. [69] |
ниладический | не принимая и не требуя никаких аргументов, недействителен [70] |
монадический | требующий только одного аргумента; справа для функции, слева для оператора, унарный [70] |
диадический | требующий как левого, так и правого аргумента, двоичный [70] |
двойственный или монадический |
возможность использования в монадическом или диадическом контексте, что позволяет исключить левый аргумент [ необходимо определение ] [68] |
оператор | операция или отображение, которое принимает одну (слева) или две (слева и справа) функцию или аргументы (операнды) со значениями массива и производит функцию. Оператор может быть: |
Синтаксис [ править ]
APL имеет явные представления функций, операторов и синтаксиса, обеспечивая тем самым основу для четкого и явного описания расширенных возможностей языка и инструментов для экспериментов с ними. [71]
Примеры [ править ]
Привет, мир [ править ]
Это отобразит « Привет, мир »:
'Hello, world'
Темой дизайна в APL является определение действий по умолчанию, которые в некоторых случаях могут привести к синтаксическим ошибкам в большинстве других языков программирования.
Выше отображается строковая константа «Hello, world», поскольку отображение является действием по умолчанию для любого выражения, для которого действие не указано явно (например, присвоение, параметр функции).
Возведение в степень [ править ]
Другим примером этой темы является то, что возведение в степень в APL записывается как 2*3
, что означает возведение 2 в степень 3 (это будет записано как 2^3
или 2**3
в некоторых языках или относится к вызову функции, например pow(2, 3);
в других). Многие языки используют *
для обозначения умножения, как в 2*3
, но APL предпочитает использовать 2×3
. Однако, если база не указана (как в случае с оператором *3
в APL или ^3
в других языках), в большинстве языков программирования это можно рассматривать как синтаксическую ошибку. APL, однако, предполагает, что отсутствующее основание является константой натурального логарифма e , и интерпретирует *3
как 2.71828*3
.
Простая статистика [ править ]
Предположим, что X
представляет собой массив чисел. Затем (+/X)÷⍴X
дает свое среднее значение. Читая справа налево , ⍴X
дает количество элементов в X, и поскольку ÷
является двоичным оператором, также требуется термин слева от него. Оно заключено в круглые скобки, так как в противном случае было бы взято X (так что суммирование было бы X÷⍴X
- каждый элемент X, разделенный на количество элементов в X), и +/X
дает сумму элементов X. Основываясь на этом, следующее выражение вычисляет стандартное отклонение :
((+/((X - (+/X)÷⍴X)*2))÷⍴X)*0.5
Естественно, можно было бы определить это выражение как функцию для многократного использования, а не переписывать его каждый раз. Кроме того, поскольку присваивание является оператором, оно может появляться внутри выражения, поэтому следующее будет помещать подходящие значения в T, AV и SD:
SD←((+/((X - AV←(T←+/X)÷⍴X)*2))÷⍴X)*0.5
Выберите 6 номеров лотереи [ править ]
Следующее выражение немедленного режима генерирует типичный набор «Выбери 6» номеров лотереи : шесть псевдослучайных целых чисел в диапазоне от 1 до 40, гарантированно неповторяющихся , и отображает их, отсортированные в порядке возрастания:
x[⍋x←6?40]
Вкратце, приведенное выше делает многое, хотя новичку APLer может показаться сложным . Он сочетает в себе следующие функции APL (также называемые примитивами [72] и глифы [73] ):
- Первой выполняется (APL выполняется слева направо) — это двоичная функция.
?
(названныйdeal
когда диадический), который возвращает вектор, состоящий из выбранного числа (левый аргумент: 6 в данном случае) случайных целых чисел в диапазоне от 1 до заданного максимума (правый аргумент: 40 в данном случае), который, если указанный максимум ≥ длины вектора, гарантированно неповторяющийся; таким образом сгенерируйте/создайте 6 случайных целых чисел в диапазоне от 1 до 40. [74] - Затем этому вектору присваивается (
←
) к переменнойx
, потому что это понадобится позже. - Затем этот вектор сортируется в порядке возрастания с помощью монадического алгоритма.
⍋
функция, правым аргументом которой является все, что находится справа от нее, вплоть до следующей несбалансированной закрывающей скобки или закрывающей круглой скобки. Результат⍋
— это индексы, которые будут располагать его аргумент в порядке возрастания. - Затем вывод
⍋
используется для индексации переменнойx
, который мы сохранили ранее для этой цели, тем самым выбрав его элементы в возрастающей последовательности.
Поскольку слева от самого левого x нет функции, сообщающей APL, что делать с результатом, он просто выводит его на дисплей (в одной строке, разделенной пробелами), не требуя для этого каких-либо явных инструкций.
?
также имеет монадический эквивалент, называемый roll
, который просто возвращает одно случайное целое число от 1 до единственного операнда [справа от него] включительно. Таким образом, программа ролевой игры может использовать выражение ?20
бросить двадцатигранный кубик.
Простые числа [ править ]
Следующее выражение находит все простые числа от 1 до R. Сложность вычислений как во времени, так и в пространстве равна (в обозначении Big O ).
(~R∊R∘.×R)/R←1↓⍳R
Выполнение справа налево означает:
- Йота
⍳
создает вектор, содержащий целые числа из1
кR
(еслиR= 6
в начале программы,⍳R
является1 2 3 4 5 6
) - Отбросьте первый элемент этого вектора (
↓
функция), т.е.1
. Так1↓⍳R
является2 3 4 5 6
- Набор
R
в новый вектор (←
, примитив присваивания ), т.е.2 3 4 5 6
- The
/
Оператор репликации является двоичным (двоичным), и интерпретатор сначала оценивает его левый аргумент (полностью в скобках): - Создать внешний продукт
R
умноженный наR
, т. е. матрица, представляющая собой таблицу умножения R на R (°.×
оператор), т.е.
4 | 6 | 8 | 10 | 12 |
6 | 9 | 12 | 15 | 18 |
8 | 12 | 16 | 20 | 24 |
10 | 15 | 20 | 25 | 30 |
12 | 18 | 24 | 30 | 36 |
- Постройте вектор такой же длины, как
R
с1
в каждом месте, где соответствующее число вR
находится во внешней матрице продуктов (∈
, установите включение или элемент оператора или оператора Epsilon ), т. е.0 0 1 0 1
- Логически инвертировать ( не ) значения в векторе (заменить нули на единицы, а единицы на нули) (
∼
, логическое «нет» или оператор «Тильда» ), т.е.1 1 0 1 0
- Выберите элементы в
R
для которого соответствующий элемент1
(/
оператор репликации ), т.е.2 3 5
(Обратите внимание: предполагается, что начало координат APL равно 1, т. е. индексы начинаются с 1. APL можно настроить на использование 0 в качестве начала координат, так что ι6
является 0 1 2 3 4 5
, что удобно для некоторых расчетов.)
Сортировка [ править ]
Следующее выражение сортирует список слов, хранящийся в матрице X, по длине слова:
X[⍋X+.≠' ';]
Игра Жизни [ править ]
Следующая функция «жизнь», написанная на Dyalog APL, [75] [76] берет булеву матрицу и вычисляет новое поколение в соответствии с «Игрой жизни» Конвея . Он демонстрирует возможности APL по реализации сложного алгоритма с помощью очень небольшого количества кода, но для его понимания требуются некоторые глубокие знания APL (как это делает одна и та же программа во многих языках).
life ← {⊃1 ⍵ ∨.∧ 3 4 = +/ +⌿ ¯1 0 1 ∘.⊖ ¯1 0 1 ⌽¨ ⊂⍵}
Удаление HTML-тегов [ править ]
В следующем примере, также в Dyalog, первая строка присваивает переменной некоторый HTML-код. txt
а затем использует выражение APL для удаления всех тегов HTML:
txt←'<html><body><p>This is <em>emphasized</em> text.</p></body></html>'
{⍵ /⍨ ~{⍵∨≠\⍵}⍵∊'<>'} txt
This is emphasized text.
Именование [ править ]
APL получил свое название от инициалов книги Айверсона «Язык программирования» . [3] хотя в книге описывается математическая нотация Айверсона , а не реализованный язык программирования, описанный в этой статье. Имя используется только для реальных реализаций, начиная с APL\360 .
Адин Фалькофф придумал это название в 1966 году во время внедрения APL\360 в IBM :
Проходя мимо кабинета, в котором жили трое студентов, я услышал звуки происходящего спора. Я просунул голову в дверь, и Эрик спросил меня: «Разве не правда, что все знают, что используемая нами система обозначений называется APL?» Мне было жаль, что мне пришлось разочаровать его, признавшись, что я никогда не слышал, чтобы это называлось так. Откуда он взял, что это общеизвестно? И кто решил это так назвать? В самом деле, почему это нужно было как-то называть? Спустя некоторое время я услышал, как оно было названо. Когда в июне 1966 года начались работы по внедрению, началась и работа по документированию. Полагаю, когда им пришлось написать об «этом», Фалькофф и Айверсон поняли, что им придется дать «этому» имя. Вероятно, в то время было сделано много предложений, но я слышал только о двух. Группа SRA в Чикаго, которая разрабатывала учебные материалы с использованием этой записи, поддержала название «Mathlab». Это не прижилось. Другое предложение заключалось в том, чтобы назвать ее «Лучшая математика Айверсона», а затем позволить людям придумать подходящую аббревиатуру. Это было сочтено шуткой.
Затем однажды Адин Фалькофф вошел в офис Кена и написал на доске «Язык программирования», а под ним аббревиатуру «APL». Так оно и родилось. Примерно через неделю или около того Эрик Айверсон задал мне свой вопрос, в то время как это имя еще не продвинулось по тринадцати милям вверх по Таконик-Паркуэй от IBM Research до IBM Mohansic.
— Юджин МакДоннелл , [77]
APL иногда интерпретируется как язык программирования массивов или язык обработки массивов . [78] тем самым превратив APL в бэкроним .

Логотип [ править ]
Между вендорами APL всегда существовало сотрудничество, и с 1969 по 2010 год регулярно проводились совместные конференции. [79] На таких конференциях продукция часто раздавалась APL с мотивами APL или коллекцией логотипов поставщиков. Распространенными были яблоки (каламбур на сходстве произношения яблок и APL ) и фрагмент кода. ⍺*⎕
это символы, создаваемые классической раскладкой клавиатуры APL APL , когда вы удерживаете клавишу-модификатор и набираете «APL».
Несмотря на все эти усилия сообщества, универсального логотипа языка программирования, не зависящего от поставщика, так и не появилось. Поскольку популярные языки программирования все чаще имеют узнаваемые логотипы, Fortran получит свой логотип в 2020 году. [80] Британская ассоциация APL во второй половине 2021 года запустила кампанию по созданию такого логотипа для APL, и после выборов сообщества и нескольких раундов отзывов в мае 2022 года логотип был выбран. [81]
Используйте [ править ]
APL используется для многих целей, включая финансовые и страховые приложения. [82] искусственный интеллект , [83] [84] нейронные сети [85] и робототехника . [86] Утверждалось, что APL — это инструмент вычислений , а не язык программирования; [87] его символическая природа и возможности массивов сделали его популярным среди экспертов в предметной области и специалистов по обработке данных. [88] которые не имеют или не нуждаются в навыках программиста . [ нужна ссылка ]
APL хорошо подходит для манипулирования изображениями и компьютерной анимации , где графические преобразования могут быть закодированы как матричные умножения. Одна из первых компаний, занимающихся коммерческой компьютерной графикой, Digital Effects , выпустила графический продукт APL под названием Visions , который использовался для создания телевизионной рекламы и анимации для фильма «Трон» 1982 года . [89] В последнее время Штормграда симулятор лодки использует APL для реализации своей основной логики, взаимодействия с промежуточным программным обеспечением конвейера рендеринга и основной частью своего физического движка . [90]
Сегодня APL по-прежнему используется в широком спектре коммерческих и научных приложений, например управление инвестициями , [82] управление активами , [91] [ нужна ссылка ] здравоохранение , [92] и профилирование ДНК . [93] [94]
Известные реализации [ править ]
APL\360 [ править ]
Первой реализацией APL с использованием узнаваемых символов APL была APL\360, которая работала на IBM System/360 и была завершена в ноябре 1966 года. [1] хотя в то время использовался только внутри IBM. [39] В 1973 году его разработчики Ларри Брид , Дик Лэтвелл и Роджер Мур были удостоены премии Грейс Мюррей Хоппер от Ассоциации вычислительной техники (ACM). Она была вручена «за работу по разработке и внедрению APL\360, устанавливающую новые стандарты простоты, эффективности, надежности и времени отклика для интерактивных систем». [95] [96] [97]
В 1975 году микрокомпьютер IBM 5100 предлагал APL\360. [98] как один из двух встроенных интерпретируемых языков на основе ПЗУ для компьютера, оснащенный клавиатурой и дисплеем, поддерживающими все специальные символы, используемые в языке. [99]
Значительные разработки в APL\360 включали CMS/APL, в которой использовались виртуального хранилища возможности CMS , и APLSV, в котором были представлены общие переменные , системные переменные и системные функции. Впоследствии он был портирован на платформы IBM System/370 и VSPC до своего окончательного выпуска в 1983 году, после чего был заменен APL2. [39]
APL\1130 [ править ]
В 1968 году APL\1130 стала первой общедоступной системой APL, созданной IBM для IBM 1130 . [100] Оно стало самым популярным программным обеспечением библиотеки IBM Type-III , выпущенным IBM. [101]
APL*Plus и Sharp APL [ править ]
APL*Plus и Sharp APL — это версии APL\360 с добавленными бизнес-ориентированными расширениями, такими как форматирование данных и возможности хранения массивов APL во внешних файлах. Они были совместно разработаны двумя компаниями, в которых работали разные члены первоначальной команды разработчиков IBM APL\360. [102]
Этими двумя компаниями были IP Sharp Associates (IPSA), компания, оказывающая услуги APL\360, основанная в 1964 году Яном Шарпом, Роджером Муром и другими, и STSC , компания по предоставлению консультационных услуг и разделения времени, основанная в 1969 году Лоуренсом Бридом и другими. Вместе они разработали APL*Plus и после этого продолжили работать вместе, но разрабатывали APL отдельно как APL*Plus и Sharp APL. STSC портировала APL*Plus на многие платформы, при этом были созданы версии для VAX 11. [103] PC и UNIX, тогда как IPSA применила другой подход к появлению персональных компьютеров и сделала Sharp APL доступным на этой платформе с использованием дополнительного оборудования PC-XT/360 . В 1993 году для поддержки Sharp APL была создана компания Soliton Incorporated , которая превратила Sharp APL в SAX (Sharp APL для Unix). По состоянию на 2018 год [update], APL*Plus продолжается как APL2000 APL+Win.
В 1985 году Ян Шарп и Дэн Дайер из STSC совместно получили Премию Кеннета Э. Айверсона за выдающийся вклад в APL . [104]
APL2 [ править ]
APL2 представлял собой значительную повторную реализацию APL от IBM, которая разрабатывалась с 1971 года и впервые была выпущена в 1984 году. Он предоставляет множество дополнений к языку, наиболее заметным из которых является поддержка вложенных (непрямоугольных) массивов. [39] Вся команда продуктов и услуг APL2 была награждена премией Айверсона в 2007 году. [104]
В 2021 году IBM продала APL2 компании Log-On Software, которая разрабатывает и продает продукт как Log-On APL2 . [105]
АПЛГОЛ [ править ]
В 1972 году APLGOL был выпущен как экспериментальная версия APL, которая добавляла конструкции языка структурированного программирования в языковую среду. Были добавлены новые операторы для управления между операторами, выполнения условных операторов и структурирования операторов, а также операторы, поясняющие назначение алгоритма. [106] Он был реализован для Hewlett-Packard в 1977 году. [107]
Диалог APL [ править ]
Dyalog APL был впервые выпущен британской компанией Dyalog Ltd. [108] в 1983 году [109] и по состоянию на 2018 год [update], доступен для AIX , Linux (в том числе на платформах Raspberry Pi ), macOS и Microsoft Windows . Он основан на APL2 с расширениями для поддержки объектно-ориентированного программирования . [110] функциональное программирование , [111] и неявное программирование . [112] Лицензии бесплатны для личного/некоммерческого использования. [113]
В 1995 году двое из команды разработчиков — Джон Скоулз и Питер Доннелли — были награждены премией Айверсона за работу над интерпретатором. [104] Гитте Кристенсен и Мортен Кромберг были совместными лауреатами премии Айверсона в 2016 году. [114]
НАРС2000 [ править ]
NARS2000 — это интерпретатор APL с открытым исходным кодом, написанный Бобом Смитом, известным разработчиком и разработчиком APL из STSC в 1970-х и 1980-х годах. NARS2000 содержит расширенные функции и новые типы данных и изначально работает в Microsoft Windows и других платформах под Wine . Он назван в честь инструмента разработки 1980-х годов — NARS (Система исследования вложенных массивов). [115]
APLX [ править ]
APLX — это кроссплатформенный диалект APL, основанный на APL2 и с несколькими расширениями, который был впервые выпущен британской компанией MicroAPL в 2002 году. Хотя он больше не находится в разработке и не продается в коммерческих целях, теперь он доступен бесплатно на сайте Dyalog. [116]
Йорк АПЛ [ править ]
Йорк АПЛ [117] был разработан в Йоркском университете , Онтарио, примерно в 1968 году и работал на мэйнфреймах IBM 360. Одно заметное различие между ним и APL\360 заключалось в том, что он определял «форму» (ρ) скаляра как 1, тогда как APL\360 определял его как более математически правильный 0 — это облегчило написание функций, которые действовали бы одинаково с скаляры и векторы.
GNU APL [ править ]
GNU APL является свободной реализацией расширенного APL, как указано в ISO/IEC 13751:2001, и, таким образом, является реализацией APL2. Он работает в Linux , macOS, нескольких диалектах BSD и в Windows (либо с использованием Cygwin для полной поддержки всех своих системных функций, либо как собственный 64-битный двоичный файл Windows с отсутствием некоторых системных функций). GNU APL внутренне использует Unicode и может быть написан по сценарию. Ее написал Юрген Зауэрман. [118]
Ричард Столлман , основатель проекта GNU , был одним из первых, кто внедрил APL и использовал его для написания текстового редактора, будучи учеником старшей школы, летом 1969 года. [119]
Интерпретация и составление APL [ править ]
APL традиционно является интерпретируемым языком , имеющим такие языковые характеристики, как слабая типизация переменных, которые плохо подходят для компиляции . [120] Однако с массивами в качестве основной структуры данных [121] он предоставляет возможности для повышения производительности за счет параллелизма , [122] параллельные вычисления , [123] [124] массово параллельные приложения, [125] [126] и очень крупномасштабная интеграция (СБИС), [127] [128] и с самого начала APL считался высокопроизводительным языком. [129] - например, он был отмечен скоростью, с которой он мог выполнять сложные матричные операции, «поскольку он работает с массивами и выполняет такие операции, как инверсия матрицы, внутри». [130]
Тем не менее, APL редко интерпретируется чисто, и методы компиляции или частичной компиляции, которые используются или использовались, включают следующее:
Распознавание идиом [ править ]
Большинство интерпретаторов APL поддерживают идиом. распознавание [131] и оценивать распространенные идиомы как отдельные операции. [132] [133] Например, оценивая идиому BV/⍳⍴A
как единая операция (где BV
является логическим вектором и A
является массивом), можно избежать создания двух промежуточных массивов. [134]
Оптимизированный байт-код [ править ]
Слабая типизация в APL означает, что имя может ссылаться на массив (любого типа данных), функцию или оператор. В общем, интерпретатор не может заранее знать, какая это будет форма, и поэтому должен выполнять анализ, проверку синтаксиса и т. д. во время выполнения. [135] Однако в определенных обстоятельствах можно заранее определить, на какой тип имя будет ссылаться, а затем сгенерировать байт-код , который можно выполнить с меньшими накладными расходами во время выполнения. Этот байт-код также можно оптимизировать с помощью таких методов компиляции, как свертывание констант или исключение общих подвыражений . [136] Интерпретатор выполнит байт-код, если он присутствует и когда выполняются любые сделанные предположения. Dyalog APL включает поддержку оптимизированного байт-кода. [136]
Сборник [ править ]
Компиляция APL была предметом исследований и экспериментов с тех пор, как язык впервые стал доступен; первым компилятором считается Burroughs APL-700. [137] который был выпущен примерно в 1971 году. [138] Чтобы иметь возможность скомпилировать APL, необходимо наложить языковые ограничения. [137] [139] APEX — это исследовательский компилятор APL, написанный Робертом Бернеки и доступный по лицензии GNU General Public License . [140]
Компилятор STSC при условии , APL представляет собой гибрид оптимизатора байт-кода и компилятора. Он позволяет компилировать функции в машинный код его подфункции и глобальные переменные что объявлены , но интерпретатор по-прежнему используется в качестве библиотеки времени выполнения и для выполнения функций, которые не соответствуют требованиям компиляции. [141]
Стандарты [ править ]
APL был стандартизирован Американского национального института стандартов (ANSI) рабочей группой X3J10 , Международной организацией по стандартизации (ISO) и Международной электротехнической комиссией (IEC), рабочей группой 3 Объединенного технического комитета 1 ISO/IEC 22. Основной язык APL: указан в ISO 8485:1989, а расширенный язык APL указан в ISO/IEC 13751:2001.
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б «Цитаты и анекдоты APL» . jsoftware.com . Проверено 14 апреля 2018 г.
- ^ "стд::йота" . cppreference.com .
- ^ Jump up to: Перейти обратно: а б с Кеннет Э. Айверсон (1 декабря 1962 г.). Язык программирования . Уайли . ISBN 978-0-471-43014-8 . ОЛ 26792153М . Викиданные Q105954505 . Проверено 6 августа 2023 г.
- ^ Макинтайр, Дональд Б. (1991). «Язык как интеллектуальный инструмент: от иероглифики до APL» . IBM Systems Journal . 30 (4): 554–581. дои : 10.1147/sj.304.0554 . Архивировано из оригинала 4 марта 2016 года . Проверено 9 января 2015 г.
- ^ «Цитата на премию ACM - Джон Бэкус» . Награды.acm.org. 1977. Архивировано из оригинала 12 февраля 2008 года . Проверено 3 февраля 2010 г.
- ^ Jump up to: Перейти обратно: а б Молер, Клив. «Рост MATLAB» (PDF) . Архивировано из оригинала (PDF) 11 апреля 2009 г. Проверено 3 февраля 2010 г.
- ^ Jump up to: Перейти обратно: а б Хуэй, Роджер. «Библиография APL и J» . jsoftware.com/jwiki . Проверено 2 марта 2010 г.
- ^ Jump up to: Перейти обратно: а б «Интервью с Артуром Уитни» . Кх Системы. 4 января 2004 года. Архивировано из оригинала 4 апреля 2009 года . Проверено 2 марта 2010 г.
- ^ Айверсон, Кеннет Э., «Автоматическая обработка данных: Глава 6: Язык программирования». Архивировано 4 июня 2009 г., в Wayback Machine , 1960 г., Черновой вариант книги Брукса и Айверсона 1963 г. «Автоматическая обработка данных» .
- ^ Брукс, Фред ; Айверсон, Кеннет (1963), Автоматическая обработка данных , John Wiley & Sons Inc.
- ^ «Цитирование премии Тьюринга 1979» . Награды.acm.org. Архивировано из оригинала 23 декабря 2009 г. Проверено 3 февраля 2010 г.
- ^ Хеллерман, Х. (июль 1964 г.). «Экспериментальная система персонализированного преобразователя массивов» . Коммуникации АКМ . 7 (7): 433–438. дои : 10.1145/364520.364573 . S2CID 2181070 .
- ^ Фалькофф, Адин Д.; Айверсон, Кеннет Э., «Эволюция APL» , Уведомления ACM SIGPLAN 13, 1978–08.
- ^ Абрамс, Филип С., Интерпретатор «нотации Айверсона» , Технический отчет: CS-TR-66-47, Факультет компьютерных наук, Стэнфордский университет, август 1966 г.;
- ^ Хей, Томас (2005). «Биографии: Кеннет Э. Айверсон». IEEE Анналы истории вычислений . дои : 10.1109/MAHC.2005.4 .
- ^ Jump up to: Перейти обратно: а б Брид, Ларри, «Первая терминальная сессия APL» , APL Quote Quad , Ассоциация вычислительной техники, том 22, номер 1, сентябрь 1991 г., стр. 2–4.
- ^ 19, 2009 Адин Фалькофф - Музей истории компьютеров. «Айверсон выразил ему благодарность за выбор названия APL и появление пишущей машинки IBM с мячом для гольфа со сменной печатной головкой, которая обеспечивала знаменитый набор символов для представления программ».
- ^ Брид, Ларри (август 2006 г.). «Как мы добрались до APL\1130» . Вектор (Британская ассоциация APL) . 22 (3). ISSN 0955-1433 . Архивировано из оригинала 12 мая 2008 г. Проверено 2 апреля 2007 г.
- ^ Руководство APL \ 1130. Архивировано 21 февраля 2011 г. в Wayback Machine , май 1969 г.
- ^ «Вспоминая АПЛ» . Quadibloc.com . Проверено 17 июня 2013 г.
- ^ Фалькофф, Адин; Айверсон, Кеннет Э., «Руководство пользователя APL\360». Архивировано 29 февраля 2012 г. в Wayback Machine , IBM Research, Исследовательский центр Томаса Дж. Уотсона, Йорктаун-Хайтс, штат Нью-Йорк, август 1968 г.
- ^ «Терминальная система APL \ 360». Архивировано 11 июля 2010 г. в Wayback Machine , IBM Research, Исследовательский центр Томаса Дж. Уотсона, март 1967 г.
- ^ Jump up to: Перейти обратно: а б Пакин, Сандра (1968). Справочное руководство APL\360 . Science Research Associates, Inc. ISBN 978-0-574-16135-2 .
- ^ Фалькофф, Адин Д.; Айверсон, Кеннет Э., Проект APL , Журнал исследований и разработок IBM , Том 17, номер 4, июль 1973 г. «Эти функции, определяемые средой, были основаны на использовании еще одного класса функций, называемых «двутавровыми балками». из-за формы используемого для них символа, который обеспечивает более общие средства связи между программами APL и менее абстрактными частями системы. Функции двутаврового луча были впервые введены системными программистами, чтобы позволить им выполнять System/. 360 инструкций из программ APL и, таким образом, используют APL в качестве непосредственной помощи в своей программной деятельности. Очевидное удобство функций такого типа, которые оказались частью языка, привело к введению монадической двутавровой функции для. прямое использование кем-либо. Различные аргументы этой функции давали информацию об окружающей среде, такую как доступное пространство и время суток».
- ^ Минкер, Джек (январь 2004 г.). «2.3.4 Разработка компьютерного программного обеспечения в CSC, 1962–1973». Начало компьютерных и компьютерных наук в Университете Мэриленда (PDF) (Отчет). Университет Мэриленда. п. 38. Архивировано из оригинала (PDF) 10 июня 2011 года . Проверено 23 мая 2011 г.
- ^ Стеббенс, Алан. «Как все начиналось» . Архивировано из оригинала 4 марта 2016 г. Проверено 22 мая 2011 г.
- ^ «Справочное руководство по языку и операциям Xerox APL» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «СИГАПЛ» . Сигапл.орг . Проверено 17 июня 2013 г.
- ^ «Пятьдесят лет BASIC, языка программирования, сделавшего компьютеры персональными» . Время . 29 апреля 2014 года . Проверено 29 апреля 2018 г.
- ^ «МСМ Компьютерс М70/М700» . old-computers.com . Архивировано из оригинала 3 апреля 2018 года . Проверено 8 апреля 2018 г.
- ^ Стачняк, Стачняк (2011). Изобретение ПК: история MCM/70 . Издательство Университета Макгилла Куинса. ISBN 978-0-7735-3852-8 .
- ^ Миллер, Майкл (17 декабря 2014 г.). «ПК, проложившие путь к Альтаиру» . Журнал ПК . Зифф Дэвис . Проверено 29 апреля 2018 г.
- ^ «Семейный компьютер VideoBrain» , Popular Science , ноябрь 1978 г., реклама.
- ^ «Взгляд на SuperPet» . Вычислите! . Small System Services Inc., декабрь 1981 г. Проверено 29 апреля 2018 г.
- ^ Гейтс, Билл (31 января 1976 г.). «Открытое письмо любителям» . доморощенного компьютерного клуба Информационный бюллетень . Проверено 29 апреля 2018 г.
- ^ Хуэй, Роджер. «Вспоминая Кена Айверсона» . keiapl.org . КЕИАПЛ . Проверено 10 января 2015 г.
- ^ «Кеннет Э. Айверсон» . Премия Тьюринга ACM AM . АКМ . Проверено 10 января 2015 г.
- ^ «APL2: Ранние годы: можете и должны ли вы идти на компромисс по техническим вопросам?» . Глава SIGPLAN, посвященная языкам программирования массивов . АКМ . Проверено 10 января 2015 г.
- ^ Jump up to: Перейти обратно: а б с д Фалькофф, Адин Д. (1991). «Семейство систем APL IBM». IBM Systems Journal . 30 (4): 416–432. дои : 10.1147/sj.304.0416 . S2CID 19030940 .
- ^ «ИБМ АПЛ2» . ЭДМ2 . 09.10.2019 . Проверено 17 ноября 2021 г.
- ^ «APL2: Что нового» . IBM.com . ИБМ . Проверено 22 апреля 2018 г.
- ^ Микро АПЛ. «Обзор системы APL» . microapl.com . Микро АПЛ . Проверено 10 января 2015 г.
- ^ Робертсон, Грэм. «Личный взгляд на APL2010» . archive.vector.org.uk . Вектор – журнал Британской ассоциации APL. Архивировано из оригинала 2 апреля 2015 года . Проверено 10 января 2015 г.
- ^ Родригес, П.; Рохас, Дж.; Альфонсека, М.; Бургос, Дж.И. (1989). «Экспертная система химического синтеза, написанная на APL2/PC». ACM SIGAPL APL Quote Quad . 19 (4): 299–303. дои : 10.1145/75144.75185 . S2CID 16876053 .
- ^ «APL2: язык программирования для решения проблем, визуализации и доступа к базам данных» . www-03.ibm.com . ИБМ . Проверено 10 января 2015 г.
- ^ Пайк, Роб (25 марта 2018 г.). «Плющ» . ГоДок . Архивировано из оригинала 13 августа 2019 г.
- ^ «Часто задаваемые вопросы по языку Wolfram» . Вольфрам . Проверено 20 февраля 2020 г.
LISP и APL оказали два первых влияния.
- ^ Техасские инструменты (1977). «Полностраничная реклама TI 745: представляем новый набор персонажей» . Компьютерный мир . 11 (27): 32 . Проверено 20 января 2015 г.
- ^ Диалог. «Шрифты и клавиатуры APL» . www.dyalog.com . Диалог . Проверено 19 января 2015 г.
- ^ Смит, Боб. «Клавиатура NARS2000» . www.sudleyplace.com . Боб Смит / NARS2000 . Проверено 19 января 2015 г.
- ^ «Введение в APL – символы APL» . www.microapl.co.uk . ООО «МикроАПЛ» . Проверено 8 января 2015 г.
- ^ Браун, Джеймс А.; Хоукс, Брент; Тримбл, Рэй (1993). «Расширение набора символов APL». ACM SIGAPL APL Quote Quad . 24 (1): 41–46. дои : 10.1145/166198.166203 .
- ^ Кромберг, Мортен. «Поддержка Unicode для APL» . archive.vector.org.uk . Вектор, журнал Британской ассоциации APL. Архивировано из оригинала 20 января 2015 года . Проверено 8 января 2015 г.
- ^ Сюй, Аарон. «Информатика и образование с помощью APL» . Диалог, ООО . Проверено 15 июля 2016 г.
- ^ Dyalog, Inc. Шрифты и клавиатуры APL. https://www.dyalog.com/apl-font-keyboard.htm
- ^ Jump up to: Перейти обратно: а б МикроАПЛ. «Операторы» . www.microapl.co.uk . МикроАПЛ . Проверено 12 января 2015 г.
- ^ Примитивные функции. «Примитивные функции» . www.microapl.co.uk/ . Проверено 1 января 2015 г.
- ^ Рабочее пространство. «Рабочее пространство» . www.microapl.co.uk . Проверено 1 января 2015 г.
- ^ "пример" . Catpad.net. Архивировано из оригинала 8 июля 2013 года . Проверено 17 июня 2013 г.
- ^ «Ввод символов APL» . www.microapl.co.uk . Проверено 1 января 2015 г.
- ^ Дики, Ли (1993). «Список схем транслитерации APL» . Архивировано из оригинала 29 сентября 2006 г.
- ^ Айверсон, Кентукки (август 1980 г.). «Нотация как инструмент мышления» . Коммуникации АКМ . 23 (8): 444–465. дои : 10.1145/358896.358899 . Архивировано из оригинала 20 сентября 2013 г.
- ^ Батенбург. «Эффективность АПЛ» . www.ekevanbatenburg.nl . Проверено 1 января 2015 г.
- ^ Ваксман. «Великое программирование APL» (PDF) . www.vaxman.de . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 1 января 2015 г.
- ^ Янко, Вольфганг (май 1987 г.). «Исследование эффективности использования APL для программирования машины вывода». ACM SIGAPL APL Quote Quad . 17 (4): 450–456. дои : 10.1145/384282.28372 .
- ^ Бореалис. «Почему АПЛ?» . www.aplborealis.com . Проверено 1 января 2015 г.
- ^ Айверсон, Кеннет Э. (1987). «Словарь АПЛ» . www.jsoftware.com . Проверено 20 января 2015 г.
- ^ Jump up to: Перейти обратно: а б с д и ж «Концепции APL» . Microapl.co.uk . Проверено 3 февраля 2010 г.
- ^ «Теория вложенных массивов» . Ниал.com. Архивировано из оригинала 9 июля 2011 г. Проверено 3 февраля 2010 г.
- ^ Jump up to: Перейти обратно: а б с «Программирование на APL», Боман, Фрёберг, Студенческая литература , ISBN 91-44-13162-3
- ^ Айверсон, Кеннет Э. (1983). «Синтаксис и семантика APL» . www.jsoftware.com . ИП Шарп Ассошиэйтс . Проверено 11 января 2015 г.
- ^ МикроАПЛ. «Примитивы APL» . www.microapl.co.uk . МикроАПЛ . Проверено 11 января 2015 г.
- ^ «Шрифт APL — дополнительные глифы APL» . wiki.nars2000.org . НАРС2000 . Проверено 11 января 2015 г.
- ^ Фокс, Ральф Л. «Систематически случайные числа» . www.sigapl.org . СИГАПЛ . Проверено 11 января 2015 г.
- ^ Скоулз, Джон (26 января 2009 г.). Игра жизни Конвея в APL (видео). Ютуб . Проверено 20 ноября 2021 г.
- ↑ Дополнительные технические подробности можно найти в статье APL Wiki «Игра жизни Конвея» . Проверено 20 ноября 2021 г.
- ^ Макдоннелл, Э.Э. Введение в справочник в APL , APL Press, 1981. ( полный скан книги )
- ^ Ачарья, Р; Перейра, (904567457) NE Язык программирования APL. Архивировано 3 ноября 2021 г. в Wayback Machine . Статья по CS5314 (Концепции языков программирования) в Технологическом институте Вирджинии.
- ^ АПЛ Вики. Конференция АПЛ . Проверено 13 октября 2021 г.
- ^ Джейкоб Уильямс. Дегенеративная коника: Новая кровь . Проверено 13 октября 2021 г.
- ^ АПЛ Вики. Логотип АПЛ . Проверено 20 мая 2022 г.
- ^ Jump up to: Перейти обратно: а б «Годовой отчет за 2017 год» (PDF) . СимКорп. 1 февраля 2018 г. Архивировано (PDF) из оригинала 09 октября 2022 г. Проверено 3 апреля 2018 г.
София — это платформа прямого управления инвестициями, такая как SimCorp Dimension. ... София основана на языке кодирования APL, как и некоторые части SimCorp Dimension.
- ^ Ли, Жорж; Лелуш, Радди; Мейссонье, Винсент; Зарри, Джан Пьеро (1 сентября 1982 г.). «Использование APL в среде искусственного интеллекта» . ACM SIGAPL APL Quote Quad . 13 (1): 183–191. дои : 10.1145/390006.802242 . Проверено 3 апреля 2018 г.
- ^ Фордайс, К.; Салливан, Г. (1985). «Средства разработки искусственного интеллекта» . APL Котировка Quad . APL 85 Конф. Учеб. (15): 106–113. дои : 10.1145/255315.255347 .
- ^ Альфонсека, Мануэль (июль 1990 г.). «Нейронные сети в APL» . ACM SIGAPL APL Quote Quad . 20 (4): 2–6. дои : 10.1145/97811.97816 . Проверено 3 апреля 2018 г.
- ^ Кромберг, Мортен. «Программирование роботов в APL» . www.dyalog.com/ . Проверено 6 января 2015 г.
- ^ Холмс, WN (май 1978 г.). «Является ли APL языком программирования?» . Компьютерный журнал . 21 (2): 128–131. дои : 10.1093/comjnl/21.2.128 .
- ^ Сюй, Аарон (18 ноября 2017 г.). «Шаблоны проектирования против антишаблонов в APL» . www.functionconf.com . Архивировано из оригинала 23 марта 2018 года . Проверено 7 апреля 2018 г.
- ^ Магненат-Тальманн, Надя; Тельманн, Дэниел (1985). Теория и практика компьютерной анимации . Спрингер-Верлаг . п. 38. ISBN 9784431684336 . Проверено 3 апреля 2018 г.
Digital Effects — еще одна продюсерская компания, работавшая над «Троном». Они использовали систему лазерного сканирования для оцифровки, хранения и воспроизведения изображений. Джадсон Роузбуш, президент Digital Effects, является основным разработчиком APL VISION и FORTRAN VISION, двух пакетов компьютерной анимации, которые используются в настоящее время.
- ^ Гуцелл, Сэм (17 октября 2017 г.). «Симулятор Штормграда на Dyalog '16» . www.optima-systems.co.uk . Оптима Системы . Проверено 3 апреля 2018 г.
Stormwind — это [3D-симулятор лодки], вызвавший огромный интерес в сообществе APL.
- ^ «Плавное сотрудничество между OP-Pohjola и модификацией приложений с поддержкой Tieto» [Плавное сотрудничество между OP-Pohjola и модификацией приложений с поддержкой Tieto] (PDF) . www.tieto.com (на финском языке). Информация . Архивировано из оригинала (PDF) 9 октября 2022 г. Проверено 3 апреля 2018 г. [ постоянная мертвая ссылка ]
- ^ «Ви идаг» [Мы сегодня]. profdoccare.se (на шведском языке) . Проверено 3 апреля 2018 г.
Благодаря выбору APL в качестве технической платформы относительно легко быстро построить решение, которое можно назвать исполняемым прототипом (перевод с оригинала).
- ^ Бреннер, Чарльз. «Технология ДНК-идентификации и APL» . dna-view.com . Презентация на конференции пользователей APL 2005 года . Проверено 9 января 2015 г.
- ^ Бреннер, Чарльз. «ДНК повсюду – возможность для APL» . www.youtube.com . Ютуб. Архивировано из оригинала 14 ноября 2021 г. Проверено 9 января 2015 г.
- ^ «Награды – 1973 – Лоуренс Брид» . Ассоциация вычислительной техники. Архивировано из оригинала 2 апреля 2012 года.
- ^ «Награды – 1973 – Ричард Латвелл» . Ассоциация вычислительной техники. Архивировано из оригинала 2 апреля 2012 года.
- ^ «Награды – 1973 – Роджер Мур» . Ассоциация вычислительной техники. Архивировано из оригинала 2 апреля 2012 года.
- ^ «ИБМ 5100» . old-computers.com . Архивировано из оригинала 30 апреля 2018 года . Проверено 8 апреля 2018 г.
- ^ «Добро пожаловать, IBM, в персональные компьютеры» . Байт . Декабрь 1975 г. с. 90 . Проверено 29 апреля 2018 г.
- ^ «Хронология APL и его влияние на развитие компьютерного языка» . www.sigapl.org . АКМ . Проверено 29 апреля 2018 г.
- ^ Ларри Брид (август 2006 г.). «Как мы добрались до APL\1130» . Вектор (Британская ассоциация APL) . 22 (3). ISSN 0955-1433 . Архивировано из оригинала 12 мая 2008 года . Проверено 29 апреля 2018 г.
- ^ Роджер Мур (2005). «История разделения времени и сети IP Sharp Associates» . Роджердмур.ca . Роджер Мур. Архивировано из оригинала 4 апреля 2019 года . Проверено 7 марта 2018 г.
- ^ Блюменталь, Марсия (18 мая 1981 г.). «VAX-11 приобретают процессор APL» . Компьютерный мир . Проверено 22 апреля 2018 г.
- ^ Jump up to: Перейти обратно: а б с «Премия Кеннета Э. Айверсона за выдающийся вклад в APL» . Глава SIGPLAN, посвященная языкам программирования массивов (SIGAPL). Архивировано из оригинала 26 февраля 2012 года.
- ^ Марк Шора (26 января 2021 г.). «Программное обеспечение для входа в систему объявляет о входе в систему APL2» . Программное обеспечение для входа в систему . Проверено 17 ноября 2021 г.
- ^ Келли, Р.А. (1973). «APLGOL, экспериментальный язык структурированного программирования» . Журнал исследований и разработок IBM . 17 :69–73. дои : 10.1147/rd.171.0069 .
- ^ Джонстон, Рональд Л. (июль 1977 г.). «APLGOL: Средства структурированного программирования для APL» . Журнал Hewlett-Packard.
- ^ Сайт ООО «Диалог» . Проверено 6 июня 2018 г.
- ^ «Диалог в 25» (PDF) . Журнал «Вектор» . Британская ассоциация APL. Сентябрь 2008 года . Проверено 14 апреля 2018 г. [ постоянная мертвая ссылка ]
- ^ Кромберг, Мортен (22 октября 2007 г.). «Массивы объектов» (PDF) . Материалы симпозиума 2007 года по динамическим языкам . п. 20. дои : 10.1145/1297081.1297087 . ISBN 9781595938688 . S2CID 18484472 . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 27 августа 2018 г.
- ^ Скоулз, Джон. «D: Функциональное подмножество Dyalog APL» . Британская ассоциация APL.
- ^ Скоулз, Джон. «Перевод D-функций в неявную форму» . ООО "Диалог"
- ^ «Диалог – Цены и лицензии» .
- ^ «Премия Айверсона 2016 года присуждается генеральному директору и исполнительному директору Dyalog» . Проверено 6 июня 2018 г.
- ^ «Система исследования вложенных массивов - NARS2000: экспериментальный интерпретатор APL» . НАРС2000 . Программное обеспечение Садли Плейс . Проверено 10 июля 2015 г.
- ^ «APLX снят с коммерческой продажи, но его можно скачать бесплатно» . Microapl.com . Проверено 14 апреля 2018 г.
- ^ «Йорк АПЛ» .
- ^ «ГНУ АПЛ» . каталог.fsf.org . Каталог свободного программного обеспечения . Проверено 28 сентября 2013 г.
- ^ Столлман, Ричард М. «RMS Berättar» . Архивировано из оригинала 26 ноября 2018 года . Проверено 22 апреля 2018 г.
- ^ Бадд, Тимоти (1988). Компилятор APL . Спрингер-Верлаг. ISBN 978-0-387-96643-4 .
- ^ «Что такое АПЛ?» . www.sigapl.org . СИГАПЛ . Проверено 20 января 2015 г.
- ^ Цзюй, Цзы-Цзин; Чинг, Вай-Ми (1991). «Использование параллелизма данных APL на машине MIMD с общей памятью». Информационный бюллетень Уведомления ACM SIGPLAN . 26 (7): 61–72. дои : 10.1145/109625.109633 . S2CID 8584353 .
- ^ Сюй, Аарон В.; Боуман, Уильям Дж. «Возвращаясь к APL в современную эпоху» (PDF) . www.cs.princeton.edu . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 20 января 2015 г.
- ^ Чинг, В.-М.; Джу, Д. (1991). «Выполнение автоматически распараллеливаемых программ APL на RP3» . Журнал исследований и разработок IBM . 35 (5/6): 767–777. дои : 10.1147/rd.355.0767 . Архивировано из оригинала 3 марта 2016 года . Проверено 20 января 2015 г.
- ^ Блеллок, Гай Э.; Сабот, Гэри В. (1990). «Компиляция языков, ориентированных на коллекции, на массово-параллельных компьютерах». Журнал параллельных и распределенных вычислений . 8 (2): 119–134. CiteSeerX 10.1.1.51.5088 . дои : 10.1016/0743-7315(90)90087-6 .
Языки, ориентированные на коллекции, включают APL, APL2.
- ^ Йендршок, Йоханнес; Хоффманн, Рольф; Эдигер, Патрик; Келлер, Йорг. «Реализация параллельных функций данных, подобных APL, на машине GCA» (PDF) . www.fernuni-hagen.de . стр. 1–6. Архивировано из оригинала (PDF) 22 января 2015 года . Проверено 22 января 2015 г.
GCA – Глобальная клеточная автоматизация. По сути, это массовая параллель. «APL был выбран из-за способности выражать матричные и векторные структуры.
- ^ Бреннер, Норман (1984). «Проектирование схем СБИС с использованием APL с подпрограммами на языке Фортран». ACM SIGAPL APL Quote Quad . 14 (4): 77–79. дои : 10.1145/800058.801079 . ISBN 0-89791-137-7 . S2CID 30863491 .
APL для интерактивности и простоты кодирования
• Бреннер, Норман (1984). «Проектирование схем СБИС с использованием APL с подпрограммами на языке Фортран». Материалы международной конференции по APL – APL '84 . АСМ СИГАПЛ. ISBN 978-0897911375 . - ^ Гэмбл, диджей; Хобсон, РФ (1989). «На пути к графической/процедурной среде для создания генераторов модулей СБИС». Материалы конференции Тихоокеанская конференция IEEE по коммуникациям, компьютерам и обработке сигналов . стр. 606–611. дои : 10.1109/PACRIM.1989.48437 . S2CID 7921438 .
Описаны генераторы модулей СБИС. APL и C, как примеры интерпретируемых и компилируемых языков, могут быть подключены к усовершенствованному графическому дисплею.
- ^ Ли, Роберт С. (1983). «Две реализации APL» . Журнал ПК . 2 (5): 379 . Проверено 20 января 2015 г.
- ^ «Компьютерный язык APL» . МАРТА и ЛАМА . Архивировано из оригинала 13 февраля 2015 года . Проверено 20 января 2015 г.
- ^ Мецгер, Роберт; Вэнь, Чжаофан (2000). Автоматическое распознавание и замена алгоритмов: новый подход к оптимизации программ . Пресса МТИ. ISBN 9780262133685 . Проверено 6 мая 2018 г.
- ^ Снайдер, Лоуренс (1982). «Распознавание и выбор идиом для оптимизации кода». Акта Информатика . 17 (3). дои : 10.1007/BF00264357 . S2CID 8369972 .
- ^ Ченг, Фэн Шэн (1981). Сопоставление идиом: метод оптимизации компилятора APL (Диссертация). Университет штата Айова . Проверено 6 мая 2018 г.
- ^ «Распознавание идиом» . dialog.com . Проверено 6 мая 2018 г.
- ^ Строун, Джордж О. (март 1977 г.). «Действительно ли APL нуждается в анализе во время выполнения?». Программное обеспечение: практика и опыт . 7 (2): 193–200. дои : 10.1002/спе.4380070207 . S2CID 1463012 .
- ^ Jump up to: Перейти обратно: а б «Руководство пользователя компилятора» (PDF) . www.dyalog.com . ООО «Диалог». Архивировано (PDF) оригиналом 09.10.2022 . Проверено 7 мая 2018 г.
- ^ Jump up to: Перейти обратно: а б Дрисколл, Грэм С. младший; Орт, Дональд Л. (ноябрь 1986 г.). «Составление APL: переводчик APL Йорктауна». Журнал исследований и разработок IBM . 30 (6): 583–593. дои : 10.1147/рд.306.0583 . S2CID 2299699 .
- ^ «Хронология АПЛ» . www.sigapl.org . АКМ . Проверено 7 мая 2018 г.
- ^ Вай-Ми, Чинг (ноябрь 1986 г.). «Анализ программы и генерация кода в компиляторе APL/370». Журнал исследований и разработок IBM . 30 (6): 594–602. дои : 10.1147/рд.306.0594 . S2CID 17306407 .
- ^ «Проект АПЕКС» .
- ^ «Компилятор APL (сообщение Джима Вейганга в группу новостей comp.lang.apl)» . 5 апреля 1994 г.
Дальнейшее чтение [ править ]
- Машина APL. Архивировано 27 января 2024 г. в Wayback Machine (докторская диссертация Филипа Абрамса в Стэнфорде, 1970 г.).
- Личная история APL. Архивировано 7 ноября 2023 г. в Wayback Machine (статья Майкла С. Монтальбано 1982 г. ).
- Макинтайр, Дональд Б. (1991). «Язык как интеллектуальный инструмент: от иероглифов до APL» (PDF) . IBM Systems Journal . 30 (4): 554–581. дои : 10.1147/sj.304.0554 . Архивировано из оригинала (PDF) 4 мая 2006 г.
- Айверсон, Кеннет Э. (1991). «Личный взгляд на APL» (PDF) . IBM Systems Journal . 30 (4): 582–593. дои : 10.1147/sj.304.0582 . Архивировано из оригинала (PDF) 27 февраля 2008 г.
- Язык программирования Кеннета Э. Айверсона
- APL в экспозиции Кеннета Э. Айверсона
- Брукс, Фредерик П.; Кеннет Айверсон (1965). Автоматическая обработка данных, System/360 Edition . ISBN 0-471-10605-4 .
- Аскулум, Аджай (август 2006 г.). Сборка системы с помощью APL + Win . Уайли. ISBN 978-0-470-03020-2 .
- Фалькофф, Адин Д.; Айверсон, Кеннет Э .; Сассенгут, Эдвард Х. (1964). «Формальное описание System/360» (PDF) . IBM Systems Journal . 3 (2): 198–261. дои : 10.1147/sj.32.0198 . Архивировано из оригинала (PDF) 27 февраля 2008 г.
- Вексельблат, Ричард Л., изд. (1981). «XIV». История языков программирования: материалы конференции по истории языков программирования, Лос-Анджелес, Калифорния, 1-3 июня 1978 г. ISBN 978-0127450407 .
- Бэнон, Джеральд Джин Фрэнсис (1989). Основы графических вычислений . Рио-де-Жанейро: Кампус. п. 141.
- ЛеПейдж, Уилбур Р. (1978). Прикладное APL-программирование . Прентис Холл.
- Мужен, Филипп; Дюкасс, Стефан (ноябрь 2003 г.). «OOPAL: Интеграция программирования массивов в объектно-ориентированное программирование» (PDF) . Уведомления ACM SIGPLAN . 38 (11): 65–77. дои : 10.1145/949343.949312 . Архивировано из оригинала (PDF) 14 ноября 2006 г.
- Введение в объектно-ориентированное программирование для программистов APL (PDF) . Диалог Лимитед. Сентябрь 2006 г. Архивировано из оригинала (PDF) 4 октября 2007 г.
- Шустек, Лен (10 октября 2012 г.). «Исходный код языка программирования APL» . Музей истории компьютеров (CHM). Архивировано из оригинала 6 сентября 2017 года . Проверено 6 сентября 2017 г.
- Свобода, Антонин ; Уайт, Доннамай Э. (2016) [2012, 1985, 1 августа 1979]. Advanced Logical Circuit Design Techniques (PDF) (перепечатанное электронное переиздание). Garland STPM Press (оригинальный выпуск) / WhitePubs Enterprises, Inc. (переиздание). ISBN 978-0-8240-7014-4 . LCCN 78-31384 . Архивировано (PDF) из оригинала 14 апреля 2017 г. Проверено 15 апреля 2017 г. [1] [2]
Видео [ править ]
- «Происхождение APL» на YouTube - интервью в стиле ток-шоу 1974 года с первоначальными разработчиками APL.
- Демонстрация APL на YouTube — живая демонстрация APL в 1975 году профессором Бобом Спенсом , Имперский колледж Лондона .
- «Игра жизни Конвея в APL» на YouTube - учебник Джона Скоулза из Dyalog Ltd. 2009 года, в котором « Игра жизни Конвея» реализована в одной строке APL.
- 50 лет APL на YouTube — введение Грэма Робертсона в APL в 2009 году.
Внешние ссылки [ править ]
![]() | в этой статье Использование внешних ссылок может не соответствовать политике и рекомендациям Википедии . ( Август 2020 г. ) |

Интернет-ресурсы [ править ]
- TryAPL.org , онлайн-учебник по APL.
- АПЛ в Керли
- APL2C , источник ссылок на компиляторы APL
- Языки программирования .NET
- Семейство языков программирования APL
- Языки программирования массивов
- Командные оболочки
- Динамические языки программирования
- Динамически типизированные языки программирования
- Функциональные языки
- программное обеспечение IBM
- Языки программирования, созданные в 1964 году.
- Языки программирования со стандартом ISO
- Языки программирования
- Гомоиконические языки программирования