APL (вимовляють «ей-пі-ель», названа за книгою A Programming Language) — масиво-орієнтована мова програмування та інтегроване середовище розробки, що доступні від низки розробників і для більшості комп'ютерних платформ. Вона ґрунтується на математичній нотації, винайденій Кеннетом Айверсоном і його колегами, що пропонує спеціальні засоби для проектування і розробки цифрових обчислювальних систем, як апаратного забезпечення, так і програм.
APL має поєднання унікальних і порівняно рідкісних функцій, які привертають увагу програмістів і роблять її плідною мовою програмування: Вона лаконічна, використовує символи, а не слова і застосовує функції до всіх масивів без використання явних циклів. Абстрактна, орієнтована на розв'язання задач, орієнтована на написання програм незалежних від архітектури комп'ютера або операційної системи. Має одне просте, послідовне і рекурсивне правило пріоритету: правий аргумент функції — це результат всього виразу праворуч від неї. Це полегшує розв'язання проблем на високому рівні абстракції.
APL використовують в науковій , актуарній, статистичнійOOSTATS — A New Approach to Statistics via APL і фінансовій сферах, де вона застосовується практиками для своїх задач і програмістами для розробки комерційних застосувань. Свого часу вплинула на розвиток електронних таблиць, функціонального програмування, і математичні пакети програм. Вона також надихнула винахідників декількох інших мов програмування. Її також пов'язують з швидким і легким розвитком проектів в нестабільному бізнес-середовищі.
Історія
Перше втілення того, що пізніше перетворилося на мову програмування APL, було опубліковане і формалізоване в A Programming Language, книзі, що описує нотацію винайдену 1957 року Кеннетом Е. Айверсоном в Гарвардському університеті. Айверсон розробив математичну нотацію для роботи з масивами, якої він навчав своїх учнів.
1960 року він почав працювати на IBM, і, працюючи з Адіном Фалкофом, створив APL на основі своєї нотації. Вона була використана всередині IBM для коротких дослідних звітів на комп'ютерних системах, таких як Burroughs B5000 і його стековому механізмі, коли стекові машини оцінювалися порівняно з регістровими машинами IBM з метою розробки майбутніх комп'ютерів.
Крім того, 1960 року Айверсон уже використовував свою нотацію в чернетках 6-ї глави, що називалася «Мова програмування» для книги, яку він писав з Фредом Бруксом, Automatic Data Processing, яка потім буде опублікована 1963 рокуIverson, Kenneth E., «Automatic Data Processing: Chapter 6: A programming language» , 1960, DRAFT copy for Brooks and Iverson 1963 book, «Automatic Data Processing».Brooks, Fred; Iverson, Kenneth, (1963), Automatic Data Processing, John Wiley & Sons Inc..
1962 року відома перша спроба використати нотацію для стандартизації набору інструкцій для машин, які пізніше стали сімейством IBM System/360.
1963 року д-р Герберт Хеллерман, що працював в науково-дослідному інституті IBM Systems, реалізував частину позначень на комп'ютері , і він був використаний студентами в спеціальному курсі середньої школи для розрахунків трансцендентних функцій підсумовуванням рядів. Студенти випробували свій код в трансляторі доктора Хеллермана. Цю реалізацію частини позначень називають PAT (Personalized Array Translator)Hellerman, H., «Experimental Personalized Array Translator System», Communications of the ACM, 7, 433 (July, 1964)..
1963 року Фалькоф, Айверсон, та Едвард Сассенгут, що на той час працювали на IBM, використали нотацію для формального опису архітектури і функціональності серії машин IBM System/360, що зрештою втілилося в статті, опублікованій в IBM Systems Journal 1964 року. Після публікації команда звернула свою увагу на втілення нотації в комп'ютерній системі. Одним з мотивів для цього фокусу на реалізації був інтерес з боку John L. Lawrence, який мав нові обов'язки в , освітній компанії, купленій IBM 1964 року. Лоуренс попрохав Айверсона і його групу, щоб вони допомогли із використанням мови як інструменту для розробки та використання комп'ютерів в освітіFalkoff, Adin D.; Iverson, Kenneth E., «The Evolution of APL» , ACM SIGPLAN Notices 13, 1978-08..
Після того, як і зі Стенфордського університету приєднались до команди IBM Research, вони продовжували свої попередні роботи з реалізації запрограмованих в FORTRAN IV частини нотацій, що було зроблено для IBM 7090 під управлінням операційної системи IBSYS. Ця робота була закінчена в кінці 1965 року і пізніше стала відома як IVSYS (Iverson System, система Айверсона). Основи цієї реалізації були докладно описані Abrams в Stanford University Technical Report, «An Interpreter for Iverson Notation» in 1966.Abrams, Philip S., An interpreter for «Iverson notation» , Technical Report: CS-TR-66-47, Department of Computer Science, Stanford University, August 1966., Як і система PAT Геллермана раніше, ця реалізація не включала набір символів APL, а використовувала спеціальні зарезервовані слова англійською для функцій і операторів. Система була пізніше адаптована для системи з розділенням часу і, в листопаді 1966 року, була перепрограмована для комп'ютерів IBM/360 Model 50, що працювали в режимі розділення часу, і далі була використана всередині IBMHaigh, Thomas, «Biographies: Kenneth E. Iverson», IEEE Annals of the History of Computing, 2005.
Реалізації APL
Відкриті GNU APL NARS2000 — сучасний APL для Windows
Комерційні Dyalog APL IBM APL2 APL2000 APLNext: APL for .Net MicroAPL Ltd. OpenAPL
Див. також
J (мова програмування)
Примітки
Джерела An APL Machine (1970 Stanford doctoral dissertation by Philip Abrams) A Personal History Of APL (1982 article by )
A Programming Language by Kenneth E. Iverson APL in Exposition by Kenneth E. Iverson Brooks, Frederick P.; Kenneth Iverson (1965). Automatic Data Processing, System/360 Edition. ISBN 0-471-10605-4.
History of Programming Languages, chapter 14
Посилання
comp.lang.apl newsgroup (Google Groups archive ) APL Wiki SIGAPL Знайомство з мовою програмування APL Oleksandr Nechai, YouTube OOPAL: Integrating Array Programming in Object-Oriented Programming An introduction to Object Oriented APL Comparison of Black-Scholes options pricing model in many languages, including APL OpenAPL project page on Source Forge