このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

何故にあえてJ言語を学ぶのか?

J言語に関する、「実用に使われているプログラミング言語のなかでは最高の難読さ(最低最悪の可読性)」という評判はどうもホントウのようです。調べていると、「これはヒドイ」「正気とは思えない」と嘆くことがしばしば。

それでもJ言語を学びたい気分がしているのは、主に三つの理由があります。

まず第一は実際的な動機で、iPhoneで使えるインタプリタが欲しいことです。キーボードデバイスが満足に使えない状況では、キータイプ数がうんと少ないショートコードを書けるか、文字を使わないプログラミングが可能なプログラミング言語/処理系が便利でしょう。そのようなプログラミング言語が必要だ、と僕は思っています。

第二に、J言語の計算方式は気に入っている、ってことがあります。J言語は、かなり純度の高い関数型言語です。必要最小限の破壊的代入はありますが、ほとんどの計算はイミュータブルデータに関数を適用する形で進行します。変態な構文を剥ぎとって言語処理の抽象的メカニズムをみれば、なかなかにスジがいいと思います。

第三に、J言語の文化圏にただよう(僕の錯覚の可能性もありますが)「経験から悟れ」の雰囲気に対抗して、できるだけ計算科学的なアプローチを探りたい、それは可能だろう、という期待があります。「驚愕の簡潔さ」にも「異常な難解さ」にも理由があるはずで、その理由を明らかにしたいのです。


あえて学ぶ理由は上記のとおりですが、なにかと愚痴を言いたくなる事は多いです。いや、ホントに。

J言語の評判」と「J言語は閉鎖的なのか?」において、J言語の情報をインターネット検索するのが困難なこと、「J言語村」とでも呼ぶべき閉鎖的(だと僕が勝手に感じている)文化圏/言語圏が、学習の障壁だと述べました。

プログラミング言語の文法と語彙が特殊なだけではなくて、用語法も独特で、「リテラル、変数、関数、高階関数」のような普通の言葉は(オフィシャルには)使いません。J言語では「名詞、代名詞、動詞、副詞と接続詞」という英文法用語なので、はてさて、どう検索したものか? dyadic(binaryの別な言い方)、inflection(屈折のことだが、文法用語だろう)、valence(価数、おそらく化学用語から)、bident(二股の槍かな?)なんてのもJ言語の用語です。

J言語の文字列は 'Hello, World.' のように書きますが、改行文字を入れる方法がずっとわかりませんでした。'Hello, World.\n' はダメです。http://www.jsoftware.com/ には相当量のドキュメントが蓄積されているのですが、このような素朴な疑問に答える系統的なリファレンスがないか、あっても埋もれているようです。情報が散在しているのです。

結局、http://www.jsoftware.com/help/jforc/preliminaries.htm#_Toc191734301There are no special escape sequences such as '\n'. という記述を見つけました。じゃーどうしたらいいかは書いてありません。既存のスクリプトを眺めていると、LFとかCRという名前が使われているので、これらが特殊文字を表す名前のようです。連接演算子「,」を使って 'Hello, World.',LF で改行付き文字列となるようです。って、わかるまでに3日かかります

OSの環境変数HOMEを参照するにはどうしたらいいだろう? と、これもわかるまで3日くらい。答を言うと、2!:5 'HOME' と書きます。2!:5 ってなんだ? と、これはインタープリタやOSとインターフェイスする演算子で、左が分類の番号、右が個々の機能の番号です。例えば、ファイルIO関係は左側1番で、Readが 1!:1 、Writeが 1!:2 です。番号ですよ、番号! これ以外でも至る所で生の番号が使われていて「覚えられるわけないじゃないか」と。

以上、愚痴でした。