プログラミングのすゝめ①
こんばんは, pyt-314です. さて, いよいよ昼間にこんなもの上げ始めましたが気にしないでください. とりあえずまた脳みそパンクしちゃいましたので休養中です. 志賀直哉みたいな.
何はともあれプログラミングのすゝめですぞ.
プログラミング, 主に出てくるのはコンピューターに対してプログラムを書くような行為のことです. これらのプログラム, なかなか凄くて人間の扱う言語とほとんどおなじように扱えたり, 値の代入ができたりするのです!
当たり前だろ, と思った方. この機能を実装してみてくださいよ(訳:アセンブラを作れ).
骨が折れるような作業ですぞ. まあまだシンプルっぽそうですが. 基本的に頭の中でなんか遊んでいるのですが, これを機械語と直接対話でする必要があるとなったら大変ですね. それだけ普段のプログラミング言語の恩恵は大きいのです.
私はプログラミングといっておきながら, ここで実際にすゝめるのはLispのことです. 先に挙げた, 機械語の骨の折れる作業のことを解決してくれる言語のなかでも特にクールな存在. Pythonとかのような圧倒的高級言語のように中身がブラックボックス感があるはわけでもなく, C/C++のようなコンパイラ言語でもないのにC/C++並みの速度で走る. そして何よりも特筆すべきはその構文です. たとえば3+2+5*3の結果を表示するとすれば, こんな感じになります.
(print (+ 3 2 (* 5 3)))
はい, ポーランド表記法です. このいっぱいの括弧のおかげで, Lisp インタプリンタも私も, たぶん文字どおり"同じプログラムと解釈する"ことができます. メモリの操作をあまり意識しなくてもコンピューターと同じ動きができるのです. これ, 感動しませんか? 普段扱っているのはPythonとArduinoIDEがほとんどなのでそれらを比較対象に挙げますが, 先述の通りpythonはメモリの操作がどうなっているのか(GarbageCollection)がいろいろ大変だったり, インタプリンタのロックがでかい. まあじきにそれもなくなるっぽいのですが. またArduinoIDEは, まあ半分くらい動的みたいなところはあるのですが(配列長を定義しなくても数えてくれるとか)なんというかビミョー. Lispのコードを書いている時のような明快さに妙に欠けるんですよね. まあLispでそこまでいっぱいコードを書いているわけではないのでその影響もあるかもしれませんが. とにかくLispはコードを書いているときにコンピューターでの処理が明快に浮かんでくる. その点ではアセンブラや機械語も好きですが, お手軽さと明快さを兼ね備えたLispはいいぞぉ…と布教しておきます.
本日は以上. 今晩もお疲れ様でした. 散歩してきます.