魔法言語リリカル☆Lisp体験版をやってみた
以前紹介した魔法言語 リリカル☆Lispだが、TBで体験版が公開されているのを知った。んで、実際にやってみた。少々遅れた話題だが気にしてはいけない。
体験版は第2話まで。ストーリーに沿ってLisp(Scheme)を学習していくモードと、自由にプログラムを入力出来るフリーモードが在る。ほか補足説明や用語集も。
毎回起動時に初期化が必要となる。時間が掛かるが、私の環境で大体20秒ほど。それ程気にならなかった。
画面構成は普通のノベルゲーム。いや、NScripter使っているし当たり前なんだが。2人のおにゃのこ
にハァハァしながらの掛け合いを楽しみながらLispを学習していくと言う形。
1話毎に1つの話題を学習し、1話毎の最後に補足説明や用語集を確認出来る。
フリーモード。自由にLispプログラムを実行出来る……らしい。Lisp知らないんでどれぐらい再現出来てるのか知らないけど。これまた起動に時間が掛かる。私の環境下では約40秒ほど。少し長いか。
コレってバグ?
紹介記事だけじゃナンだし、体験版だし現在鋭意開発中なのは判ってるので、バグ無いか探してみて開発に貢献しようかな、と。といってもLispについては体験版の内容の分しか知らないんで、その範囲内で。まぁ、多分既に誰かがレポートしていると思うけどね。
次のような事(define
のネスト)をやると、変な結果が返ってくる。Lisp(Scheme)の仕様的にどうなのかは分からないけど、バグじゃないかなぁ。
(define a (define b 10))
(+ a 0)
上記コードで結果が173となった。変数名を変えると結果が変わることを考えるとバグっぽい気が。
プログラミングを題材としたゲーム
そういえば、プログラミング言語を学習するゲームって前もなんか在ったな、と。……あぁ、Missioin CとMission Jか。こういうのからプログラマ人口が増えたらいいなぁ。
で、ふと思ったんだが、別に学習に限らずプログラミングを題材としたゲームは作れそうな気がする。例えばC++のキーワードや関数名を使ったもじぴったんとか。与えられたプログラムをクラックしてパスワードを解せ(以下自主規制)
……まぁともかく慎重に設計しないと一部コアな人にしか受け入れられないものになりそうだが。
と、ココまで書いて詰みViとか在った事を思い出した。アレはコンピュータゲームじゃないけど、ゲーム的なモノだなぁ。ショートコーディングなんかも、もはやゲームの領域だろう。
つかプログラミング自体がゲーム的な部分を持つような気も。バグという敵(?)を倒して、完成というクリアを目指すっていう。
昔のアドベンチャーゲームは文字としてコマンドを入力する方式だった、らしい。実際にやった事は無いんだけど。『シラベル タンス』みたいな感じで。今なら表示される選択肢の中から『行動』と『対象』を選ぶって形になるのかな。この『コマンド入力』も言ってみれば『コマンド(=プログラム)を記述している』という受け取り方が出来る訳で。今コマンド入力式のヤツを出してみたら意外と新鮮で売れるんじゃないかとか妄想。うーん、無いか?
- 私の環境
- Windows 2000 SP4、mobile AMD Athlon XP 1400+、メモリ128MB
……な、ノートPC。 - C++のキーワードや関数名を使ったもじぴったん
- 名づけて『もしぴったん』(moCPPittan)。………………スマン俺が悪かった。
- 詰みVi
- 以前どっかでみたキオクが有るんだが、ググッても出てこない。あれ?おっかしーなぁ。要は提示された内容をViでいかに短いアクションで実現出来るかを競うもの。
>次のような事(defineのネスト)をやると、変な結果が返ってくる。
>(define a (define b 10))
>(+ a 0)
defineの戻り値は仕様では未定義です。
(だからこのようなソースを書いてはいけません(笑))
NSclisperではシンボル(文字列みたいなもの)を返してるので、
加算をするところでエラーにするのがいいんですが、
四則演算を始め、どの関数も型チェックを行ってないので、
足し算すると変な結果が返ってしまうようです。
おお、何方かと思ったら、中の人ではないですか。
お忙しい中、コメントどうもありがとう御座います。
> defineの戻り値は仕様では未定義です。
> (だからこのようなソースを書いてはいけません(笑))
あぁ、そうか。『未定義』と言う可能性が在りましたね。
何となく『未定義』と言うとC/C++の専売特許のような気がしていましたが(笑)
わざわざ有難う御座います。
172
(* 'b 1)
173
(* 'c 1)
174
(* 'a 1)
172
(* 'abc 1)
175
(* 'foo 1)
176
(* 'd 1)
177
内部の変数番号になってるようですね。
『変数番号』って初めて聞いた……(^^;
リリカルLispの実行エンジンであるNScripterは、
数値変数として符号付32bit整数が4096個用意されています。
正確には、巨大配列が一つあるだけです。
その配列のインデックスのことを『変数番号』といいます。
ローカル変数なんてものがなく、泣かされました(笑)
あぁ、どうりで『(Lisp OR Scheme) 変数番号』でググッてもそれらしいものが出て来ないなと。
蛇足ながら、
> ローカル変数なんてものがなく、泣かされました(笑)
私のプログラミング経験が
N88-日本語BASIC(86)→C言語
……だったんで、ローカル変数の在るC言語が天国のように思えたり(笑)