見出し画像

Retro-gaming and so on

RE: プログラミング日記・随時追記 2021/11/01

星田さんの記事に付いて。

 非決定性・・なんか凄そうなんだけどこの前の単元の「継続」とかもちゃんとやってないし全然理解できん(^o^)。

いやいや、かめへんかめへん。
ぶっちゃけ、取り敢えず「マクロ」、つまり「15. 構文の定義 (マクロ)」  まで終われば今のトコ充分です。
そうすればOn Lispを攻略する取っ掛かりは最低限出来る。

そもそも、マクロの章以降「何のためにあるのか」初見はピンと来ないでしょ(笑)?

まず、非決定性。これは「探索」と言う技術のある意味焼き直しなんですが。
何故にこれが取り上げられてるのか?
もちろん一つは「継続の応用」なんですが、もう一つは、このプログラムを世界で一番最初に言い出したのが、Lispの発明者、ジョン・マッカーシー先生なんです。 => Ambiguous Functions(Amb、と言う名前の元ネタ)
彼が最初に非決定性計算、ってのを言い出した為、ルーツ的にはLispに関係あるよ〜、と言わんがために・・・いや、実際そこまで関係ねぇんだが(笑)、いずれにせよそれが理由で良く取り上げられるのです。
だから今んトコ、あんま関係ないでしょうね・・・・・・実際の「探索」に付いてはLand of Lispでスゴいのにお目にかかるでしょう。

んで継続。
実は本当に押さえておくべきは取り敢えずはCPS(継続受け渡しスタイル)です。まずはこれさえ分かれば今んトコ他はほっといて良い。
っつーのも、call/ccをマジメに考え出すと意味が分からなくなる。こいつはSchemeの中の異端です。こいつの性質は「表裏がひっくり返ったクロージャを持つ」事なんですが、多分それだと意味不明でしょう。
しかもこんな機能を持ってる言語はほぼない(辛うじてRubyにある?)。だから他言語と比較出来ない(さすがのPythonにも存在しない)。

ポール・グレアムのOn Lispで継続、そして非決定性で再び同じテーマを目にする事になる。その時、二つの資料(On Lispと「もうひとつのScheme入門」)を突き合わせて見比べて勉強するのが一番効率的なんじゃないか、と思います。
そして驚くべきことに、ここで初めてANSI Common LispがSchemeに敗北するところを見る事になるでしょう。

クラスとか参考になったのと独自のルール(タグ的なものを埋め込んだもの)で書いたシナリオファイルを用意して、それを元にアドベンチャーゲームを作るというのは参考になったなぁ。

まぁ、多分、その本持ってないんだけど、独自言語までイカンでもADV用のバッチとかBASICっぽい何か、を作るハメになったんでしょ(笑)。
これね〜、実際問題ね〜、「プログラミング言語の進歩」ってのはバッチ式、構造化、オブジェクト指向、関数型、とか進歩してるように見えるんだけど、結局 ADVとか書くなら

  • 古き良きBASICっぽいバッチ式のプログラミング言語が一番

っつー事になっちゃうんだよな(笑)。
これ、何でか、っつーと多分、

  • 「物語」は逐次式で進むのでバッチ式が一番相性が良い
からなんだよね(笑)。
だって、物語で「構造化物語」とかあり得ないわけじゃん(笑)。行動、「恋愛」を定義して、登場人物に適用、ってカンジで書かないでしょ(笑)?
クラス主人公を定義し、クラスヒロインを定義し、それぞれ「愛する」メソッドを定義してるので互いに出るセリフがこれだ、なんつー物語の書き方もしない。
だからADV書くなら古き良き、今だと機能がなくって「ダセェプログラム」になる言語の方が相性良い、って事実を目にするわけだ。

実際、Windowsのエロゲでも基本バッチ式のADV専用スクリプト言語で記述されてる例が多いんです。
リリカル☆Lispを書いてるnscripterとか、あるいは吉里吉里とかが有名ですね。
Windowsのエロゲって7〜8割方、実は上記のADV専用スクリプトで書かれてるんじゃないかな・・・・・・。

言い換えると、ADVを書くなら「プログラミング言語としては強力で豊富な機能がある」Python使うよりnscripterとか吉里吉里等の専用言語を使った方が簡単だ、と言う身も蓋もねぇ話になります(苦笑)。

ちなみに、PythonにもADV専用で組み立てられてるRen'Pyと言うライブラリが存在します。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「RE: プログラミング日記」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事