J (プログラミング言語)
プログラミング言語
From Wikipedia, the free encyclopedia
Jはプログラミング言語の一種で、正式名称はアルファベット1文字の「J」だがC言語と同様、「J言語」と一般には呼ばれている。
| パラダイム |
オブジェクト指向プログラミング、関数型プログラミング、マルチパラダイムプログラミング、ベクトル化、関数レベルプログラミング、ポイントフリー |
|---|---|
| 登場時期 | |
| 開発者 |
ケネス・アイバーソン、ロジャー・ホイ |
| 最新リリース | 9.7.1 / 2026年4月23日[1] |
| 影響を受けた言語 |
FL、APL |
| 影響を与えた言語 | NumPy,[2] SuperCollider[3] |
| ライセンス |
GPL 3.0 |
| ウェブサイト | |
| 拡張子 |
ijs |
概要
Jは1989年、APLの提案者でもあるケネス・アイバーソンによりAPLの後継として提案された。APLは数式の表記、特に配列の処理に優れており、多くの計算式を極めて単純に表記できる利点を持っていたが、ギリシャ文字やその他の特殊記号を使用するため、利用にはフォントの設定など特殊な環境の準備が必要があり、可読性の低さもあって普及には至らなかった。
JはAPLの反省をふまえて、APLと同様の計算を通常のASCIIコードのみで使用できるようにした。この際、ジョン・バッカスによるFP言語・FL言語という関数レベルプログラミング言語の影響を受けている(バッカスによるふたつの言語はAPLの影響を受けている)。さらにAPLにあった「作用子」による演算子の合成といった機能が、より拡張強化されている。これらの機能によりAPLのような表記の問題は解消された。しかし、 例えば、APLでは
𝜄i
と表記するのが、Jでは
i. i
となるなど、変数と演算子の区別がつきにくくなり、可読性が落ちている。
データ型と記法(直値)
種類
型
直値
以上の型の基本的な直値・記法の他、数値は任意の底(基数)nでの表記(n進法)の記法がある。
なお、以下では型と記法の識別を完全に欠いて説明しているので注意。
整数
整数の表記は基本的には他の言語と同じである、しかしJでは負の数はU+002D - hyphen-minusではなくU+005F _ low lineを用いる。さらにU+002D - を単体で使用すると「無限」として処理される。
| 式 | 評価後の値 |
|---|---|
5 - 6 | _1(−1) |
_1 * _(−1 × ∞) | __(∞) |
浮動小数点数
浮動小数点数の表記も基本的には他の言語と同じである。ただし J では "."(ピリオド)が演算子に大きな影響を与えるため ".5" のような表記(他言語では0.5として処理される)は許されない。数字の間に "e" を入れる指数表示は他言語同様 J でも実装されている(例 1.2e3 → 1200)。
有理数
有理数は〈分子〉r〈分母〉と表記する。(例 2r3 → 2/3を意味する)
複素数
複素数は〈実部〉j〈虚部〉と表記する。この他にも〈[[絶対値]]〉ad〈度数[[偏角]]〉・〈絶対値〉ar〈[[ラジアン]]偏角〉と表記するとそれに対応する複素数を返す。
| 表記 | 意味 |
|---|---|
5j4 | 5 + 4i |
2ad3 | 1.99726j0.104672 |
5ar0.927295 | 3j4 |
n進法
任意の底(基数)nによるn進法での数値は、〈基数〉b〈数〉という表記する。基底は小数点を含んでもかまわない。
| 表記 | 意味 |
|---|---|
2b101 | 5 |
3b212 | 23 |
16bff | 255 |
0.1b12 | 2.1 |
演算子の種類
演算子の合成
J では演算子を並べることにより、複数の演算子を合成することができる。2つの演算子の合成規則を「フック」、3つの演算子の合成規則を「フォーク」、4つ以上の演算子の合成規則を「トレイン」と呼ぶ。