APL проти A проти J проти J проти K?


78

Мовний масив, хоч і захоплюючий, не бентежить до кінця. Чи є причина вибрати один із J, K, APL чи A? Здається, жоден із цих варіантів не має відкритих джерел - чи існують версії з відкритим кодом? Я хотів би розширити свій розум, але я все ще спантеличений.

Відповіді:


135

Відмінності між цими мовами відносно незначні. APL "належний" має переваги та недоліки оригінального символічного позначення. (Існують незначні зміни, які були внесені в символ, встановлений протягом багатьох років, але всі вони досить вірні оригінальному баченню)

Мова A + доступна з відкритим кодом. Він суттєво відрізняється від "класичних" APL, але схожий на них, зберігаючи більшість основних наборів символів. Я відчуваю, що це не було в курсі змін технологій. Це було попередником К.

Мови в сімействі масивів, які відійшли від характерного набору символів APL, включають J, K та Nial. Ніал використовує англійські слова замість символів і має інтерпретатор з відкритим кодом під назвою Q'Nial. K та J в основному покладаються на символи, але вони почерпнуті з набору символів ASCII. Слова можуть використовуватися замість символів у цих мовах, однак, просто присвоюючи визначення.

Сімейство мов програмування APL є переважно власними з моменту першого появи APL як продукту IBM у 1964 р. Власні мови масивів, мабуть, мають більшу підтримку та швидший розвиток нових можливостей, ніж альтернативи з відкритим кодом. Я не впевнений, як усі конкуренти виступають один проти одного, але Dyalog APL, безумовно, активно працює над просуванням їх впровадження мови як сучасної технології. APL2000 пропонує продукти для Unix, Linux та Windows, включаючи VisualAPL для .Net (на пенсії). Компанія MicroAPL Ltd пропонує APLX (на пенсії).

K - спеціалізована мова, яка більше не продається самостійно. Натомість Kx Systems продає базу даних Kdb + та її мову Q (запитів), обидві написані на K. Це потужний спеціалізований інструмент, призначений для високошвидкісної обробки потокових даних. Це суттєво відрізняється від оригінального підходу APL. Продукція Kx Systems дорога, і користувачі здебільшого працюють у сфері фінансів.

APL був розроблений і в основному розроблений Кен Айверсон. Після повної кар’єри застосування та вдосконалення APL у комерційних програмах він звернувся до завдання зробити "раціоналізовану" редакцію, яка коригувала б аспекти мови, якою він виявив незадоволений протягом багатьох років. Цей новий погляд на тему називається J. Різниця між J та APL наведена в статті на вікі J Software. Однією помітною зміною є усунення синтаксису індексації масиву. Однак найбільшою особливістю є мовчазна форма, в якій програми пишуться шляхом складання функцій без посилання на їх аргументи. Tacit J тісно пов'язаний із "безточковим" стилем, який зустрічається у функціональних мовах програмування, але відрізняється тим, що ця форма є фундаментальною для мови J.

Для особи, яка бажає вивчити мову масивів, моя порада - вибрати серед Dyalog APL, APLX, J та Q'Nial. Dyalog APL (особливо для Windows) або APLX (особливо для Linux), швидше за все, найкращий для тих, хто хоче використовувати основну символіку, яка настільки характерна для APL, і хто хоче міцного зв'язку із спільнотою APL в цілому. J може бути найкращим для тих, хто хоче створювати веб-додатки або зосередитись на математиці (наприклад, Project Euler,), а особливо тим, хто захоплений мовчазним стилем, який він підкреслює. Q'Nial - це те, що я б обрав, якби мій пріоритет був у відкритому коді, але лише якщо цей пріоритет також не означав очікування підтримки активної спільноти ОС.


ОНОВЛЕННЯ: J 7.01 вийшов з відкритим вихідним кодом під GPL 3. Крім того, існує Kona , варіант на K. Це збільшує можливості для мов масивів з відкритим кодом.

ОНОВЛЕННЯ від Tobia: GNU APL доступний під GPL. Він ретельно відповідає останньому опублікованому стандарту ISO щодо розширеної мови APL. Це чудова реалізація APL з відкритим кодом, яка активно розробляється та підтримується. Є й інші цікаві реалізації, наприклад ngn / APL , напрочуд добре функціональна та сучасна реалізація APL, написана на CoffeeScript (яка компілюється в JavaScript.) Мови масивів живі і здорові в 2015 році.

ОНОВЛЕННЯ Адамом: Роджер Хуей , один з головних виконавців та дизайнерів J, відтоді приєднався до Dyalog, і під його керівництвом Dyalog APL додав багато можливостей, натхненних J. Сюди входить мовчазний функціональний стиль програмування та декілька операторів та функцій, багато з яких були вдосконалені в процесі. Dyalog APL тепер безкоштовний для некомерційного використання. Крім того, з’явилося кілька нових реалізацій APL; див. aplwiki.com . Мови масивів живі і здорові в 2020 році.


1
Іноді +1 недостатньо: Дякую, калейдичний!
blinry

1
Нещодавно Dyalog також випустив версію для Mac OSX - dyalog.com/dyalog/mac-os.htm
firesofmay

1
Якщо вам потрібен інший APL з відкритим кодом, працює і ngn-apl. Хоча у нього немає tradfns (тих, що вкладені в ).
Захарі

12

Щоб додати більше інформації ...

Існує відкрита версія джерела Kназивається Kona https://github.com/kevinlawler/kona

Адже q/kdb+існує пробна версія. http://kx.com/download/

Основними обмеженнями є 2-годинний таймаут, 32-бітна пам’ять, термін дії ліцензії на 3 місяці та сама ліцензія. Це не повинно турбувати вас, якщо ви просто хочете пограти навчитися чомусь.

Особисто я виявив qсебе найбільш зручним для користувача, оскільки KX переклав монадичні (з одним аргументом) дієслова з Kанглійських слів, і є чимала документація @ http://code.kx.com . Крім того, система баз даних надзвичайно продумана та гнучка.


1
Ви також можете згадати oK , ngn / k та Shakti K.
Адам

9

Щось, на що слід звернути увагу, це словниковий запас операторів (функції вищого порядку).

Оригінальний APL має лише зменшення останньої та першої осі (складання) ( f/, f⌿), сукупне зменшення останньої та першої осі ( f\, f⍀), а також внутрішній та зовнішній виріб ( f.g, ∘.g).

Більшість розширених APL (наприклад, GNU APL , APLX , APL + Win , APL2 ) лише додають специфікацію кожного циклу ( ) та кронштейна осі ( f[... ]).

J , додав безліч (звані прислівники та сполучники), але видалив дужки (як вісь, так і індексацію), кожен оператор (на користь оператора більш загального рангу) та зменшення останньої осі (кумулятивне).

Нині неіснуючий Sharp APL (а пізніше SAX ) зберіг як традиційні оператори останньої осі, так і індексацію дужок, додавши багато нових операторів J.

Dyalog APL поступово наближається до словникового запасу Sharp APL, але також включає J-ексклюзивні оператори, які ніколи не потрапляли до Sharp APL.

Нижче таблиці порівнюються J, Sharp APL і APL Dyalog складу словників. Для записів із вицвілим текстом потрібні два символи. Записи із сірим фоном не пропонуються. Композиції J, Sharp APL та Dyalog APL


3

J - це виконуваний математичний запис, який вводиться та відображається за допомогою символів ascii.

Це також повноцінна функціональна, об’єктно-орієнтована мова програмування.

Реалізація JSoftware J (я не знаю жодної іншої) не є відкритим кодом, але вона є безкоштовною.

Хоча движок не є відкритим кодом, існує активна бібліотека користувача коду J, до якої люди можуть внести свій внесок.

J має обширну та стислу документацію http://www.jsoftware.com/help.htm, а учасники форуму радісно та швидко реагують на будь-які запитання чи проблеми, і вони прагнуть допомогти новим користувачам зорієнтуватися, а також із більш досконалими проблемами.

Що стосується питання з відкритим кодом, документація (специфікація) для J є великою, і будь-хто теоретично міг би створити проект з відкритим кодом, який би спробував реалізувати J, якщо б захотів.


4
Тільки сказати, що джерело J було випущено під ліцензією GPL3 з часу останньої версії jsoftware.com/source.htm
jpjacobs


3

ELI - це нещодавно розроблена, вільно доступна, крос-платформна мова програмування масивів. Подібно до J та k, він покладається на набір символів ASCII. Він реалізує деякі функції, які (як я знаю) були унікальними для k / q / kdb +, такі як тимчасовий тип даних та вбудована підмножина SQL.


0

Я також залишаюся спантеличеним (APL мене завжди бентежив - на щастя, минуло 20 або більше років, відколи я востаннє намагався щось робити з цим), але трохи пошуків знайшов A +, версію A з відкритим кодом:

Я не уявляю, що це буде відповідати вашим (чи чиїм-небудь) потребам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.