Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Различия между этими языками относительно невелики. 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 (запросов), оба из которых написаны на языке 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 году.

Ответ 2

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

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

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

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

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

Ответ 3

Что-то, чтобы рассмотреть, является лексикой операторов (функции высшего порядка).

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

Большинство расширенных 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

Ответ 4

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

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

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

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

Документация здесь, пожалуйста, прочитайте: http://www.aplusdev.org/

Я думаю, что это бета-версия или q/kdb+ пробная версия, которая включает символы ASCII и кодировку с base64.

Ограничения: 2 часа, 32-битная память и лицензия до истечения трехмесячного срока.

Ответ 8

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

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