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

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Jはプログラミング言語の一種で、正式名称はアルファベット1文字の「J」だがC言語と同様、「J言語」と一般には呼ばれている。

概要[編集]

Jは1989年APLの提案者でもあるケネス・アイバーソンによりAPLの後継として提案された。APLは数式の表記、特に配列の処理に優れており、多くの計算式を極めて単純に表記できる利点を持っていたが、ギリシャ文字など特殊な文字を使用するため、この言語の実装にはフォントを設定する必要があり、可読性の低さもあって普及には至らなかった。

JはAPLの反省をふまえて、APLと同様の計算を通常のASCIIコードのみで使用できるようにした、またこの言語独自の機能である「演算子の合成」という機能が追加された。 これらの機能によりAPLのような表記の問題は解消されたが可読性はAPLよりもさらに下回ったという批判もある。

データ型の形式[編集]

Jのデータ型は他の言語のような整数実数文字列の他に有理数複素数n進数の表記法も実装されている。ここでは代表的なデータ型の表記方法を記す。

整数[編集]

整数の表記は基本的には他の言語と同じである、しかしJでは負の数は "-"(マイナス)ではなく "_"(アンダースコア)を用いる。さらに "_" を単体で使用すると「無限」として処理される。

  • 5 - 6 \to _1
  • _1 * _ \to __ (-∞)

実数[編集]

実数の表記も基本的には他の言語と同じである。ただし J では "."(ピリオド)が演算子に大きな影響を与えるため ".5" のような表記(他言語では0.5として処理される)は許されない。数字の間に "e" を入れる指数表示は他言語同様 J でも実装されている(例 1.2e3 \to 1200)。

有理数[編集]

有理数は(分子)r(分母)と表記する。(例 2r3 \to 2/3を意味する)

複素数[編集]

複素数は(実数)j(虚数)と表記する。この他にも(絶対値)ad(度数偏角)、(絶対値)ar(ラジアン偏角)と表記するとそれに対応する複素数を返す。

  • 5j4 \to 5 + 4iを意味する。
  • 2ad3 \to1.99726j0.104672
  • 5ar0.927295 \to 3j4

n進数[編集]

n進数は(基底)b(数字)で表記される、基底は実数でもかまわない。

  • 2b101 \to 5
  • 3b212 \to 23
  • 16bff \to 255
  • 0.1b12 \to 2.1

演算子の種類[編集]

JはAPLの特殊文字を全てASCIIコードを組み合わせた演算子として扱うため、膨大な数の演算子を持つ。具体的には演算子の後にコロンやピリオドを加えると別の演算子として扱われる。またAPL同様、演算子を前置記法として使う場合と中置記法として使う場合にかなりはっきりとした意味の違いを持たせている。

一例を以下の表で表す、Jの演算は通常は算術演算子として扱うが、被演算子が1または0の場合は論理演算として扱われる。

演算子 前置記法として使用する場合 中置記法として使用する場合
+ 共役複素数を返す。 足し算
+: 2倍にする。 (論理演算)否定論理和を返す。
+. 複素数の実数部と虚数部を分離してリストの形式で返す。 最大公約数(論理演算の場合は論理和)を返す。
* 符号(正なら 1、負なら _1、零なら 0)を返す。 かけ算
*: 2乗にする。 (論理演算)否定論理積を返す。
*. 複素数極座標に変更してリストの形式で返す。 最小公倍数(論理演算の場合は論理積)を返す。

また J での計算順序は APL と同様に右の演算子が優先される。例えば 8 - 5 - 9 は 8 - (5 - 9)であり、12 が返される。

演算子の合成[編集]

J では演算子を並べることにより、複数の演算子を合成することができる。2つの演算子の合成規則を「フック」、3つの演算子の合成規則を「フォーク」、4つ以上の演算子の合成規則を「トレイン」と呼ぶ。

外部リンク[編集]