Вопрос
Ландшафт языка массива, в то время как увлекательно, сбивает с толку, не путающему. Есть ли причина, чтобы выбрать один из j или k или apl или a? Ни один из этих вариантов, кажется, не будет открытым - есть ли открытые версии? Я хотел бы расширить мой разум, но я остаюсь набережденным.
Решение
Различия между этими языками относительно тонкие. 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 дорогие, и их пользователи в основном работают в финансах.
Апл был представлен и в основном разработан Кен Иверсоном. После полной карьеры применения и переработки APL в коммерческих приложениях он повернулся к задаче создания «рационализированной» ревизии, которая исправила аспекты языка, которого он оказался недовольным с течениемиковыми годами. Эта свежая тема называется J. Различия между J и APL набросаны в бумаге на программном обеспечении J Wiki. Одним из заметных изменений является устранение синтаксиса индексации массива. Самая большая функция, однако, является молчаливой формой, в которой программы написаны путем составления функций без ссылки на их аргументы. Tacit J тесно связан с стилем «без точечного», найденного в языках функциональных программиров, но отличается тем, что эта форма имеет основополагающуюся для языка J. Символы на основе ASCII, используемые в J, могут быть сложнее читать, чем более отличительные символы APL.
Для человека, желающего выучить язык массива, мой совет должен выбрать среди Dyalog APL, APLX, J и Q'nial. Dyalog APL (ESP. Для Windows) или APLX (ESP. Для Linux), вероятно, лучше всего для тех, кто хочет использовать основную символику, которая настолько характерна для APL, и кто хочет сильную связь с сообществом APL в целом. J может быть лучшим для тех, кто хочет построить веб-приложения, или сосредоточиться на математике (например, проект EULER,) и особенно тех, кто очарован целостным стилем, он подчеркивает. Q'nial - это то, что я выбрал, если бы мой приоритет был на открытом исходном котеле, но только в том случае, если этот приоритет также не имел в виду ожидания поддержки активного сообщества ОС.
Обновление: J 7.01 был выпущен с открытым исходным кодом Под GPL 3. В дополнение есть Кона, Вариант на K. Они увеличивают параметры для языков массива с открытым исходным кодом.
Обновление по Тобии: GNU APL. доступен под GPL. Следует внимательно новейшим опубликованным стандартом ISO на расширенном языке APL. Это отличный откровенный источник APL реализация и активно развивается и поддерживается. Есть и другие интересные реализации, например, например, NGN APL, удивительно хорошо известная и современная реализация APL, написанная в CoffeeScript (которое компилирует JavaScript.) Языки массива живы и хорошо в 2015 году.
Другие советы
Добавить дополнительную информацию ...
Есть версия открытой исходности K
называется Kona
https://github.com/kevinlawlawlover/kona.
За q/kdb+
, есть пробная версия. http://kx.com/download/
Основными ограничениями являются 2 часа времени ожидания, 32-битная память, срок действия лицензии 3 месяца и сама лицензия. Они не должны быть слишком надоми, если вы просто хотите играть и узнать что-то.
Лично я нашел q
быть самым удобным для пользователя, так как KX переведен монадический (единый аргумент) глаголы из K
на английские слова и есть хорошая сумма документации @ http://code.kx.com.. Отказ Кроме того, система базы данных очень хорошо продумана и гибкая.
Что-то рассмотреть, это словарь операторов (функции высшего порядка).
Оригинал APL только имеет последнее и первое уменьшение оси (f/
, f⌿
), последнее и первое совокупное уменьшение оси (f\
, f⍀
), плюс внутренний и внешний продукт (f.g
, ∘.g
).
Наиболее расширенные APLS (например, GNU APL, APLX, APL + Win, APL2) только добавляют каждый петли (f¨
) и спецификация кронштейна оси (f[
...]
).
J, добавил многословный (называемые наречиями и союзами), но удаленные кронштейны (обе оси, так и индексации), каждый оператор (в пользу более общего оператора ранга), так и в последней оси (совокупное) уменьшение.
Теперь несуществующий острый APL (SAX) сохранил как традиционные операторы последней оси и индексацию кронштейна, при добавлении многих новых операторов J.
Dyalog APL постепенно приближается к словаре Sharp APL, но также включил операторы J-эксклюзивных J, которые никогда не делали его в Sharp APL.
Приведенная ниже таблица сравнивается J, Sharp APL и Dyalog APL состав словари. Заявления серых изложений находятся в предложении.
J - исполняемая математическая запись, которая вводится и отображается с использованием символов ASCII.
Это также полноценный функционал, ориентирован на объект, язык программирования.
Реализация Jsoftware j (я не знаю ни о каких других), не является открытым исходным кодом, но это свободно использовать.
Хотя двигатель не является открытым исходным кодом, существует активная пользовательская библиотека J-кода, к которому люди могут внести свой вклад.
J имеет обширную и краткую документацию http://www.jsoftware.com/help.htm. И форумцы счастливо и быстро отвечают на любые вопросы или проблемы и стремятся помочь новым пользователям ориентироваться, а также с более продвинутыми проблемами.
В случае с открытым исходным кодом, кстати, документация (спецификация) для J является обширным, и кто-то может в теории создать проект с открытым исходным кодом, чтобы попытаться реализовать j, если они хотели.
Эфир Это недавно разработанная, свободно доступная, перекрестная платформа, языка программирования массива. Подобно J и K, это опирается на набор символов ASCII. Он реализует некоторые функции, которые (как я знаю) были уникальными для K / Q / KDB +, таких как временный тип данных и встроенный подмножество SQL.
Хотя A + появляется (к сожалению), станет мертвым проектом, есть новый интерпретатор APL с открытым исходным кодом: GNU APL..
Я также останусь безнадевленным (APL всегда смутил меня - к счастью, это было 20 или более лет, так как я в последний раз пытался что-нибудь с ним), но немного поиска нашла A +, версию с открытым исходным кодом A:
Я понятия не имею, что это будет соответствовать вашим (или чьи-либо) потребностям.