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

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

インタプリタ作りは面白い!

 架空のコンピュータ言語です。文法はぼくが決めました。BASICに近いですが、適当です。

f:id:Inuosann:20200908203439p:plain

とにかくこれをコンピュータに渡すと……

 

1から100までの自然数の総和 = 5050.0

 

と表示されます。今回、上のような「プログラム」を渡すとそれに従っていろいろ作業してくれるシステム(インタプリタ)を作りました。上のような、言わば文書をコンピュータに渡し、それをコンピュータに解釈させてこちらの意図通りに動かすわけです。ぼくが作ったのは実験室レベルですが、例えば有名なコンピュータ言語Pythonインタプリタです。インタプリタ作成は3回目ですが本当に面白く、やめられない……という感じ。

 「そんならPythonを使えばよいのでは?」などと言う人もいるかも知れません。いや、プログラムを実行して、上の例で言うと 1+2+3+……+100 を求められさえすればいいならもちろんその通りです。でも、そのままではPythonを始めとするコンピュータ言語はなぜあんなテキストを読んでその通りに計算など実行することができるのか、その原理は100年経っても理解できません。理解するのに最もよい方法は自分で作ることです。PythonRubyなど、いきなり作れるはずはありません。でも実験室レベルのインタプリタなら、きちんと勉強すればあとは執念(!!)さえあれば可能です。自分で作ることによって理解の曖昧な部分も明らかになるし、他人に説明するつもりでやればなおよろしい。このブログに「実験室」と名前をつけたのはそういうことなのです。

 万事その通り……ってわけでもないとは思いますが、疑問に思ったら自分で手を動かして試してみるのは理解への最短コースです。ガウスガロアならともかく、見ているだけ、聞いているだけではどうにもなりません。

 ……と、何となく正しそうな事実を書いてみましたが、そんなことより何よりインタプリタ作りは面白い!! こんなに面白いこと、あまりないと思います。面白いと言っても、水泳が大好きな水泳選手がタイムが伸びなくてつらいとか、そういうのはあります。不具合(意図したとおりに動かない)の原因がなかなか分からないとか、単調だけれど長い力仕事みたいな部分もあるとか。でもそういうところを克服すること自体も面白いのですね。何だってそんなものなのかも……。