思考実験によるより良いコーディングへのヒント

簡単な思考実験をさせてください。コードをASCIIとしてディスクに保存する必要がないとしましょう。僕たちがシンボルを使うコードの書き方を変えられたら? そして何よりもその”読み方”を変えられたら? 想像できるすべてを読めて、編集できて、書ける魔法のコード・エディタがあるとしましょう。さらに、同じように機能する魔法のコンパイラがあるとしましょう。理想のコードはどのようになるでしょうか?

まず区切り文字から自由になれるでしょう。どうしてそんなものがあるのか? コンパイラが十分賢くないから。

引用符のような区切り文字はコンパイラにシンボルが終わるときとリテラルが始まるときを知らせるためにあります。なぜ変数が数字で始められないかも同様です。コンパイラは変数名なのか数値リテラルなのか知りようがありません。もし代わりにタイポグラフィを使ってそれらを区別できるとしたらどうなるでしょうか。

例をあげましょう。
text
この例は意味的に次のコードと等しいです。

print "The cats are hungry."; //no quotes or parens are needed

特別に色付けされた囲みの中のリテラルの描画はプレーンテキスト版より読みやすくなります。僕たちは21世紀に生きています。引用符よりもタイポグラフィ的な選択肢があります。それらを使いましょう。緑の囲みは単純な選択肢の一つでしかありません。

さらに文字列リテラルの例をあげましょう。

text

リテラルの区切りについて悩まされないし、連結のための余分な演算子を必要としません。ただインラインに配置するだけです。実のところ、文字列の連結と変数展開のあいだに違いはなくなります。唯一の違いは画面上での描画の選び方です。数値の書式もインラインで示せますが、灰色の囲みの書式制御を置くことで視覚的に分けます。

text

コメントがまったく違うフォントで脇に押しやられて描画されている点にも気づくでしょう(もちろんUnicodeの完全なサポートで)。

いったん文字列リテラルの違った表示方法を受け入れると、数値についても同じことができるでしょう。

text

演算子はもちろんまだ有用ですが、実際の数学的な操作を表すときだけです。掛け算のための区切りのグリフになっていて、ただのxではないので視覚的にまだ混乱させます。たぶん適切なドットがもっとよいでしょう。

いくつかの数値は実際には単位があるので、この仮説の言語は単位のための区切りが必要でしょう。一般的な計量用の略語を使って文として描画できそうです。

text

ある意味で、実際に単位のある数値はただの数値と違ったものです。このプログラミング言語がそれらを見分けるためには好都合です。

数値・文字列リテラルに対して個別にサポートさせようとしている以上、ぜひ行けるところまで行きましょう。

色リテラル

text

画像リテラル

text

バイト配列

text

もしIDEがこの言語で示された概念を実際に理解すれば、非常に視覚的ながらもシンボリックなコードを書けるでしょう。もしコンパイラが十分に賢くありさえすれば。

この方法で実際にコードを書くべきというより、思考実験が新しい考えを見つけるためによい方法だと僕は言いたいのです。既存のプログラミング・システムに適用できそうな考えです。