ぼくと Scheme
ぼくが初めて Scheme に接したのは、20年以上前ではないだろうか。
ぼくは昨年、しかも1年が終わりを迎えそうになってから、APL と AutoHotoKey を自分のものにすることができた。
また、昨年12月、大晦日が近づいてから Scheme に注目し始めた。なぜ、若い頃に Lisp や Scheme に接していたのに深く学ばなかったのだろう。使わなかったのだろう。
C、C++、D、Go、PureBasic、Delphi、Lisp、Scheme、Logo、Prolog、Haskell、OCaml、Erlang、Scala、Io、Perl、AWK、Ruby、Python、Lua などなどと多くのプログラミング言語を学んできたが、どの言語もただ学ぶだけで長く使うようなことはなかった。
で、学んでから使わないまま5年、10年、20年と経ってしまうと、そのほとんどを忘れてしまう。忘れるくらいだから、まぁ、理解のレベルも低かったのだろう。
もうぼくも若くないので、最後の取り組みとなるプログラミング言語がほしかったわけだが、気の多いぼくは、何度も今度こそはと思いながら、なかなか定めることができないまま今日まで来てしまった。
今、Scheme に取り組み始めて、その上、おもしろくなっているので、2014年を通して Scheme に取り組むことができればと願っているところだ。
さて、ここに2冊の Scheme 本を載せているが、これは昨年12月になってから読み始めてほぼ読み終わった書籍だ。理解は割合直ぐにできても、知識として定着しにくいぼくの脳みそのためにもう一度読み直そうと思っているところだ。
ああ、そう、それで、この2冊はかなり良い Scheme の入門書だと思う。皆さんにもお勧めしたい。岩波の Scheme 入門はなぜか今でも古書として安く入手できるので、これから Scheme を覚えたいという人にはとくにお勧めだ。
Scheme 本といえば「計算機プログラムの構造と解釈」なども持っていたが、読まないまま家人に棄てられてしまった。何てこった。
今なぜ Scheme かというと、ぼくの気まぐれだけではなく、ある程度の必然性があるのかもしれない。というのも、その昔ぼくが接した Scheme の処理系は日本語の問題もあったと思うし、ぼくの気持ちを刺激する魅力的な処理系がなかったということもあると思うのだ。
Racket などもつい最近、名前を変えて整ってきた処理系のようであり、この Racket と Schluessel の存在が大きいように思う。
今の段階では HandyScheme にも楽しませてもらっている。
前回の HnadyScheme の紹介で取りあげた、小さなサンプルプログラムにもうちょっとだけ、手を加えてみたのだ。
処理したいテキストファイルを画面上にドロップするとそのファイル名を表示する。「実行」ボタンを押すと、ドロップしたテキストファイルのコピーを out.txt に作る。このテストプログラムでは、一番簡単な、ドロップしたファイルから 1行ずつ読み込んで、out.txt に 1行ずつ書き込み、最後までコピーしたら終了するとしたが、1行ずつ読み込んで処理をおこない書き込むというプログラムに拡張することもできるわけだ。
上がその実行時のウィンドウとダイアログだが、十分吟味したものでも何でもない。まさにテストプログラムだが、それでもどのようにプログラムを書いたらよいかの指針がわかるし練習にもなっている。
下が、そのプログラムのソースコードの全てだ。
8行目の (display buff outport) は、元々は (write buff outport) と書いたのだが、out.txt の内容の全ての行が "" で囲まれていたので、対処療法的に display に変えたのだった。
自前で定義した fileinout 関数はもう少しよい書き方があるだろうが、今回は結果オーライでよしとした。ちなみに、この小さなテストプログラムを実行ファイルにしたら 171 KB になった。HandyScheme は、本質的に GUI 画面の品質はちょっと低めだが、メイン画面を設計し直して本格的なアプリケーションを作ってみたいと思っている。
例えば、EAQuery で書いたプログラムを今回のテストプログラムの方式で、MQL4 のソースコードに変換するプログラムを書くこともできるだろう。HXML で書いたコードから HTML と CSS、JavaScript ファイルを生成するプログラムもこの方式の延長線上に実現できるはずだ。
ここで見たように HandyScheme はかなりお手軽だが、今年からは Racket をかなり深く調べていくつもりだ。
どの言語にもいえることだが、特に Scheme は慣れが必要だと感じる。2014年を通して経験を蓄積したいと思っている。そして Scheme をぼくが最も得意なプログラミング言語にして学習の最後を飾れればという希望をこの数日持っている。
そして、Scheme を FX に応用したい。
-----------------------------------------------------------------------
Scheme + AutoHotKey + EAG + MQL4/5 ==> FX ROBOT
-----------------------------------------------------------------------
これが今年の抱負だね。
そういえば、Scheme も AutoHotKey も EGA もこのブログを書くことで、出会うことができたものたちだ。もしこの「年金ロボットをめざして」を書いていなければ、多分、出会うことも再発見することもできていなかったと思う。
そして、これらの全てが、年金ロボットをめざすことに繋がっていくのだとしたら、回り道ばかりであったともいえないだろう。
そう信じて先に進むとしよう。