2014年11月4日
思考実験によるより良いコーディングへのヒント
本記事は、原著者の許諾のもとに翻訳・掲載しております。
簡単な思考実験をさせてください。コードをASCIIとしてディスクに保存する必要がないとしましょう。僕たちがシンボルを使うコードの書き方を変えられたら? そして何よりもその”読み方”を変えられたら? 想像できるすべてを読めて、編集できて、書ける魔法のコード・エディタがあるとしましょう。さらに、同じように機能する魔法のコンパイラがあるとしましょう。理想のコードはどのようになるでしょうか?
まず区切り文字から自由になれるでしょう。どうしてそんなものがあるのか? コンパイラが十分賢くないから。
引用符のような区切り文字はコンパイラにシンボルが終わるときとリテラルが始まるときを知らせるためにあります。なぜ変数が数字で始められないかも同様です。コンパイラは変数名なのか数値リテラルなのか知りようがありません。もし代わりにタイポグラフィを使ってそれらを区別できるとしたらどうなるでしょうか。
例をあげましょう。
この例は意味的に次のコードと等しいです。
print "The cats are hungry."; //no quotes or parens are needed
特別に色付けされた囲みの中のリテラルの描画はプレーンテキスト版より読みやすくなります。僕たちは21世紀に生きています。引用符よりもタイポグラフィ的な選択肢があります。それらを使いましょう。緑の囲みは単純な選択肢の一つでしかありません。
さらに文字列リテラルの例をあげましょう。
リテラルの区切りについて悩まされないし、連結のための余分な演算子を必要としません。ただインラインに配置するだけです。実のところ、文字列の連結と変数展開のあいだに違いはなくなります。唯一の違いは画面上での描画の選び方です。数値の書式もインラインで示せますが、灰色の囲みの書式制御を置くことで視覚的に分けます。
コメントがまったく違うフォントで脇に押しやられて描画されている点にも気づくでしょう(もちろんUnicodeの完全なサポートで)。
いったん文字列リテラルの違った表示方法を受け入れると、数値についても同じことができるでしょう。
演算子はもちろんまだ有用ですが、実際の数学的な操作を表すときだけです。掛け算のための区切りのグリフになっていて、ただのxではないので視覚的にまだ混乱させます。たぶん適切なドットがもっとよいでしょう。
いくつかの数値は実際には単位があるので、この仮説の言語は単位のための区切りが必要でしょう。一般的な計量用の略語を使って文として描画できそうです。
ある意味で、実際に単位のある数値はただの数値と違ったものです。このプログラミング言語がそれらを見分けるためには好都合です。
数値・文字列リテラルに対して個別にサポートさせようとしている以上、ぜひ行けるところまで行きましょう。
色リテラル
画像リテラル
バイト配列
もしIDEがこの言語で示された概念を実際に理解すれば、非常に視覚的ながらもシンボリックなコードを書けるでしょう。もしコンパイラが 十分に賢く ありさえすれば。
この方法で実際にコードを書くべきというより、思考実験が新しい考えを見つけるためによい方法だと僕は言いたいのです。既存のプログラミング・システムに適用できそうな考えです。
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
- Twitter: @yosuke_furukawa
- Github: yosuke-furukawa