APLプログラミング言語

「近い将来、プログラムの実行と実行に必要なコンピューターのハードウェアのコストは、プログラマーの労力のコストと比較して無視できるようになるため、コンピューターリソースをより多く要求しますが、コードの量を最小限に抑えることができるプログラミング言語を開発することは理にかなっています」 80年代半ばにIBM開発者のAPLグループを率いたジムブラウン博士は、このようなことを考えました。 まあ、彼の予測は部分的にしか実現しませんでした。 現在、APLは金融および科学計算のプログラミングに使用されており、.NETプラットフォームの一部であり、2010年11月のTIOBEインデックスでは33位(0.366%)を占めています。



APLを使用すると、コードの量を最小限に抑えることができ、簡単にプログラミングできます。他の一般的なプログラミング言語とは異なり、構文だけが「潜在的なファン」のほとんどを怖がらせます。 APLをより詳しく紹介します。この言語は非常に便利です。一見恐ろしい「ささいなこと」にもかかわらず、それは論理的で美しく、大規模なデータ配列を使用した数学的計算と操作のプログラミングにも最適な開発ツールです。



それで、APL、略語は非常に単純な:プログラミング言語の略です。 Kenneth E. Iversonはハーバード大学での作業中に1957年に言語のアイデアを思いつき、1964年のIBMでの作業中にその実現を見出しました。APLの使用のピークは、言語の多くのバージョンがあった80年代半ばにあり、マイクロコントローラを含む方言。 ある時点で、Microsoft Corporationでさえ、APLのバージョンをリリースすることを計画していましたが、理由は不明ですが、このリリースは行われませんでした。 80年代初頭、言語の新しいバージョンが登場しました-APL2は、ジムブラウン博士が率いるIBM開発チームによって作成されました。 このバージョンは、最新のAPLの基礎になりました。



現在、約12の異なるAPLインタープリターがあります。 主なものはDyalog APL、APL Now、MicroAPLで、3つすべてがWindows、Unix、Linuxで動作し、最後の1つはMacOSで動作します(さらに、Dyalog APLを使用して例を示します。さらに、学生はDyalog Webサイトからこのインタープリターを無料でダウンロードできます: dss .dyalog.com / edu )。



APL環境では多くの非標準文字が使用されるため、開発には特別なキーボードレイアウトが使用されます。 Dyalog APLの最新バージョンでは、特殊文字は既にインストルメントパネルに直接取り込まれており、必要な文字をクリックするだけで簡単に選択できます。

ImageShack.us CLONEがホストする画像

ImageShack.us CLONEがホストする画像

では、なぜこれがすべて必要なのでしょうか? この言語の主な機能と利点は次のとおりです。

1.クロスプラットフォーム実装。



2.計算は右から左に行われ、計算結果は左側の関数に割り当てられます。 例を挙げます。

ImageShack.us CLONEがホストする画像



3.特殊文字の使用と、すべての操作を配列で直接実行できるため、コードの量は最小限に抑えられます。 ループを使用する必要はありません。 たとえば、配列を作成し、配列のすべての要素の合計を見つけ、配列の長さを見つけ、配列の各要素を1 +配列要素の数だけ増やします。

ImageShack.us CLONEがホストする画像



これらの規則のおかげで、APLでは実際に、1行のコードで任意の関数を実装できます。 ある知り合いはAPLで多くのマンデルブロを実装しましたが、 ここではもちろん、1行のコードで有名なゲーム「Life」の実装をダウンロードできます。



もう1つの大きな利点は、大きな行列を操作できることです。 当社のソフトウェア製品を使用するクライアント(および投資銀行、年金基金、銀行提携)は、多くの場合、1つの軸に100,000の次元を持つマトリックスのデータを持っています。 APLを使用すると、パフォーマンスを犠牲にすることなく、このような行列に対してさまざまな数学演算を実行できます。



もちろん、短所もあります。 主なものは、何度も言及されているように、珍しい構文です。 長い間、記述されたコードを理解することは非常に難しいため、APLは一般に「書き込み専用言語」と見なされていました。 現在、主に言語機能のごく一部しか使用されていないため、いくつかの最も重要な文字を使用して、一般に.Netライブラリ内にAPLコードをカプセル化できます。



当初、APLは機能モジュラープログラミング言語でしたが、現代のAPLはOOPをサポートしていますが、完全にオブジェクト指向のコードを書くと、簡単に言えば、非常に単純で読みにくいです。 ただし、言語で複雑なオブジェクトを作成する機能がサポートされているという事実に留意する価値があります。 原則として、最新のAPLはグラフィカルインターフェイスを作成することを可能にします(神はこれを禁じています)が、気持が良いので、XMLおよびラムダ式をサポートします。



あなたが言語を感じることができるように、私はさらにいくつかの例を挙げます。

APLは、配列と行列を操作するための非常に強力なメカニズムを提供します。 配列の要素は任意のタイプ、配列は任意のレベルのネストにすることができ、配列の任意の要素に簡単にアクセスできます。 10行10列の行列を作成し、1〜100の要素を入力します。標準行は行列の行にアドレス指定されます。

ImageShack.us CLONEがホストする画像



次に、3つの要素の配列を作成します。数値、行、マトリックスです。 配列の任意の要素に簡単にアクセスできます。 行の2番目の文字とマトリックスの最後の要素を変更します(配列のみが変更され、マットマトリックスは変更されていません)。

ImageShack.us CLONEがホストする画像



関数を作成するには、その名前を入力してマウスでダブルクリックします-関数は別のウィンドウで開きます。 関数名の左右にあるのは引数のみで、結果は代入記号の左側になります。 結果は、最初の行に示されているのと同じ名前で変数に返されます。 APLでは、関数の署名はその名前のみです。 1つの引数を取り、その増分を返す関数を作成します。

ImageShack.us CLONEがホストする画像

ImageShack.us CLONEがホストする画像



APLデバッガーについても言及する必要があります。 変数の値を変更し、実行時にスタック上を移動できます。これは朗報です。 トレースモードから編集モードに切り替えるだけです。

関数の最後の行を実行する前に変数aを1に変更します。右側には、res変数の値が表示されるウォッチウィンドウがあります。

ImageShack.us CLONEがホストする画像



多くの例を表示できますが、最も簡単なオプションはDyalog APLをダウンロードして、自分で試してみることです。 同時に、記号で表される標準機能に慣れてください。 シンボルにカーソルを合わせると、その機能とアプリケーションに関する情報が表示されます。

ImageShack.us CLONEがホストする画像



言語アナライザは、最初の関数(シンボル)が見つかるまで、入力された文字列を右から左にチェックします。 次に、関数の左側に引数があるかどうかを確認します。 引数がない場合、その文字は単一の値(単項)で使用され、左側に引数がある場合、値は2進です。 例:このシンボルは、最大2つの要素を切り上げるか選択します。

ImageShack.us CLONEがホストする画像



この情報は、あなたが自分で言語に慣れるのに十分だと思います。 結論として、ビデオチュートリアルをさらにいくつかアドバイスできます。







APLに関するロシア語の記事がないことは不公平であり、一般的には私たちにはまったく人気がないので、私があなたに興味を持ったことを願っています。 そして、もちろん、私はあなたの質問やコメントに答えようとします。



All Articles