Ландшафт на языке массива, в то время как увлекательный, путается до конца. Есть ли причина выбрать один из J или K или APL или A? Ни один из этих вариантов не является открытым исходным кодом - есть ли открытые исходные версии? Я хотел бы расширить свой ум, но я остаюсь в замешательстве.
APL против A против J против K?
Ответ 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¨
) и спецификацию скобок оси (f[
... ]
).
J, добавил множество (так называемых наречий и союзов), но убрал скобки (как оси, так и индексации), каждый оператор (в пользу более общего оператора ранга) и сокращение последней оси (накопительное).
Теперь несуществующий Sharp APL (SAX) сохранил как традиционные операторы последней оси, так и индексирование скобок, добавив при этом множество J новых операторов.
Dyalog APL постепенно приближается к словарю Sharp APL, но также включает в себя J-эксклюзивных операторов, которые никогда не попали в Sharp APL.
В приведенной ниже таблице сравниваются словари композиций J, Sharp APL и Dyalog APL. Затененные записи находятся в стадии предложения.
Ответ 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:
Я не знаю, что это будет соответствовать вашим (или чьим-либо) потребностям.