やじうまの杜

漢文風のプログラミング言語「文言(wenyan-lang)」がめっちゃエモいと話題に

“吾有一數。曰三。名之曰「甲」”で“int 甲 = 3;”

漢文風のプログラミング言語「文言(wenyan-lang)」。漢籍っぽくレンダリングすることも可能

 漢文(中国古文)風のプログラミング言語「文言(wenyan-lang)」が面白いと一部で話題です。返り点のない白文なのがキツいですが、何となく読める気がしないでもない。

 ちなみに“Hello World”はこんな感じ(改行やインデントはなくても大丈夫)。

吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。

 “甲”と名前の変数に“3”を代入して、“問天地好在。”を“甲(=3)”回出力せよという意味になります。以下のようなJavaScriptコードとして評価されるようで(Pythonコードへのコンパイルも可能)、なにげにチューリング完全です。

var n = 3;
for (var i = 0; i < n; i++) {
console.log("問天地好在");
}

 數(数:int)ほかにも、言(文字列:string)、爻(真偽:bool)、列(配列:array)などを宣言(吾有、有)できるほか、変数の代入や比較、加減乗除、ループ、ブレークなどがサポートされているようです。“吾有一術(関数を1つ定義する)”や“名之曰「……」(関数の名前は「……」である)”といった言い回しもなんかエモい。

 個人的にはプロジェクトの序文も結構かっこいいと思います。故事成語に通じてないと、なかなか意味をとるのは難しいですが……。

夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱。蛇、象、駱、犀,各爭文采。方知鬼之所以夜哭,天之所以雨粟。然以文言編程者 ,似所未有。此誠非文脈之所以傳,文心之所以保。嗟予小子,遂有斯志。然則數寸之烏絲猶覆於頭,萬卷之素書未破於手;一身長羁于远邦,兩耳久旷于雅言。然夫文章者吾之所宿好,程式者偶承時人之謬譽。故希孟不慚年少,莊生不望無涯。乃作斯言。誠未能嘔瀝長吉之心血,亦庶幾免於義山之流沫。既成之後,復學干將鑄劍而自飼,越王嚐糞而當先。自謂偶追《十書》之筆意,但恨少八家之淋漓。此子山所謂士衡抚掌而甘心,平子見陋而固宜。然則雖實覆甕之質,尚存斧正之望;雖乏呂相之金,易字之渴蓋同。此亦開源之大義,吾輩之所以勉勵也。一笑。

GitHubのプロジェクトページより引用

 オンラインIDE「Visual Studio Code」用の拡張機能などもあるので、漢文に自信のある方は挑戦してみてはいかがでしょうか。

 なお、日本語で記述できるプログラミング言語としては、「なでしこ」などが挙げられます。最新版の「なでしこ」は“デラックス版(有償)”の機能が無償解放され、かなり強力になっているので、興味のある方は試してみてください。