APL против A против J против K? - PullRequest
72 голосов
/ 08 октября 2010

Ландшафт языка массивов, хотя и увлекателен, не смущает до бесконечности.Есть ли причина выбрать один из J или K или APL или A?Похоже, что ни один из этих вариантов не имеет открытого источника - существуют ли версии с открытым исходным кодом?Я хотел бы расширить свой кругозор, но я остаюсь в замешательстве.

Ответы [ 7 ]

121 голосов
/ 13 октября 2010

Различия между этими языками относительно невелики. APL «надлежащий» имеет преимущества и недостатки оригинальной символической записи. (Существуют незначительные изменения, которые были внесены в набор символов за эти годы, но все они достаточно верны первоначальному видению.)

Язык A + доступен с открытым исходным кодом. Он значительно отличается от «классических» APL, но он похож на них, сохраняя большую часть основного набора символов. Я чувствую, что он не был в курсе технологических изменений. Это был предшественник К.

Языки в семействе языков массивов, которые вышли из отличительного набора символов APL, включают J, K и Nial. 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 (query), оба из которых написаны на K. Это мощный специализированный инструмент, предназначенный для высокоскоростной обработки потоковых данных. Это значительно отличается от первоначального подхода APL. Продукты Kx Systems дороги, а их пользователи в основном работают в сфере финансов.

APL был задуман и главным образом разработан Кеном Айверсоном. После полной карьеры применения и совершенствования APL в коммерческих приложениях он обратился к задаче «рационализированной» ревизии, которая исправляла аспекты языка, которым он был недоволен на протяжении многих лет. Этот свежий взгляд на тему называется J. Различия между J и APL изложены в статье на википедии J Software. Одним заметным изменением является устранение синтаксиса индексации массива. Однако самой большой особенностью является молчаливая форма, в которой программы пишутся путем составления функций без ссылки на их аргументы. Tacit J тесно связан со стилем «без точек», встречающимся в функциональных языках программирования, но отличается тем, что эта форма является фундаментальной для языка J. Символы на основе ASCII, используемые в J, могут быть сложнее для чтения, чем более характерные символы APL.

Для человека, желающего выучить язык массивов, я советую выбирать между 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 году.

11 голосов
/ 19 июня 2012

Чтобы добавить больше информации ...

Существует версия с открытым исходным кодом K, которая называется Kona https://github.com/kevinlawler/kona

Для q/kdb+ существует пробная версия. http://kx.com/download/

Основные ограничения: 2-часовой тайм-аут, 32-битная память, 3-месячный срок действия лицензии и сама лицензия. Это не должно быть слишком хлопотно, если вы просто хотите поиграть и чему-то научиться.

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

7 голосов
/ 05 сентября 2016

Нужно учитывать словарь операторов (функций высшего порядка).

Исходный APL имеет только уменьшение последней и первой оси (f/, f⌿), совокупное уменьшение последней и первой оси (f\, f⍀), плюс внутреннее и внешнее произведение (f.g, * 1008) *).

В большинстве расширенных APL (например, GNU APL, APLX, APL + Win, APL2) добавляются только каждый цикл () и спецификация скобок оси (f[ ... ]).

J, добавили множество (называемых наречиями и союзами), но удалили скобки (как ось, так и индексирование), каждый оператор (в пользу более общего оператора ранга) и последнюю ось ( накопительное) сокращение.

Теперь несуществующий Sharp APL (SAX) сохранил как традиционные операторы последней оси, так и индексную скобку, добавив при этом множество новых операторов J.

Dyalog APL постепенно приближается к словарю Sharp APL, но также включает в себя J-эксклюзивных операторов, которые так и не попали в Sharp APL.

В таблице ниже сравниваются словари композиций J, Sharp APL и Dyalog APL. Затененные записи находятся в стадии предложения. J, Sharp APL, and Dyalog APL compositions

3 голосов
/ 04 января 2011

J - это исполняемая математическая запись, которая вводится и отображается с использованием символов ascii.

Это также полноценный функционально-объектно-ориентированный язык программирования.

Реализация JSoftware для J (я не знаю других) не является открытым исходным кодом, но она бесплатна для использования.

Хотя движок не является открытым исходным кодом, существует активная пользовательская библиотека кода J, в которую люди могут внести свой вклад.

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

Кстати, по вопросу Open Source документация (спецификация) для J обширна, и любой теоретически может создать проект с открытым исходным кодом, чтобы попытаться реализовать J, если захочет.

2 голосов
/ 25 апреля 2016

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

1 голос
/ 25 июля 2014

Хотя A + выглядит (к сожалению) мертвым проектом, есть новый интерпретатор APL с открытым исходным кодом: GNU APL .

0 голосов
/ 08 октября 2010

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

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

...