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

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

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

参照用 記事

みにくいアヒルの子 -- コンピューティング・サイエンスとJavaScript

擬似コード記述のような、説明に使える“動く”プログラミング言語を探していて、一時はGroovyを候補に考えていました。が、最近はJavaScriptでいいやと思ってます。実際、ゲーデルの不完全性定理の説明にはJavaScriptを使ってるし。

構文のフレーバは伝統的な手続き型なので、説明なしに誰でもだいたい理解できます。


print("Hello world.");
これをみて理解に苦しむ人はいないでしょう(もっとも、ブラウザで実行すると理解に苦しむことになるが(苦笑))。説明が必要でも、JavaScripの構文解説ならいくらでもそこらにありますし。

function式があるので、生のラムダ式の代わりにJavaScriptが使えます(なんならこれを参照)。メソッドも関数でラップできますから、そうしたいなら、純関数的に書くこともできます。


functio apply(func, args) {
return func.apply(null, args);
}

JavaScript 2.0になると、型宣言が使えるので、型付きラムダ計算もOKでしょう。それと、classとinterfaceもサポートされるので、トリッキーなクラスエミュレーションもいらなくなります。E4Xが入ると、XMLリテラルで書け、XMLオブジェクトはネイティブ型ですから、XML者にも朗報。

JavaScript2.0の仕様を眺めると、互換性問題に苦しんでいるところ、結局は不可解/汚いままのところも見かけます。型システムが(整理されてもなお)美しくないのと、returnがないと値を戻せないのがイヤなんですが、僕は(根が寛容なので)大目に見ます。


今では、コンピューティング・サイエンスの概念をまじめに説明するときでも、JavaScriptで十分な気がしてます。僕がたまに口にするインスティチューションや余代数の説明も、いつかJavaScriptを使ってするかもしれません(無保証言明)。

実を言えば、このあいだまでJavaScriptは「なんかトンデモない言語仕様の、ひどく貧弱な言語」-- みにくいアヒルの子と捉えていたのですが、りっぱな白鳥に、でも灰色の斑点が少し残った白鳥に成長しそうですね。

いくらりっぱになっても、最適化コンパイラがEXEやDLLを吐く、とかはやって欲しくないな、可愛くなくなる。