魔法==プログラム
第1話の呪文の書式を修正しました(すみません……)。
プログラムの説明は少し複雑かもですが、退屈にならないよう頑張ります。
ちょっと落ち着いて、呪文をよく見てみよう。
--------------------------
instant light(red_stone rs){
reverse_element(rs, LIGHT)
}
--------------------------
……見ればみるほど、俺が仕事で使っているCというプログラミング言語によく似ている。細部は違うみたいだが。
「この呪文、名前とかある?」
「ええと、私達は光の呪文と呼んでますけど」
「なるほどね」
ここでプログラムについて簡単に説明しておこう。
プログラムというのは、コンピューターを動かすための命令の集まりのことだ。
コンピューターは、なにかしらの入力を受けて、それを変換して出力する機械だ。
例えば、キーボードの「A」のキーを押す。これが入力。
コンピューターはその入力を検知して、画面に「A」の文字を表示する。これが出力。 これを沢山組み合わせれば、ゲームを作れたり、動画配信サービスを作れたりする。
まあ、ゲームを作るにはこの入力と出力を1万個くらい組み合わせることになる。ムチャクチャ大変だ。
でも、基本は同じ。入力と出力だ。
「光の呪文」に戻ろう。
--------------------------
instant light(red_stone rs){
reverse_element(rs, LIGHT)
}
--------------------------
これはいわゆる関数という奴だ。一個の入力と出力をひとまとまりにしておく物。
数学の授業で"y = f(x)"とかやったことあるだろ? あれと同じ。
xが入力で、yが出力。入力を出力に変換するのがf、関数(function)だ。
関数は、大抵こんな感じになっている。
--------------------------
[関数の名前]([入力]){
[変換する内容]
}
--------------------------
光の呪文に当てはめてみるとこんな感じだ。
[関数の名前]instant light
[入力]red_stone rs
[変換する内容]reverse_element(rs, LIGHT)
まず、[関数の名前]。
[関数の名前]は、文字通り関数につける名前だ。
"instant light"は「光の即席魔術」という意味だろう。
次に、[入力]。
の"red_stone rs"には少し説明が必要だ。
これは"red_stone型のrs"という意味だ。
型というのは、「入力する物の種類」を決めるためのルールだ。英語ではtype。
関数は、自分の中で処理できる入力の種類がある程度決まっている。
キーボードの入力を受け付ける関数に、音声波形を入力されても処理できないし、最悪コンピューターが故障するかもしれない。
そこで、「この関数は、キーボードからの入力だけを受け付けますよ」というルールを、型で指定するのだ。
"red_stone rs"をもう少しくだけた言い方に直すと「red_stone型の入力を受け付けて、その入力にrsという名前を付けますよ」という意味になる。
さっきナツミは「赤石」という石を羊皮紙に投げつけていた。
赤石=red_stoneなのだろう。この呪文は、赤石を入力にして、光を発するんだ。
最後、[変換する内容]。
ここに書いてあることは、正直俺にもよくわからない。資料が足りない。
でも構わない。プログラムを書いている時はよくあることだ。
始めは、分からなくても動けばいい。理屈はあとからついてくればいいんだ。
ひとまず動かした方が、楽しいしな。
とはいえ、想像することはできる。
"reverse_element(rs, LIGHT)"これは、「reverse_elementという関数に、rsとLIGHTを入力として渡します」という意味だ。
どこかにある別の関数を呼びだしているわけだ。reverse_element……「元素に戻す」かな? rsというのは入力の所にあったred_stoneだ。LIGHTは光、まんまだな。
「ナツミ。赤石ってのはなにでできてるんだ?」
「なにって言われても……鉱石の一種ですよ。元素構成で言えば、光と、土と……」
「元素? なにそれ?」
「万物を構成する要素です」
「あー、なるほどね。つまりこの光の呪文は、赤石の中から光の元素だけを取り出しているんだな」
「え、あ、はい! そうです!」
ナツミがキラキラした尊敬の眼差しを俺に向けてくる。こそばゆいが、気持ちがいい。
「よし、だいたい分かった。実験してみよう」
「実験。なにをするんです?」
首をかしげるナツミに、俺は言った。
「呪文を書き換えてみるんだよ」
プログラムの解説は今は簡略化しています。
最後まで読んで頂きありがとうございます。
評価・ブクマをして頂けると励みになります!