擬似コード記述のような、説明に使える“動く”プログラミング言語を探していて、一時はGroovyを候補に考えていました。が、最近はJavaScriptでいいやと思ってます。実際、ゲーデルの不完全性定理の説明にはJavaScriptを使ってるし。
構文のフレーバは伝統的な手続き型なので、説明なしに誰でもだいたい理解できます。
これをみて理解に苦しむ人はいないでしょう(もっとも、ブラウザで実行すると理解に苦しむことになるが(苦笑))。説明が必要でも、JavaScripの構文解説ならいくらでもそこらにありますし。
print("Hello world.");
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を吐く、とかはやって欲しくないな、可愛くなくなる。