以下がJ言語のHello, World!のソースコードです。
'Hello, world!'
単なる文字列リテラルのようにしか見えないのは、J言語がAPLの後継となる言語だからです。
APLではASCIIコードにない特殊文字が多く使われたことで問題が起こったため、J言語ではASCIIコード領域の文字のみが使われている点が特徴です。
APLに存在した多くの文字をASCIIコード領域で表現するため、J言語の演算子は記号二文字になることが多く、ドットとコロンによって屈折1を表現しているようです。
ASCIIコード領域に収まったから多少は読みやすくなった、、、のかと言われるとそうではなく、未だにJ言語のソースコードは暗号めいています。(個人の感想です)
平均を計算する関数 avg を定義しているコードはこちらです。関数名以外は記号しかありません。
avg=: +/ % #
=: はかろうじて、関数定義であることが分かりますが、それ以外の記号の意味を説明すると、このようになります。
+/: 与えられた配列の合計を求める処理
% : 割り算
#: 与えられた配列の要素数を求める処理
なお、クイックソートのプログラムはこのようになるようです。
quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
えーと、、脳が理解するのを拒否しました。
QiitaのSyntaxHighlightに j があるため、色付けしてみましたが、これが正しいのかもよく分かりません。
Gemini3にコードの解説をしてもらい、その内容を3回くらい読んで初めて理解できました。もし、万が一にもJ言語が一番人気な言語になってしまったら、僕はエンジニアを辞めようと思います。
参照:
https://www.jsoftware.com/#/
-
言語学の専門用語で、「食べる」に対して、「食べた」「食べろ」などのように語形が変化する現象 ↩
