言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

途中経過報告

改めて私が今やってる事を書くと、普通の人がプログラムを書く環境を作っているという事になります。なぜそんな物が必要かについては省略。この手の話になると出てくるのが、一つはハイパーカードを持ち出してきて、昔は良かったという話の流れ。もう一つ昨今のインターネットブームで JavascriptFlash が十分に普及している事から、実は普通の人がプログラムを書く環境はとっくに実現出来ているという流れがあると想います。

どちらにも感じる何か違う感じは、本当はその深くにどでかい宝物が埋まってるのに、海賊がカモフラージュで仕掛けておいた偽の金貨に騙されて満足してる感じなのです。過去を懐かしむのも、今の状況に満足するのも、どちらも違うんじゃないかと。

とはいえ正直、自分でも非力ながら色々作ったり話したり議論してるうちに、ちょっと弱気になるのも事実です。コンピュータの面白い部分は全部30年前のハッカーに発見し尽されてしまって、面白い部分は残ってないか、もしくその奥へ向かうには百年単位の時間が必要なんじゃないかなと。

見つからない物は書けないのだけど、プログラミングの宝物がどんな物か予想します。プログラムに審美感が必要だという事はみんな知ってると思います。だけど、そんな一部の人しか分からないような物じゃないはずなのです。本当は小さな子供がかわいい花や奇妙な虫をつい目で追いかけてしまうほど本質的な事のはずなのに、焼き物で言うと縄文土器さえ出来てない。山火事で偶然焼けた土を眺めて、一部のマニアックな人が喜んでいる段階。偶然便利な物が出来るけど、本当はまだ何も分かってない。

と悲観的になるのも単に自分が無知だっただけで、最近モナドの勉強をしていて、ぼんやりしている間に世の中随分進んだなと喜んでいます。Haskell の勉強を始めたの確か2000年ごろだから、7年かけてようやくモナドが分かってきた。7年前と今で何が違うかというと、その間にモナド知ってりゃ楽に作れた物を苦労して何度も作った事。後で考えてモナドはこういう問題を解くためにあったと分かった。悲しい事に問題を解く前には分からない。

C 言語プログラムの大域変数を消して行くといつの間にかオブジェクト指向なプログラムになってしまうように、モナドという名前を知らなくても、メタプログラミングには必ずモナドっぽい構造が出てきて、モナドという単語を知ることで無関係だったアイデアがドッキングする。すばらしい!これで土器の偶然の部分が一つ減るのです。

メタプログラミングという単語には、難しくて意味不明な雰囲気が付きまといますが、文化としてのプログラミングには絶対必要な物です(理由は省略)だからそこにモナドのような有望な道があると勇気付けられるのです。纏めると、とりあえず道は途切れていなかったという事です。