APL

APL(エーピーエル)とは



APLは、1957年にケネス・アイバーソンによって創案されたプログラミング言語です。特徴的な記法を持ち、特に多次元配列の処理に優れています。多くの処理系が対話型インタプリタとして実装されています。

概要



APLは「APL記号」と呼ばれる特殊な記号を用いることで、計算式を非常に簡潔に記述できます。この記号は、キーボード入力の際にはシールや交換用キーキャップ、専用キーボードなどが用いられます。情報交換や内部表現には、かつては1バイト文字コードの切り替えが使われていましたが、現在はUnicodeに収録されています。初期の出力には専用のタイプボールが使用されていましたが、現在ではUnicodeフォントが使われることが一般的です。

APLはプログラムを簡潔に記述できる一方で、可読性が低いという欠点があります。そのため、「書き込み専用プログラム」や「他人の書いたものを修正するくらいなら新たに書き起こした方が速い」と言われることもあります。

1957年に考案された記法は、1962年に書籍『A Programming Language』として発表され、1964年にはプログラミング言語処理系として実装されました。1966年にはIBM System/360上のOSで動作するAPL\360が発表され、タイムシェアリングシステムでの対話型インタプリタとして注目を集めました。しかし、FORTRANほどには普及しませんでした。

マイクロコンピュータ時代には、CP/M|CP_M上で動作するAPL\80が登場し、一部の端末ではAPL記号を扱うことができました。1976年にはビル・ゲイツがAPLの開発を試みましたが、完成には至りませんでした。日本では、日本IBMの販売のほか、アンペールからノート型APLマシンが発売されました。

APLを基に発展した言語として、J言語があります。J言語では、ASCII文字のみで記述できるように変更されています。

演算機能



APLは、他のプログラミング言語と比較して特徴的な演算機能を持ちます。特に、スカラ値だけでなく配列も演算の対象とできる点や、高階関数に相当する機能を持つ点が特徴です。

関数と作用子


APLでは、前置演算子や中置演算子のように使われる記号列を「関数」、関数を操作する高階関数の意味を持つ記号列を「作用子」と呼びます。作用子は解析学における作用素に由来します。

右から左への結合


通常の算術式では、`3 + 2 - 1`は`((3 + 2) - 1)`のように左から右に評価されますが、APLでは`3 + (2 - 1)`のように右から左に評価されます。APLでは、この右から左への評価ルールしか存在しません。

例えば、`1 + 2 × 3 + 4`という式は、通常の算術式では`(1 + (2 × 3) + 4)`と評価されますが、APLでは`(1 + (2 × (3 + 4)))`と評価されます。

一項と二項


APLでは、同じ記号列(関数)を前置演算子(単項演算子)と中置演算子(二項演算子)の両方で使用し、それぞれ異なる意味を持ちます。例えば、`!`は前置演算子としては階乗を表し、`!5`は`120`を返しますが、中置演算子としては組み合わせの数を表し、`2 ! 5`は`10`を返します。

優先順位がなく常に右結合であるため、文法の曖昧さはありません。

配列演算


APLの特徴の一つとして、配列同士の演算が可能な点が挙げられます。例えば、`1 2 3 + 4 5 6`は、各要素ごとに加算を行い、`5 7 9`という配列を返します。配列の長さが異なる場合はエラーが発生します。前置記法でも同様に、各要素に対する演算結果を配列として返します。

作用子


内積と外積を例に作用子を紹介します。作用子は、関数を引数として取り、それによって定義される内積や外積を計算する演算子を返します。

内積の作用子は`.`で表されます。例えば、`9 8 7 +.× 6 5 4`は、まず`9×6 8×5 7×4`を計算し、その結果を`9×6 + 8×5 + 7×4`のように加算して`122`を返します。右から左のルールが適用されることに注意が必要です。

外積の作用子は`∘.`で表されます。例えば、`1 2 3 ∘.× 4 5 6 7`は、各要素の組み合わせに対して乗算を行い、2次元の配列を生成します。

関連項目



J (プログラミング言語)
A+

外部リンク



GNU APL
日本APL協会
日本語APL - MS-DOS用のAPLインタプリタ
APL Unicode Font – Extended - フリーのAPLフォント
* NARS2000 - ISO/IEC 13751 Extended APLのオープンソースな実装

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。