Jは、
1989年に
ケネス・アイバーソンによって開発された
プログラミング言語です。
APLの後継として提案され、正式名称はアルファベット1文字の「J」ですが、一般には「J言語」と呼ばれています。
APLは数式処理、特に
配列操作に優れていましたが、特殊文字の使用により
可読性が低く、環境構築が煩雑でした。Jは、
APLの優れた点を継承しつつ、
ASCII文字のみで記述できるように設計されました。
J言語の概要
J言語は、関数型
プログラミング言語であるFP言語とFL言語の影響を受けています。これらの言語は
APLの影響を受けており、J言語の設計にも反映されています。
APLにあった「作用子」による演算子の合成機能は、J言語ではさらに拡張・強化されました。これにより、
APLのような記法上の問題は解消されましたが、一方で変数と演算子の区別がつきにくくなり、
可読性が低下したという指摘もあります。例えば、
APLでは「𝜄i」と記述するものが、Jでは「i. i」と表記されます。
データ型と記法
J言語は、
整数、
浮動小数点数、
文字列だけでなく、
有理数や
複素数など、他の言語にはあまり見られないデータ型も扱えます。数値の表記には、任意の底(基数)での表記(n進法)も可能です。以下に、J言語におけるデータ型と直値の表記について説明します。
整数の表記は、他の言語と同様ですが、負の数を表す際には
ハイフンマイナスではなく、ローライン(_)を使用します。また、単体の
ハイフンマイナスは「無限」を意味します。
浮動小数点数の表記も、基本的には他の言語と同じです。ただし、J言語ではピリオド(.)が演算子に影響を与えるため、「.5」のような表記はできません。指数表示は「e」を使用します(例:1.2e3 → 1200)。
有理数は、分子をrで分母と繋げて記述します(例:2r3 → 2/3)。
複素数は、実部と虚部をjで繋げて表記します。また、絶対値と偏角(度数またはラジアン)を用いた表記も可能です。
n進法
任意の基数nでのn進法表記は、「基数b数」で表します。基数には小数点も使用できます。
演算子
J言語は、
APLの特殊文字を
ASCIIコードの組み合わせで表現するため、非常に多くの演算子を持ちます。コロン(:)やピリオド(.)を付加することで、異なる演算子として扱われます。また、演算子を前置記法と
中置記法で使い分けることによって、意味が大きく変化します。演算子は、通常は算術演算子として扱われますが、
被演算子が1または0の場合は論理演算として扱われます。
J言語における計算順序は、
APLと同様に右結合です。例えば、「8 - 5 - 9」は「8 - (5 - 9)」と解釈され、結果は12となります。
演算子の合成
J言語では、複数の演算子を合成して使用できます。2つの演算子を合成する規則を「フック」、3つの場合は「フォーク」、4つ以上の場合は「トレイン」と呼びます。これらの規則により、複雑な処理を簡潔に記述できます。
まとめ
J言語は、
APLの後継として開発され、
配列処理に優れる一方で、独特な記法や豊富な演算子の存在から、学習コストが高い側面も持ちます。しかし、その強力な機能は、特定の分野において非常に有効です。
外部リンク
*
Jsoftware - J言語メインサイト (英語)