APL
APL (вимовляють «ей-пі-ель», названа за книгою A Programming Language)[5] — інтерактивна[en] масиво-орієнтована мова програмування та інтегроване середовище розробки, що доступні від низки розробників[6] і для більшості комп'ютерних платформ[7]. Вона ґрунтується на математичній нотації, винайденій Кеннетом Айверсоном і його колегами, що пропонує спеціальні засоби для проектування і розробки цифрових обчислювальних систем, як апаратного забезпечення, так і програм[8].
APL | |
---|---|
Парадигма | масивоорієнтована, функційна, структурна, модульна |
Дата появи | 1964 |
Творці | Кеннет Айверсон |
Розробник | Кеннет Айверсон |
Система типізації | динамічна |
Основні реалізації | IBM APL2, Dyalog APL, APL2000, Sharp APL, APLX[en] |
Діалекти | A+, Dyalog APL, APLNext |
Під впливом від | математична нотація |
Вплинула на | J,[1] K,[2] Mathematica, MATLAB,[3] Nial,[4] PPL, Q |
APL має поєднання унікальних і порівняно рідкісних функцій, які привертають увагу програмістів і роблять її плідною мовою програмування:[9]
- Вона лаконічна, використовує символи, а не слова і застосовує функції до всіх масивів без використання явних циклів.
- Абстрактна, орієнтована на розв'язання задач, орієнтована на написання програм незалежних від архітектури комп'ютера або операційної системи.
- Має одне просте, послідовне і рекурсивне правило пріоритету: правий аргумент функції — це результат всього виразу праворуч від неї.
- Це полегшує розв'язання проблем на високому рівні абстракції.
APL використовують в науковій[10], актуарній[9], статистичній[11] і фінансовій сферах, де вона застосовується практиками для своїх задач і програмістами для розробки комерційних застосувань. Свого часу вплинула на розвиток електронних таблиць, функціонального програмування,[12] і математичні пакети програм[3]. Вона також надихнула винахідників декількох інших мов програмування.[1][2][4] Її також пов'язують з швидким і легким розвитком проектів в нестабільному бізнес-середовищі[13].
Історія
ред.Перше втілення того, що пізніше перетворилося на мову програмування APL, було опубліковане і формалізоване в A Programming Language[5], книзі, що описує нотацію винайдену 1957 року Кеннетом Е. Айверсоном в Гарвардському університеті. Айверсон розробив математичну нотацію для роботи з масивами, якої він навчав своїх учнів.
1960 року він почав працювати на IBM, і, працюючи з Адіном Фалкофом, створив APL на основі своєї нотації. Вона була використана всередині IBM для коротких дослідних звітів на комп'ютерних системах, таких як Burroughs B5000 і його стековому механізмі, коли стекові машини оцінювалися порівняно з регістровими машинами IBM з метою розробки майбутніх комп'ютерів.
Крім того, 1960 року Айверсон уже використовував свою нотацію в чернетках 6-ї глави, що називалася «Мова програмування» для книги, яку він писав з Фредом Бруксом, Automatic Data Processing, яка потім буде опублікована 1963 року[14][15].
1962 року відома перша спроба використати нотацію для стандартизації набору інструкцій для машин, які пізніше стали сімейством IBM System/360.
1963 року д-р Герберт Хеллерман, що працював в науково-дослідному інституті IBM Systems, реалізував частину позначень на комп'ютері IBM 1620, і він був використаний студентами в спеціальному курсі середньої школи для розрахунків трансцендентних функцій підсумовуванням рядів. Студенти випробували свій код в трансляторі доктора Хеллермана. Цю реалізацію частини позначень називають PAT (Personalized Array Translator)[16].
1963 року Фалькоф, Айверсон, та Едвард Сассенгут, що на той час працювали на IBM, використали нотацію для формального опису архітектури і функціональності серії машин IBM System/360, що зрештою втілилося в статті, опублікованій в IBM Systems Journal 1964 року. Після публікації команда звернула свою увагу на втілення нотації в комп'ютерній системі. Одним з мотивів для цього фокусу на реалізації був інтерес з боку John L. Lawrence, який мав нові обов'язки в Science Research Associates, освітній компанії, купленій IBM 1964 року. Лоуренс попрохав Айверсона і його групу, щоб вони допомогли із використанням мови як інструменту для розробки та використання комп'ютерів в освіті[17].
Після того, як Lawrence M. Breed і Philip S. Abrams зі Стенфордського університету приєднались до команди IBM Research, вони продовжували свої попередні роботи з реалізації запрограмованих в FORTRAN IV частини нотацій, що було зроблено для IBM 7090 під управлінням операційної системи IBSYS. Ця робота була закінчена в кінці 1965 року і пізніше стала відома як IVSYS (Iverson System, система Айверсона). Основи цієї реалізації були докладно описані Abrams в Stanford University Technical Report, «An Interpreter for Iverson Notation» in 1966.[18], Як і система PAT Геллермана раніше, ця реалізація не включала набір символів APL, а використовувала спеціальні зарезервовані слова англійською для функцій і операторів. Система була пізніше адаптована для системи з розділенням часу і, в листопаді 1966 року, була перепрограмована для комп'ютерів IBM/360 Model 50, що працювали в режимі розділення часу, і далі була використана всередині IBM[19].
Реалізації APL
ред.Відкриті
ред.- GNU APL [Архівовано 22 січня 2014 у Wayback Machine.]
- NARS2000 [Архівовано 23 серпня 2013 у WebCite] — сучасний APL для Windows
- OpenAPL на SourceForge.net
Комерційні
ред.- Dyalog APL [Архівовано 22 листопада 2020 у Wayback Machine.]
- IBM APL2 [Архівовано 4 серпня 2008 у Wayback Machine.]
- APL2000 [Архівовано 26 серпня 2020 у Wayback Machine.]
- APLNext: APL for .Net
- MicroAPL Ltd. [Архівовано 22 липня 2014 у Wayback Machine.]
- OpenAPL [Архівовано 4 квітня 2019 у Wayback Machine.]
Див. також
ред.
Примітки
ред.- ↑ а б A Bibliography of APL and J. Jsoftware.com. Архів оригіналу за 23 серпня 2011. Процитовано 3 лютого 2010.
- ↑ а б Kx Systems - An Interview with Arthur Whitney - Jan 2004. Kx.com. 4 січня 2004. Архів оригіналу за 23 серпня 2011. Процитовано 3 лютого 2010.
- ↑ а б The Growth of MatLab - Cleve Moler (PDF). Архів (PDF) оригіналу за 23 серпня 2011. Процитовано 3 лютого 2010. [Архівовано 2011-09-19 у Wayback Machine.]
- ↑ а б About Q'Nial. Nial.com. Архів оригіналу за 23 серпня 2011. Процитовано 3 лютого 2010.
- ↑ а б Iverson, Kenneth E. (1962). A Programming Language. Wiley. ISBN 0-471-43014-5. Архів оригіналу за 4 червня 2009. Процитовано 19 листопада 2012.
- ↑ an experimental APL interpreter. NARS2000. Архів оригіналу за 23 серпня 2013. Процитовано 3 лютого 2010.
- ↑ Dyalog V12 Platforms. Dyalog.com. Архів оригіналу за 3 лютого 2010. Процитовано 3 лютого 2010.
- ↑ Creveling, C.J. Experimental use of A Programming Language /APL/ at the Goddard Space Flight Center. Goddard Space Flight Center. NASA. Архів оригіналу за 23 серпня 2013. Процитовано 17 червня 2011.
- ↑ а б Bergquist, Gary A. (1999). The future of APL in the insurance world. ACM SIGAPL APL Quote Quad. New York, N.Y. 30 (1): 16—21. doi:10.1145/347194.347203. ISSN 0163–6006.
{{cite journal}}
: Перевірте значення|issn=
(довідка)Обслуговування CS1: Сторінки зі значенням параметра postscript, що збігається зі стандартним значенням в обраному режимі (посилання) - ↑ APLX version 4 – from the viewpoint of an experimental physicist. Vector 23.3. Vector.org.uk. 20 травня 2008. Архів оригіналу за 25 січня 2010. Процитовано 3 лютого 2010. [Архівовано 2010-01-25 у Wayback Machine.]
- ↑ OOSTATS — A New Approach to Statistics via APL[недоступне посилання з червня 2019]
- ↑ ACM Award Citation – John Backus. 1977. Awards.acm.org. 3 грудня 1924. Архів оригіналу за 23 серпня 2013. Процитовано 3 лютого 2010. [Архівовано 2008-02-12 у Wayback Machine.]
- ↑ Agile Approach. Agile Approach. Архів оригіналу за 23 серпня 2013. Процитовано 3 лютого 2010.
- ↑ Iverson, Kenneth E., «Automatic Data Processing: Chapter 6: A programming language» [Архівовано 4 червня 2009 у Wayback Machine.], 1960, DRAFT copy for Brooks and Iverson 1963 book, «Automatic Data Processing».
- ↑ Brooks, Fred; Iverson, Kenneth, (1963), Automatic Data Processing, John Wiley & Sons Inc.
- ↑ Hellerman, H., «Experimental Personalized Array Translator System», Communications of the ACM, 7, 433 (July, 1964).
- ↑ Falkoff, Adin D.; Iverson, Kenneth E., «The Evolution of APL» [Архівовано 19 липня 2013 у Wayback Machine.], ACM SIGPLAN Notices 13, 1978-08.
- ↑ Abrams, Philip S., An interpreter for «Iverson notation» [Архівовано 16 грудня 2010 у Wayback Machine.], Technical Report: CS-TR-66-47, Department of Computer Science, Stanford University, August 1966.
- ↑ Haigh, Thomas, «Biographies: Kenneth E. Iverson», IEEE Annals of the History of Computing, 2005
Джерела
ред.- An APL Machine (1970 Stanford doctoral dissertation by Philip Abrams)
- A Personal History Of APL [Архівовано 4 червня 2011 у Wayback Machine.] (1982 article by Michael S. Montalbano)
- McIntyre, Donald B. (1991). Language as an intellectual tool: From hieroglyphics to APL (PDF). IBM Systems Journal. 30 (4). Архів (PDF) оригіналу за 4 травня 2006. Процитовано 19 листопада 2012.
- Iverson, Kenneth E. (1991). A Personal view of APL (PDF). IBM Systems Journal. 30 (4). Архів (PDF) оригіналу за 27 лютого 2008. Процитовано 19 листопада 2012.
- 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.
- Askoolum, Ajay (August 2006). System Building with APL + Win. Wiley. ISBN 978-0-470-03020-2.
- Falkoff, Adin D.; Iverson, Kenneth E.; Sussenguth, Edward H. (1964). A Formal Description of SYSTEM/360 (PDF). IBM Systems Journal. New York. 3 (3). Архів (PDF) оригіналу за 27 лютого 2008. Процитовано 19 листопада 2012.
- History of Programming Languages, chapter 14[прояснити]
- Banon, Gerald Jean Francis (1989). Bases da Computacao Grafica. Rio de Janeiro: Campus. с. 141.
- LePage, Wilbur R. (1978). Applied A.P.L. Programming. Prentice Hall.
Посилання
ред.- APL, каталог посилань Open Directory Project
- comp.lang.apl newsgroup (Google Groups archive [Архівовано 10 листопада 2012 у Wayback Machine.])
- APL Wiki [Архівовано 10 лютого 2011 у Wayback Machine.]
- SIGAPL [Архівовано 9 лютого 2012 у Wayback Machine.]
- Знайомство з мовою програмування APL [Архівовано 17 лютого 2021 у Wayback Machine.] 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 [Архівовано 25 червня 2012 у Wayback Machine.]
- OpenAPL project page on Source Forge [Архівовано 30 листопада 2012 у Wayback Machine.]