アレイ言語の風景は魅力的ですが、終わりのない混乱を招いています。JまたはKまたはAPLまたはAのいずれかを選択する理由はありますか?これらのオプションはどれもオープンソースではないようです-オープンソースバージョンはありますか?心を広げたいのですが、戸惑い続けています。
7 に答える
これらの言語間の違いは比較的微妙です。APLの「適切な」には、元の記号表記の長所と短所があります。(何年にもわたって設定されたシンボルに小さな変更が加えられましたが、それらはすべて元のビジョンに十分に当てはまります。)
A+言語はオープンソースで利用できます。これは「クラシック」APLとは大きく異なりますが、コア文字セットのほとんどを保持している点でそれらに似ています。私の感覚では、テクノロジーの変化に合わせて最新の状態に保たれていません。それはKの前身でした。
特徴的なAPL文字セットから逸脱した配列言語ファミリーの言語には、J、K、およびNialが含まれます。Nialは記号の代わりに英語の単語を使用し、Q'Nialと呼ばれるオープンソースのインタプリタを持っています。KとJは主に記号に依存していますが、これらはASCII文字セットから取得されます。ただし、これらの言語では、定義を割り当てるだけで、記号の代わりに単語を使用できます。
プログラミング言語のAPLファミリーは、1964年にIBM製品としてAPLが最初に登場して以来、主にプロプライエタリです。プロプライエタリアレイ言語は、現時点では、オープンソースの代替言語よりも多くのサポートと新しい機能の迅速な進化を遂げているようです。すべての競合他社がどのように競合しているかはわかりませんが、Dyalog APLは確かに、現在のテクノロジーとしての言語の実装を促進するために積極的に取り組んでいます。APL2000は、 VisualAPL for .Net(廃止)を含む、Unix、Linux、およびWindows向けの製品を提供します。MicroAPL LtdはAPLX(廃止)を提供しています。
Kは、それ自体ではもはや販売されていない特殊な言語です。Kx Systemsは、代わりにKdb +データベースとそのQ(クエリ)言語を販売しています。どちらもKで記述されています。これは、ストリーミングデータの高速処理用に設計された強力な専用ツールです。これは、元のAPLアプローチとは大きく異なります。Kx Systems製品は高価であり、そのユーザーは主に金融で働いています。
APLは、Ken Iversonによって構想され、主に設計されました。商用アプリケーションでAPLを適用および改良するという完全なキャリアの後、彼は「合理化された」改訂を行う作業に転向しました。これは、長年にわたって不満を感じていた言語の側面を修正するものです。このテーマの新しい見方はJと呼ばれます。JとAPLの違いは、JSoftwarewikiの論文にスケッチされています。注目すべき変更の1つは、配列のインデックス構文が削除されたことです。ただし、最大の特徴は暗黙の形式であり、プログラムは引数を参照せずに関数を作成することによって記述されます。Tacit Jは、関数型プログラミング言語に見られる「ポイントフリー」スタイルと密接に関連していますが、この形式がJ言語の基本であるという点で異なります。
配列言語を学びたい個人のために、私のアドバイスは、Dyalog APL、APLX、J、およびQ'Nialから選択することです。Dyalog APL(特にWindowsの場合)またはAPLX(特にLinuxの場合)は、APLに非常に特徴的なコアシンボリズムを使用したい場合、およびAPLコミュニティ全体との強いつながりを望んでいる場合に最適です。Jは、Webアプリケーションを構築したい人、または数学に焦点を合わせたい人(Project Eulerなど)、特にJが強調する暗黙のスタイルに魅了されている人に最適です。Q'Nialは、私の優先順位がオープンソースである場合に選択するものですが、その優先順位がアクティブなOSコミュニティのサポートを期待することを意味しない場合に限ります。
更新:J 7.01は、GPL 3の下でオープンソースコードでリリースされました。さらに、KのバリアントであるKonaがあります。これらは、オープンソース配列言語のオプションを増やします。
Tobiaによる更新:GNUAPLはGPLの下で利用可能です。これは、ExtendedAPL言語で公開されている最新のISO標準に厳密に従っています。これは優れたオープンソースのAPL実装であり、積極的に開発および保守されています。他にも興味深い実装があります。たとえば、ngn / APLは、CoffeeScript(JavaScriptにコンパイルされます)で記述されたAPLの驚くほど機能が豊富で最新の実装です。配列言語は、2015年も健在です。
Adámによる更新: Jの主要な実装者および設計者の1人であるRoger HuiがDyalogに加わり、彼の指導の下、DyalogAPLは多くのJに着想を得た機能を追加しました。これには暗黙の関数型プログラミングスタイルといくつかの演算子と関数が含まれ、それらの多くはプロセスで改善されています。Dyalog APLは、非営利目的で無料で使用できるようになりました。さらに、いくつかの新しいAPL実装が登場しました。aplwiki.comを参照してください。配列言語は2020年も健在です。
さらに情報を追加するには...
https://github.com/kevinlawler/konaK
と呼ばれるのオープンソースバージョンがありますKona
についてq/kdb+
は、試用版があります。http://kx.com/download/
主な制限は、2時間のタイムアウト、32ビットのメモリ、3か月のライセンスの有効期限、およびライセンス自体です。遊んで何かを学びたいだけなら、これらはそれほど面倒なことではありません。
個人的には、KXがモナディック(単一引数)動詞を英語の単語に翻訳し、 http://code.kx.comq
に大量のドキュメントがあるので、最もユーザーフレンドリーであることがわかりました。さらに、データベースシステムは非常によく考えられており、柔軟性があります。K
Jは、ASCII文字を使用して入力および表示される実行可能数学表記法です。
また、本格的な関数型、オブジェクト指向、プログラミング言語でもあります。
JのJSoftware実装(他に何も知りません)はオープンソースではありませんが、無料で使用できます。
エンジンはオープンソースではありませんが、人々が貢献できるJコードのアクティブなユーザーライブラリがあります。
Jは、広範で簡潔なドキュメントhttp://www.jsoftware.com/help.htmを持っており、フォーラムのメンバーは、質問や問題に喜んで迅速に対応し、新しいユーザーがより高度な問題に取り組むのを支援することに熱心です。
ちなみに、オープンソースの問題については、Jのドキュメント(仕様)が豊富で、理論的には誰でもオープンソースプロジェクトを作成して、必要に応じてJの実装を試みることができます。
A +は(悲しいことに)死んだプロジェクトのように見えますが、新しいオープンソースのAPLインタープリターであるGNUAPLがあります。
ELIは、新しく開発された、無料で利用できるクロスプラットフォームの配列プログラミング言語です。Jおよびkと同様に、ASCII文字セットに依存します。これは、(私が知っているように)一時的なデータ型や組み込みのSQLサブセットなど、k / q /kdb+に固有の機能の一部を実装しています。
私も困惑したままです(APLは常に私を混乱させてきました-幸い、私が最後に何かを試みてから20年以上が経ちました)が、少し検索すると、AのオープンソースバージョンであるA+が見つかりました。
それがあなたの(または誰かの)ニーズを満たすかどうかはわかりません。