SSブログ

C・Pascal→Perl→Ruby→Python→Scheme [プログラム]

 これは僕が普段使うプログラミング言語の変遷である。と言っても、きちんと分かれているわけではなく、現在は実用的なものにはPythonを使い、趣味でSchemeを勉強している。

 何かプログラミング言語について意見を書く場合には、このような変遷をしてきた経験からものを言うことになる。それは経験に基づく言葉、と肯定的に捉えることもできるが、その人の偶然の経験に縛られた特殊な意見、と否定的に捉えることもできる。そのどちらであるかは、僕には分からない。

 それでは、何故、あるいはどういうきっかけで、言語を変えてきたのか。

 最初、まだMS-DOSの時代、そもそも、Unix起源のスクリプト言語を動かすのは、かなり大変だった。いろいろ工夫をしなければならなかったし、今のように参考書もたくさんは出版されていなかった。いきおい、プログラミングと言えば、コンパイル型、特にCかPascalかBasicだった。(もちろん、アセンブラもあったが。)

 僕は職業プログラマでもなく、またコンピュータ科学者でもなかったので、自分の仕事や研究に役に立つようなプログラムしか作るつもりはなかったし、そういうことに必要な知識しか身に付けてもこなかった。一言で言えば、テキスト処理がほとんどのテーマだった。グラフィカルな処理やゲームのようなリアルタイムの処理、科学的な計算などは何一つ作ったことはない。

 いつも必要に迫られプログラムを作っていたし、その必要も、個人的な必要性だったので、プログラムは公開されるような品質のものではなく、とにかく目の前の仕事を楽にするためのツールとして作っていた。当時も、CのコンパイラはMicrosoftかBorland(当時は別の名前だったかも知れない。要するにTurboCだ。)、あるいは日本のLSI-Cなど多様なものが製品としてしのぎを削っていたので、使いづらいPerlを使おうとは思わなかった。それに非力な機械でも、Cで書けばそうとうに高速に動いてくれた。

 その後、Macintoshに移ってからも、CodeWarriorという使いやすい統合環境を備えたCを使ってテキスト処理のプログラムをしていた。

 始めて公開するようなプログラムを作ったのは、ローマナイズされたチベット語のテキストを、Macintosh上のチベット語システムのコードに変換するソフトだった。TibetanConverterという。これは、単にテキスト処理の部分だけではなく、Macintoshのプログラムとしての必要な要素を備えていた。つまり、AppleEvent対応とか、ダイアログによる環境設定の処理とか、プログラム全体も、コマンドラインとしてではなく、グラフィカルなユーザーインターフェースで動くようなイベント・ドリブンなプログラムだった。

 そういう部分と、チベット文字コードの変換エンジン部分は別に切り離され、特にその変換エンジンの部分のコードはかなり複雑なものとなった。

 このプログラムは極めて高速に動いた。1M以上のテキストを1、2秒で変換してしまった。さすがにCである。

 しかし、その変換処理は余りにも複雑なので、細かい手直しをするのは非常に骨が折れた。今だったら、YaccとかLexとかを使って書いていただろう。(「いただろう」という過去形ではなく、時間があれば、そうしたいと今でも思っている。)

 その後、今度はTeXでチベット文字を表示したいと考え、ローマナイズしたチベット語テキストやチベット文字のテキストをTeX用の文字コマンドに変換するプログラムを公開した。これを作るとき、今後のバージョンアップなども含めてメンテナンスがしやすいように、そして、前の経験から、Cでテキスト処理を書くのが極めて大変だということもあり、Perlの正規表現を多用したスクリプトで作った。他に、もちろん、TeXのコマンドも作り、フォントもポストスクリプトフォントをTeX用に変換したり、と複数のファイルからなるパッケージとして公開している。

 正規表現で実現しようと思ったのは、実は、オライリから出ている、あの有名な『詳説 正規表現』という本を読んだことがきっかけになっている。この正規表現の威力は素晴らしく、コード量はCで書いたときと比べて劇的に減ってしまった。確かにスピードは若干遅いかもしれないが、30秒もかかることはない程度だったので、十分実用になった。もはや、こういうテキスト処理をCで書く気にはならなくなった。

 その後、Rubyがおもしろくなって、目録検索のCGIはRubyで書いているし、授業で教育言語としてPythonを使うようになってからは(最初はRubyを教えていたが、あの純粋オブジェクト指向やイテレータの概念はやはり初心者には難しい)、自分で書くものもPythonにしている。現在、模索している日本語スクリプト言語wythonも、Pythonで書いている。Pythonのどこがいいか、ということについては、また別の機会に書くことにしよう。ただし、僕はPythonに満足しているわけではない。PythonはPerlほどではないが、余りきれいな言語ではないと感じられる。

 そして、今はLispの一方言であるSchemeとか、XSLTとかに興味を持っている。特にSchemeは極めてシンプルで、しかも文法がきれいで、作るのがおもしろい言語だ。まだこれで実用的なプログラムを作ってはいないし、大きなものも作れないかもしれないが、趣味の楽しさは十分味わえる。ただ、余りにも特殊なので、これを授業で取り上げることができないのが、玉に瑕である。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。