~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 58FCE5337328B2494E632C02D1E4A005__1717638840 ✰
Заголовок документа оригинал.:
✰ APL (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ APL (язык программирования) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/A_Programming_Language ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/58/05/58fce5337328b2494e632c02d1e4a005.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/58/05/58fce5337328b2494e632c02d1e4a005__translat.html ✰
Дата и время сохранения документа:
✰ 15.06.2024 17:06:35 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 6 June 2024, at 04:54 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

APL (язык программирования) — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии
(Перенаправлено с Языка программирования )
АПЛ
Парадигма Массив , функциональный , структурированный , модульный
Разработано Кеннет Э. Айверсон
Разработчик Ларри Брид , Дик Лэтвелл , Роджер Мур и другие.
Впервые появился 27 ноября 1966 г .; 57 лет назад ( 1966-11-27 ) [1]
Стабильная версия
ИСО/МЭК 13751:2001 / 1 февраля 2001 г .; 23 года назад ( 01.02.2001 )
Дисциплина набора текста Динамический
Платформа Кросс-платформа
Лицензия Собственный , с открытым исходным кодом
Веб-сайт апплвики
Основные реализации
  • АПЛ\360
  • АПЛ\1130
  • АПЛ*Плюс
  • Острый АПЛ
  • АПЛ2
  • Диалог АПЛ
  • НАРС2000
  • АПЛХ
  • ГНУ АПЛ
Под влиянием
Математические обозначения
Под влиянием

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]

Аппаратное обеспечение [ править ]

Машинные шарики IBM и печатное колесо, содержащие греческие символы APL
Вид программиста на раскладку клавиатуры IBM 2741 со вставленной печатающей головкой APL.

Ключевым достижением в области эффективного использования 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 серии 1100/2200 . UNIVAC [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, операция, выполняемая без формальных циклов или языка потока управления .
      н  
 4   5   6   7 
Отобразить содержимое n, в настоящее время массив или вектор.
      п  +  4 
 8   9   10   11 
4 теперь добавляется ко всем элементам вектора. n, создавая 4-элементный вектор {8 9 10 11}.
Как указано выше, интерпретатор APL отображает результат, поскольку значение выражения не было присвоено переменной (с помощью ).
      +  /  н 
 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, имеют значения, отличные от значений как в математике, так и в общей информатике.

Терминология операторов APL
Срок Описание
функция операция или отображение, которая принимает ноль, один (правый) или два (левый и правый) аргументы, которые могут быть скалярами, массивами или более сложными структурами, и могут возвращать столь же сложный результат. Функция может быть:
  • Примитивный: встроенный и представлен одним глифом; [68]
  • Определяется: как именованный и упорядоченный набор программных операторов; [68]
  • Производное: как комбинация оператора с его аргументами. [68]
множество объект со значением данных, имеющий ноль или более ортогональных измерений в порядке строк, в котором каждый элемент представляет собой примитивный скалярный элемент данных или другой массив. [69]
ниладический не принимая и не требуя никаких аргументов, недействителен [70]
монадический требующий только одного аргумента; справа для функции, слева для оператора, унарный [70]
диадический требующий как левого, так и правого аргумента, двоичный [70]
амбивалентный
или монадический
возможность использования в монадическом или диадическом контексте, что позволяет исключить левый аргумент [ необходимо определение ] [68]
оператор операция или отображение, которое принимает одну (слева) или две (слева и справа) функцию или аргументы (операнды) со значениями массива и производит функцию. Оператор может быть:
  • Примитивный: встроенный и представлен одним глифом; [68]
  • Определяется: как именованный и упорядоченный набор программных операторов. [68]

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

APL имеет явные представления функций, операторов и синтаксиса, обеспечивая тем самым основу для четкого и явного описания расширенных возможностей языка и инструментов для экспериментов с ними. [71]

Примеры [ править ]

Привет, мир [ править ]

Это отобразит « Привет, мир »:

'Привет, мир' 

Темой дизайна в 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, гарантированно неповторяющихся , и отображает их, отсортированные в порядке возрастания:

Икс  [  Икс  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, по длине слова:

Икс  [  Икс  +  .  ' '  ;] 

Игра Жизни [ править ]

Следующая функция «жизнь», написанная на 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>Это <em>выделенный</em> текст.</p></body></html>' 
       {   /⍨   ~  {  ∨≠  \  }  '<>  }   txt 
 Это   выделенный   текст   '  . 

Именование [ править ]

APL получил свое название от инициалов книги Айверсона «Язык программирования» . [3] даже несмотря на то, что в книге описывается математическая нотация Айверсона , а не реализованный язык программирования, описанный в этой статье. Имя используется только для реальных реализаций, начиная с APL\360 .

Адин Фалькофф придумал это название в 1966 году во время внедрения APL\360 в IBM :

Проходя мимо офиса, в котором жили трое студентов, я услышал звуки происходящего спора. Я просунул голову в дверь, и Эрик спросил меня: «Разве не правда, что все знают, что используемая нами система обозначений называется APL?» Мне было жаль, что мне пришлось разочаровать его, признавшись, что я никогда не слышал, чтобы это называлось так. С чего он взял, что это общеизвестно? И кто решил это так назвать? В самом деле, почему это нужно было как-то называть? Спустя некоторое время я услышал, как оно было названо. Когда в июне 1966 года начались работы по внедрению, началась и работа по документации. Полагаю, когда им пришлось написать об «этом», Фалькофф и Айверсон поняли, что им придется дать «этому» имя. Вероятно, в то время было сделано много предложений, но я слышал только о двух. Группа SRA в Чикаго, которая разрабатывала учебные материалы с использованием этой записи, поддержала название «Mathlab». Это не прижилось. Другое предложение заключалось в том, чтобы назвать ее «Лучшая математика Айверсона», а затем позволить людям придумать подходящую аббревиатуру. Это было сочтено шуткой.

Затем однажды Адин Фалькофф вошел в офис Кена и написал на доске «Язык программирования», а под ним аббревиатуру «APL». Так оно и родилось. Примерно через неделю или около того Эрик Айверсон задал мне свой вопрос, в то время как это имя еще не нашло своего пути на протяжении тринадцати миль вверх по Таконик-Паркуэй от IBM Research до IBM Mohansic.

APL иногда интерпретируется как язык программирования массивов или язык обработки массивов . [78] тем самым превратив APL в бэкроним .

Сумка для ноутбука для конференций Британской ассоциации APL (BAPLA)

[ править ]

Между вендорами 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 год , 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 год , доступен для 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.

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

  1. ^ Перейти обратно: а б «Цитаты и анекдоты APL» . jsoftware.com . Проверено 14 апреля 2018 г.
  2. ^ "стд::йота" . cppreference.com .
  3. ^ Перейти обратно: а б с Кеннет Э. Айверсон (1 декабря 1962 г.). Язык программирования . Уайли . ISBN  978-0-471-43014-8 . ОЛ   26792153М . Викиданные   Q105954505 . Проверено 6 августа 2023 г.
  4. ^ Макинтайр, Дональд Б. (1991). «Язык как интеллектуальный инструмент: от иероглифики до APL» . IBM Systems Journal . 30 (4): 554–581. дои : 10.1147/sj.304.0554 . Архивировано из оригинала 4 марта 2016 года . Проверено 9 января 2015 г.
  5. ^ «Цитата на премию ACM - Джон Бэкус» . Награды.acm.org. 1977. Архивировано из оригинала 12 февраля 2008 года . Проверено 3 февраля 2010 г.
  6. ^ Перейти обратно: а б Молер, Клив. «Рост MATLAB» (PDF) . Архивировано из оригинала (PDF) 11 апреля 2009 г. Проверено 3 февраля 2010 г.
  7. ^ Перейти обратно: а б Хуэй, Роджер. «Библиография APL и J» . jsoftware.com/jwiki . Проверено 2 марта 2010 г.
  8. ^ Перейти обратно: а б «Интервью с Артуром Уитни» . Кх Системы. 4 января 2004 года. Архивировано из оригинала 4 апреля 2009 года . Проверено 2 марта 2010 г.
  9. ^ Айверсон, Кеннет Э., «Автоматическая обработка данных: Глава 6: Язык программирования». Архивировано 4 июня 2009 г., в Wayback Machine , 1960 г., Черновой вариант книги Брукса и Айверсона 1963 г. « Автоматическая обработка данных» .
  10. ^ Брукс, Фред ; Айверсон, Кеннет (1963), Автоматическая обработка данных , John Wiley & Sons Inc.
  11. ^ «Цитирование премии Тьюринга 1979» . Награды.acm.org. Архивировано из оригинала 23 декабря 2009 г. Проверено 3 февраля 2010 г.
  12. ^ Хеллерман, Х. (июль 1964 г.). «Экспериментальная система персонализированного преобразователя массивов» . Коммуникации АКМ . 7 (7): 433–438. дои : 10.1145/364520.364573 . S2CID   2181070 .
  13. ^ Фалькофф, Адин Д.; Айверсон, Кеннет Э., «Эволюция APL» , Уведомления ACM SIGPLAN 13, 1978–08.
  14. ^ Абрамс, Филип С., Интерпретатор «нотации Айверсона» , Технический отчет: CS-TR-66-47, Факультет компьютерных наук, Стэнфордский университет, август 1966 г.;
  15. ^ Хей, Томас (2005). «Биографии: Кеннет Э. Айверсон». IEEE Анналы истории вычислений . дои : 10.1109/MAHC.2005.4 .
  16. ^ Перейти обратно: а б Брид, Ларри, «Первая терминальная сессия APL» , APL Quote Quad , Ассоциация вычислительной техники, том 22, номер 1, сентябрь 1991 г., стр. 2–4.
  17. ^ 19, 2009 Адин Фалькофф - Музей истории компьютеров. «Айверсон выразил ему благодарность за выбор названия APL и появление пишущей машинки IBM с мячом для гольфа со сменной печатной головкой, которая обеспечивала знаменитый набор символов для представления программ».
  18. ^ Брид, Ларри (август 2006 г.). «Как мы добрались до APL\1130» . Вектор (Британская ассоциация APL) . 22 (3). ISSN   0955-1433 . Архивировано из оригинала 12 мая 2008 г. Проверено 2 апреля 2007 г.
  19. ^ Руководство APL \ 1130. Архивировано 21 февраля 2011 г. в Wayback Machine , май 1969 г.
  20. ^ «Вспоминая АПЛ» . Quadibloc.com . Проверено 17 июня 2013 г.
  21. ^ Фалькофф, Адин; Айверсон, Кеннет Э., «Руководство пользователя APL\360». Архивировано 29 февраля 2012 г. в Wayback Machine , IBM Research, Исследовательский центр Томаса Дж. Уотсона, Йорктаун-Хайтс, штат Нью-Йорк, август 1968 г.
  22. ^ «Терминальная система APL \ 360». Архивировано 11 июля 2010 г. в Wayback Machine , IBM Research, Исследовательский центр Томаса Дж. Уотсона, март 1967 г.
  23. ^ Перейти обратно: а б Пакин, Сандра (1968). Справочное руководство APL\360 . Science Research Associates, Inc. ISBN  978-0-574-16135-2 .
  24. ^ Фалькофф, Адин Д.; Айверсон, Кеннет Э., Проект APL , Журнал исследований и разработок IBM , Том 17, номер 4, июль 1973 г. «Эти функции, определяемые средой, были основаны на использовании еще одного класса функций, называемых «двутавровыми балками». из-за формы используемого для них символа, который обеспечивает более общие средства связи между программами APL и менее абстрактными частями системы. Функции двутаврового луча были впервые введены системными программистами, чтобы позволить им выполнять System/. 360 инструкций из программ APL и, таким образом, используют APL в качестве прямой помощи в своей программной деятельности. Очевидное удобство функций такого типа, которые оказались частью языка, привело к введению монадической двутавровой функции для. прямое использование кем-либо. Различные аргументы этой функции давали информацию об окружающей среде, такую ​​как доступное пространство и время суток».
  25. ^ Минкер, Джек (январь 2004 г.). «2.3.4 Разработка компьютерного программного обеспечения в CSC, 1962–1973». Начало компьютерных и компьютерных наук в Университете Мэриленда (PDF) (Отчет). Университет Мэриленда. п. 38. Архивировано из оригинала (PDF) 10 июня 2011 года . Проверено 23 мая 2011 г.
  26. ^ Стеббенс, Алан. "Как это все началось" . Архивировано из оригинала 4 марта 2016 г. Проверено 22 мая 2011 г.
  27. ^ «Справочное руководство по языку и операциям Xerox APL» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
  28. ^ «СИГАПЛ» . Сигапл.орг . Проверено 17 июня 2013 г.
  29. ^ «Пятьдесят лет BASIC, языка программирования, сделавшего компьютеры персональными» . Время . 29 апреля 2014 года . Проверено 29 апреля 2018 г.
  30. ^ «МСМ Компьютерс М70/М700» . old-computers.com . Архивировано из оригинала 3 апреля 2018 года . Проверено 8 апреля 2018 г.
  31. ^ Стачняк, Стачняк (2011). Изобретение ПК: история MCM/70 . Издательство Университета Макгилла Куинса. ISBN  978-0-7735-3852-8 .
  32. ^ Миллер, Майкл (17 декабря 2014 г.). «ПК, проложившие путь к Альтаиру» . Журнал ПК . Зифф Дэвис . Проверено 29 апреля 2018 г.
  33. ^ «Семейный компьютер VideoBrain» , Popular Science , ноябрь 1978 г., реклама.
  34. ^ «Взгляд на SuperPet» . Вычислите! . Small System Services Inc., декабрь 1981 г. Проверено 29 апреля 2018 г.
  35. ^ Гейтс, Билл (31 января 1976 г.). «Открытое письмо любителям» . доморощенного компьютерного клуба Информационный бюллетень . Проверено 29 апреля 2018 г.
  36. ^ Хуэй, Роджер. «Вспоминая Кена Айверсона» . keiapl.org . КЕИАПЛ . Проверено 10 января 2015 г.
  37. ^ «Кеннет Э. Айверсон» . Премия Тьюринга ACM AM . АКМ . Проверено 10 января 2015 г.
  38. ^ «APL2: Ранние годы: можете и должны ли вы идти на компромисс по техническим вопросам?» . Глава SIGPLAN, посвященная языкам программирования массивов . АКМ . Проверено 10 января 2015 г.
  39. ^ Перейти обратно: а б с д Фалькофф, Адин Д. (1991). «Семейство систем APL IBM». IBM Systems Journal . 30 (4): 416–432. дои : 10.1147/sj.304.0416 . S2CID   19030940 .
  40. ^ «ИБМ АПЛ2» . ЭДМ2 . 09.10.2019 . Проверено 17 ноября 2021 г.
  41. ^ «APL2: Что нового» . IBM.com . ИБМ . Проверено 22 апреля 2018 г.
  42. ^ Микро АПЛ. «Обзор системы APL» . microapl.com . Микро АПЛ . Проверено 10 января 2015 г.
  43. ^ Робертсон, Грэм. «Личный взгляд на APL2010» . archive.vector.org.uk . Вектор – журнал Британской ассоциации APL. Архивировано из оригинала 2 апреля 2015 года . Проверено 10 января 2015 г.
  44. ^ Родригес, П.; Рохас, Дж.; Альфонсека, М.; Бургос, Дж.И. (1989). «Экспертная система химического синтеза, написанная на APL2/PC». ACM SIGAPL APL Quote Quad . 19 (4): 299–303. дои : 10.1145/75144.75185 . S2CID   16876053 .
  45. ^ «APL2: язык программирования для решения проблем, визуализации и доступа к базам данных» . www-03.ibm.com . ИБМ . Проверено 10 января 2015 г.
  46. ^ Пайк, Роб (25 марта 2018 г.). «Плющ» . ГоДок . Архивировано из оригинала 13 августа 2019 г.
  47. ^ «Часто задаваемые вопросы по языку Wolfram» . Вольфрам . Проверено 20 февраля 2020 г. LISP и APL оказали два первых влияния.
  48. ^ Техасские инструменты (1977). «Полностраничная реклама TI 745: представляем новый набор персонажей» . Компьютерный мир . 11 (27): 32 . Проверено 20 января 2015 г.
  49. ^ Диалог. «Шрифты и клавиатуры APL» . www.dyalog.com . Диалог . Проверено 19 января 2015 г.
  50. ^ Смит, Боб. «Клавиатура NARS2000» . www.sudleyplace.com . Боб Смит / NARS2000 . Проверено 19 января 2015 г.
  51. ^ «Введение в APL – символы APL» . www.microapl.co.uk . ООО «МикроАПЛ» . Проверено 8 января 2015 г.
  52. ^ Браун, Джеймс А.; Хоукс, Брент; Тримбл, Рэй (1993). «Расширение набора символов APL». ACM SIGAPL APL Quote Quad . 24 (1): 41–46. дои : 10.1145/166198.166203 .
  53. ^ Кромберг, Мортен. «Поддержка Unicode для APL» . archive.vector.org.uk . Вектор, журнал Британской ассоциации APL. Архивировано из оригинала 20 января 2015 года . Проверено 8 января 2015 г.
  54. ^ Сюй, Аарон. «Информатика и образование с помощью APL» . Диалог, ООО . Проверено 15 июля 2016 г.
  55. ^ Dyalog, Inc. Шрифты и клавиатуры APL. https://www.dyalog.com/apl-font-keyboard.htm
  56. ^ Перейти обратно: а б МикроАПЛ. «Операторы» . www.microapl.co.uk . МикроАПЛ . Проверено 12 января 2015 г.
  57. ^ Примитивные функции. «Примитивные функции» . www.microapl.co.uk/ . Проверено 1 января 2015 г.
  58. ^ Рабочая среда. «Рабочее пространство» . www.microapl.co.uk . Проверено 1 января 2015 г.
  59. ^ "пример" . Catpad.net. Архивировано из оригинала 8 июля 2013 года . Проверено 17 июня 2013 г.
  60. ^ «Ввод символов APL» . www.microapl.co.uk . Проверено 1 января 2015 г.
  61. ^ Дики, Ли (1993). «Список схем транслитерации APL» . Архивировано из оригинала 29 сентября 2006 г.
  62. ^ Айверсон, Кентукки (август 1980 г.). «Нотация как инструмент мышления» . Коммуникации АКМ . 23 (8): 444–465. дои : 10.1145/358896.358899 . Архивировано из оригинала 20 сентября 2013 г.
  63. ^ Батенбург. «Эффективность АПЛ» . www.ekevanbatenburg.nl . Проверено 1 января 2015 г.
  64. ^ Ваксман. «Великое программирование APL» (PDF) . www.vaxman.de . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 1 января 2015 г.
  65. ^ Янко, Вольфганг (май 1987 г.). «Исследование эффективности использования APL для программирования машины вывода». ACM SIGAPL APL Quote Quad . 17 (4): 450–456. дои : 10.1145/384282.28372 .
  66. ^ Бореалис. «Почему АПЛ?» . www.aplborealis.com . Проверено 1 января 2015 г.
  67. ^ Айверсон, Кеннет Э. (1987). «Словарь АПЛ» . www.jsoftware.com . Проверено 20 января 2015 г.
  68. ^ Перейти обратно: а б с д Это ж «Концепции APL» . Microapl.co.uk . Проверено 3 февраля 2010 г.
  69. ^ «Теория вложенных массивов» . Ниал.com. Архивировано из оригинала 9 июля 2011 г. Проверено 3 февраля 2010 г.
  70. ^ Перейти обратно: а б с «Программирование на APL», Боман, Фрёберг, Студенческая литература , ISBN   91-44-13162-3
  71. ^ Айверсон, Кеннет Э. (1983). «Синтаксис и семантика APL» . www.jsoftware.com . ИП Шарп Ассошиэйтс . Проверено 11 января 2015 г.
  72. ^ МикроАПЛ. «Примитивы APL» . www.microapl.co.uk . МикроАПЛ . Проверено 11 января 2015 г.
  73. ^ «Шрифт APL — дополнительные глифы APL» . wiki.nars2000.org . НАРС2000 . Проверено 11 января 2015 г.
  74. ^ Фокс, Ральф Л. «Систематически случайные числа» . www.sigapl.org . СИГАПЛ . Проверено 11 января 2015 г.
  75. ^ Скоулз, Джон (26 января 2009 г.). Игра жизни Конвея в APL (видео). YouTube . Проверено 20 ноября 2021 г.
  76. Дополнительные технические подробности можно найти в статье APL Wiki «Игра жизни Конвея» . Проверено 20 ноября 2021 г.
  77. ^ Макдоннелл, Э.Э. Введение в справочник в APL , APL Press, 1981. ( полный скан книги )
  78. ^ Ачарья, Р; Перейра, (904567457) NE Язык программирования APL. Архивировано 3 ноября 2021 г. в Wayback Machine . Статья по CS5314 (Концепции языков программирования) в Технологическом институте Вирджинии.
  79. ^ АПЛ Вики. Конференция АПЛ . Проверено 13 октября 2021 г.
  80. ^ Джейкоб Уильямс. Дегенеративная коника: Новая кровь . Проверено 13 октября 2021 г.
  81. ^ АПЛ Вики. Логотип АПЛ . Проверено 20 мая 2022 г.
  82. ^ Перейти обратно: а б «Годовой отчет за 2017 год» (PDF) . СимКорп. 1 февраля 2018 г. Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 3 апреля 2018 г. София — это платформа прямого управления инвестициями, такая как SimCorp Dimension. ... София основана на языке кодирования APL, как и некоторые части SimCorp Dimension.
  83. ^ Ли, Жорж; Лелуш, Радди; Мейссонье, Винсент; Зарри, Джан Пьеро (1 сентября 1982 г.). «Использование APL в среде искусственного интеллекта» . ACM SIGAPL APL Quote Quad . 13 (1): 183–191. дои : 10.1145/390006.802242 . Проверено 3 апреля 2018 г.
  84. ^ Фордайс, К.; Салливан, Г. (1985). «Средства разработки искусственного интеллекта» . APL Котировка Quad . APL 85 Конф. Учеб. (15): 106–113. дои : 10.1145/255315.255347 .
  85. ^ Альфонсека, Мануэль (июль 1990 г.). «Нейронные сети в APL» . ACM SIGAPL APL Quote Quad . 20 (4): 2–6. дои : 10.1145/97811.97816 . Проверено 3 апреля 2018 г.
  86. ^ Кромберг, Мортен. «Программирование роботов в APL» . www.dyalog.com/ . Проверено 6 января 2015 г.
  87. ^ Холмс, WN (май 1978 г.). «Является ли APL языком программирования?» . Компьютерный журнал . 21 (2): 128–131. дои : 10.1093/comjnl/21.2.128 .
  88. ^ Сюй, Аарон (18 ноября 2017 г.). «Шаблоны проектирования против антишаблонов в APL» . www.functionconf.com . Архивировано из оригинала 23 марта 2018 года . Проверено 7 апреля 2018 г.
  89. ^ Магненат-Тальманн, Надя; Тельманн, Дэниел (1985). Теория и практика компьютерной анимации . Спрингер-Верлаг . п. 38. ISBN  9784431684336 . Проверено 3 апреля 2018 г. Digital Effects — еще одна продюсерская компания, работавшая над «Троном». Они использовали систему лазерного сканирования для оцифровки, хранения и воспроизведения изображений. Джадсон Роузбуш, президент Digital Effects, является основным разработчиком APL VISION и FORTRAN VISION, двух пакетов компьютерной анимации, которые используются в настоящее время.
  90. ^ Гуцелл, Сэм (17 октября 2017 г.). «Симулятор Штормграда на Dyalog '16» . www.optima-systems.co.uk . Оптима Системы . Проверено 3 апреля 2018 г. Stormwind — это [3D-симулятор катания на лодках], вызвавший огромный интерес в сообществе APL.
  91. ^ «Плавное сотрудничество между OP-Pohjola и модификацией приложений с поддержкой Tieto» [Плавное сотрудничество между OP-Pohjola и модификацией приложений с поддержкой Tieto] (PDF) . www.tieto.com (на финском языке). Информация . Архивировано из оригинала (PDF) 9 октября 2022 г. Проверено 3 апреля 2018 г. [ постоянная мертвая ссылка ]
  92. ^ «Ви идаг» [Мы сегодня]. profdoccare.se (на шведском языке) . Проверено 3 апреля 2018 г. Благодаря выбору APL в качестве технической платформы относительно легко быстро построить решение, которое можно назвать исполняемым прототипом (перевод с оригинала).
  93. ^ Бреннер, Чарльз. «Технология ДНК-идентификации и APL» . dna-view.com . Презентация на конференции пользователей APL 2005 года . Проверено 9 января 2015 г.
  94. ^ Бреннер, Чарльз. «ДНК повсюду – возможность для APL» . www.youtube.com . YouTube. Архивировано из оригинала 14 ноября 2021 г. Проверено 9 января 2015 г.
  95. ^ «Награды – 1973 – Лоуренс Брид» . Ассоциация вычислительной техники. Архивировано из оригинала 2 апреля 2012 года.
  96. ^ «Награды – 1973 – Ричард Латвелл» . Ассоциация вычислительной техники. Архивировано из оригинала 2 апреля 2012 года.
  97. ^ «Награды – 1973 – Роджер Мур» . Ассоциация вычислительной техники. Архивировано из оригинала 2 апреля 2012 года.
  98. ^ «ИБМ 5100» . old-computers.com . Архивировано из оригинала 30 апреля 2018 года . Проверено 8 апреля 2018 г.
  99. ^ «Добро пожаловать, IBM, в персональные компьютеры» . Байт . Декабрь 1975 г. с. 90 . Проверено 29 апреля 2018 г.
  100. ^ «Хронология APL и его влияние на развитие компьютерного языка» . www.sigapl.org . АКМ . Проверено 29 апреля 2018 г.
  101. ^ Ларри Брид (август 2006 г.). «Как мы добрались до APL\1130» . Вектор (Британская ассоциация APL) . 22 (3). ISSN   0955-1433 . Архивировано из оригинала 12 мая 2008 года . Проверено 29 апреля 2018 г.
  102. ^ Роджер Мур (2005). «История разделения времени и сети IP Sharp Associates» . Роджердмур.ca . Роджер Мур. Архивировано из оригинала 4 апреля 2019 года . Проверено 7 марта 2018 г.
  103. ^ Блюменталь, Марсия (18 мая 1981 г.). «VAX-11 приобретают процессор APL» . Компьютерный мир . Проверено 22 апреля 2018 г.
  104. ^ Перейти обратно: а б с «Премия Кеннета Э. Айверсона за выдающийся вклад в APL» . Глава SIGPLAN , посвященная языкам программирования массивов (SIGAPL). Архивировано из оригинала 26 февраля 2012 года.
  105. ^ Марк Шора (26 января 2021 г.). «Программное обеспечение для входа в систему объявляет о входе в систему APL2» . Программное обеспечение для входа в систему . Проверено 17 ноября 2021 г.
  106. ^ Келли, Р.А. (1973). «APLGOL, экспериментальный язык структурированного программирования» . Журнал исследований и разработок IBM . 17 :69–73. дои : 10.1147/rd.171.0069 .
  107. ^ Джонстон, Рональд Л. (июль 1977 г.). «APLGOL: Средства структурированного программирования для APL» . Журнал Hewlett-Packard.
  108. ^ Сайт ООО «Диалог» . Проверено 6 июня 2018 г.
  109. ^ «Диалог в 25» (PDF) . Журнал «Вектор» . Британская ассоциация APL. Сентябрь 2008 года . Проверено 14 апреля 2018 г. [ постоянная мертвая ссылка ]
  110. ^ Кромберг, Мортен (22 октября 2007 г.). «Массивы объектов» (PDF) . Материалы симпозиума 2007 года по динамическим языкам . п. 20. дои : 10.1145/1297081.1297087 . ISBN  9781595938688 . S2CID   18484472 . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 27 августа 2018 г.
  111. ^ Скоулз, Джон. «D: Функциональное подмножество Dyalog APL» . Британская ассоциация APL.
  112. ^ Скоулз, Джон. «Перевод D-функций в неявную форму» . ООО "Диалог"
  113. ^ «Диалог – Цены и лицензии» .
  114. ^ «Премия Айверсона 2016 года присуждается генеральному директору и исполнительному директору Dyalog» . Проверено 6 июня 2018 г.
  115. ^ «Система исследования вложенных массивов - NARS2000: экспериментальный интерпретатор APL» . НАРС2000 . Программное обеспечение Садли Плейс . Проверено 10 июля 2015 г.
  116. ^ «APLX снят с коммерческой продажи, но его можно скачать бесплатно» . Microapl.com . Проверено 14 апреля 2018 г.
  117. ^ «Йорк АПЛ» .
  118. ^ «ГНУ АПЛ» . каталог.fsf.org . Каталог свободного программного обеспечения . Проверено 28 сентября 2013 г.
  119. ^ Столлман, Ричард М. «RMS Berättar» . Архивировано из оригинала 26 ноября 2018 года . Проверено 22 апреля 2018 г.
  120. ^ Бадд, Тимоти (1988). Компилятор APL . Спрингер-Верлаг. ISBN  978-0-387-96643-4 .
  121. ^ «Что такое АПЛ?» . www.sigapl.org . СИГАПЛ . Проверено 20 января 2015 г.
  122. ^ Цзюй, Цзы-Цзин; Чинг, Вай-Ми (1991). «Использование параллелизма данных APL на машине MIMD с общей памятью». Информационный бюллетень Уведомления ACM SIGPLAN . 26 (7): 61–72. дои : 10.1145/109625.109633 . S2CID   8584353 .
  123. ^ Сюй, Аарон В.; Боуман, Уильям Дж. «Возвращаясь к APL в современную эпоху» (PDF) . www.cs.princeton.edu . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 20 января 2015 г.
  124. ^ Чинг, В.-М.; Джу, Д. (1991). «Выполнение автоматически распараллеливаемых программ APL на RP3» . Журнал исследований и разработок IBM . 35 (5/6): 767–777. дои : 10.1147/rd.355.0767 . Архивировано из оригинала 3 марта 2016 года . Проверено 20 января 2015 г.
  125. ^ Блеллок, Гай Э.; Сабот, Гэри В. (1990). «Компиляция языков, ориентированных на коллекции, на массово-параллельных компьютерах». Журнал параллельных и распределенных вычислений . 8 (2): 119–134. CiteSeerX   10.1.1.51.5088 . дои : 10.1016/0743-7315(90)90087-6 . Языки, ориентированные на коллекции, включают APL, APL2.
  126. ^ Йендршок, Йоханнес; Хоффманн, Рольф; Эдигер, Патрик; Келлер, Йорг. «Реализация параллельных функций данных, подобных APL, на машине GCA» (PDF) . www.fernuni-hagen.de . стр. 1–6. Архивировано из оригинала (PDF) 22 января 2015 года . Проверено 22 января 2015 г. GCA – Глобальная клеточная автоматизация. По сути, это массовая параллель. «APL был выбран из-за способности выражать матричные и векторные структуры.
  127. ^ Бреннер, Норман (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 .
  128. ^ Гэмбл, диджей; Хобсон, РФ (1989). «К графической/процедурной среде для создания генераторов модулей СБИС». Материалы конференции Тихоокеанская конференция IEEE по коммуникациям, компьютерам и обработке сигналов . стр. 606–611. дои : 10.1109/PACRIM.1989.48437 . S2CID   7921438 . Описаны генераторы модулей СБИС. APL и C, как примеры интерпретируемых и компилируемых языков, могут быть подключены к усовершенствованному графическому дисплею.
  129. ^ Ли, Роберт С. (1983). «Две реализации APL» . Журнал ПК . 2 (5): 379 . Проверено 20 января 2015 г.
  130. ^ «Компьютерный язык APL» . МАРТА и ЛАМА . Архивировано из оригинала 13 февраля 2015 года . Проверено 20 января 2015 г.
  131. ^ Мецгер, Роберт; Вэнь, Чжаофан (2000). Автоматическое распознавание и замена алгоритмов: новый подход к оптимизации программ . Пресса МТИ. ISBN  9780262133685 . Проверено 6 мая 2018 г.
  132. ^ Снайдер, Лоуренс (1982). «Распознавание и выбор идиом для оптимизации кода». Акта Информатика . 17 (3). дои : 10.1007/BF00264357 . S2CID   8369972 .
  133. ^ Ченг, Фэн Шэн (1981). Сопоставление идиом: метод оптимизации компилятора APL (Диссертация). Университет штата Айова . Проверено 6 мая 2018 г.
  134. ^ «Распознавание идиом» . dialog.com . Проверено 6 мая 2018 г.
  135. ^ Строун, Джордж О. (март 1977 г.). «Действительно ли APL нуждается в анализе во время выполнения?». Программное обеспечение: практика и опыт . 7 (2): 193–200. дои : 10.1002/спе.4380070207 . S2CID   1463012 .
  136. ^ Перейти обратно: а б «Руководство пользователя компилятора» (PDF) . www.dyalog.com . ООО «Диалог». Архивировано (PDF) оригиналом 09.10.2022 . Проверено 7 мая 2018 г.
  137. ^ Перейти обратно: а б Дрисколл, Грэм С. младший; Орт, Дональд Л. (ноябрь 1986 г.). «Составление APL: переводчик APL Йорктауна». Журнал исследований и разработок IBM . 30 (6): 583–593. дои : 10.1147/рд.306.0583 . S2CID   2299699 .
  138. ^ «Хронология АПЛ» . www.sigapl.org . АКМ . Проверено 7 мая 2018 г.
  139. ^ Вай-Ми, Чинг (ноябрь 1986 г.). «Анализ программы и генерация кода в компиляторе APL/370». Журнал исследований и разработок IBM . 30 (6): 594–602. дои : 10.1147/рд.306.0594 . S2CID   17306407 .
  140. ^ «Проект АПЕКС» .
  141. ^ «Компилятор APL (сообщение Джима Вейганга в группу новостей comp.lang.apl)» . 5 апреля 1994 г.

Дальнейшее чтение [ править ]

Видео [ править ]

Внешние ссылки [ править ]

Интернет-ресурсы [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 58FCE5337328B2494E632C02D1E4A005__1717638840
URL1:https://en.wikipedia.org/wiki/A_Programming_Language
Заголовок, (Title) документа по адресу, URL1:
APL (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)