タスクベースプログラミング言語
最近友人と「コンピュータゲーム専用のプログラミング言語というのは可能か?」という話をしていました。これはゲーム用のライブラリルーチンが豊富という意味ではありません。そういう類の物なら良質な物が多数発表されています。
サウンドノベルなど、ジャンルを限定させれば、専用言語という物も存在しますね。詳しくしりませんがDHTMLとか。アスキーが作っているツクールシリーズも、ゲーム世界を構築し、フラグ管理やストーリー進行を記述する事が出来るので、広義のプログラミング言語と言えるでしょう(あの場合は、エディタ、コンパイラ、VMまで全部入ってますが)。
その時友人と話していたのはそういう事ではなく、汎用的なゲームプログラミングを可能にする為には、それ専用の言語体系が必要なのではないか? という物でした。我々は現在C++でゲームを作っていますが、C++は本当にゲームが作りやすい言語なのか? 他に選択肢があるのではないか? あるとしたらそれはどんな形をしているのだろうか?
もちろん結論は出なかったのですが(爆)、「今やってるタスクベースのプログラミングスタイルを、言語仕様のデフォルトに出来ないか」というアイデアが多少ひっかかりを持ちました。何故ひっかかったのかというと、みはえるにとっての「オブジェクト指向とはなにか」を思い出したからです。
みはえるがはじめて「オブジェクト指向」という言葉にであった時、頭の中でイメージしていたのは「プログラマがあらかじめオブジェクトをたくさん作っておけば、オブジェクト同士が状況を把握して、必要に応じて処理をしてくれる」という物でした。そんなわけは無く、現実のオブジェクト指向は十分に泥臭い物でした(笑)*1。
タスクベースのプログラミングでは、個々のタスクは自律的に行動します。必要に応じて他のタスクを起動したり、自分自身を削除したりします。これを言語体系にまで高める事は出来ないでしょうか? ゲーム以外には使い道が無いかもしれませんが、本来プログラミング言語はその用途に向けて特化された物が存在すべきだと思います。
「でもさあ、今現在C++でそのタスクベースプログラミングとやらを実現しているわけでしょ? それは、新言語を作る必要は無いって事を証明してるんじゃない?」
おっしゃる事はごもっとも。しかしですね、これには面白いアプローチがあるのですよ(続く)