いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

インタプリタを作る(6)雑談

 記事「インタプリタを作る」の続きです。

www.omoshiro-suugaku.com

作成中のインタプリタは、例えば

a = 3
x = 6 - (2 + 3) * a + a
x = x + a / 10

というコードを読んでちゃんと -5.7 と計算できるようになりました。通常の数値はもちろん変数も使うことができ、数式通りの計算(括弧優先、乗除が加減より優先)が可能です。ここまでくると簡単な電卓のプログラムなどはもう書けます。

 理屈通りなのですからちゃんと動いて当たり前。それでも単なるテキストである

a = 3
x = 6 - (2 + 3) * a + a
x = x + a / 10

ワープロで書いたものでもよい)をプログラムに渡して、書いてある通りの計算を実行させるなど、こちら方面の知識がなければ一体どうやって実現しているか全く不明でしょう。ここまでできるようになっただけでも、大げさな言い方をするとぼくには「プログラムに命が吹き込まれた」みたいな気がします。このあと、for文、while文、サブルーチン(関数)、変数の配列などの機能を入れてゆく予定です。

 若い頃から、BASIC、アセンブラ、C、Prolog、C++、C#、Pythonといくつか趣味でコンピュータ言語を扱ってきました。そのたび毎に「どうして単に書いたテキスト通りに機械を動かせるんだろうか?」と疑問を持っていました。「人間がそのように作ったものなのだから、そんなの当たり前だ」という答えもあり得ます。でも不思議なことは自然の中にあるものだろうと人間が作ったものだろうと、ぼくには同じです。不思議なことがなぜ起こるのか、どういう仕組みなのか知りたいというのは一緒なのです。

 余談ですが……数学なんか何の役にも立たない、というのはとにかく聞き飽きています。恐らくそういう主張をする人たちはきちんと数学を勉強しておらず、今現在数学がどこで使われているのか、限界がどこにあるのか、恐らく興味もなく把握もしていないでしょう。その上数学が苦手だったりすればまあ「役に立たない」と言いたくなる気持ちは分かります。しかし不思議な現象の分析、建物や機械の設計、ネットなどで使われる暗号など、数学抜きでは成立しないというのが事実です。ぼくには数学を始めとするいろんな分野にある理論を勉強しないというのはもったいこととしか思えません。