太古の昔、メモリ空間は自由だった。

太古の昔、メモリ空間は自由だった。
好きなところにジャンプでき、自由に書き換えることもできた。


だが、その結果、解読不能な摩訶不思議なソースコードができあがった。
これではいけないと人々は立ち上がった。


gotoなどの無条件ジャンプは悪とされた。


だが、自由にメモリ空間は書き換えられた。
その結果、グローバル変数でまみれた不思議なコードが出来上がった。
これではいけないと人々は立ち上がった。


グローバル変数は悪とされローカル変数などが導入された。


だが、長いスコープを持つ巨大な変数があった。
スレッドで再突入されるコードがあった。
これではいけないと人々は立ち上がった。


その結果、クラスや名前空間によりもっと細かいスコープで管理されるようになった。


だが、煩雑なクラス定義が残った。
これではいけないと人々は立ち上がった。


その結果、無名関数やlamda構文やリフレクションなどの構文ができた。




プログラム言語の歴史は、
自由すぎるメモリ空間をいかに制限して使いやすくするか、
それと同時に、制限はするがそれでも高い表現力を維持させるにはどうすればいいかという、
矛盾しそうな気もする課題への挑戦だったと思う。