もずくです。
の続きです。
大学院に進学して、博士課程を修了するまでの5年間、基本的にC言語でプログラミングをしていました。(当時の研究システムの写真を載っけている記事)
この間にWindowsも研究開発用途で使われるようになり、そのメイン言語であった C++ を使用する学生も出てきました。とある先輩からは「C++はいいぞ」と何度も薦められましたが、私の指導教員から「C++だけはやめて」と禁止されていました。
当時大流行していたJavaやC++とC言語の一番の違いは「オブジェクト指向プログラミング」に向いているかどうかという点でした。オブジェクト指向プログラミングの基本となる「クラス」という概念を実装する方法が、C言語の仕様にはなかったのです。
しかし、時代は猫も杓子もオブジェクト指向。首振りカメラや映像切替器を制御するだけの私の研究でもオブジェクト指向で書いてみたくて、C言語の構造体と関数ポインタという仕組みを使って擬似的にクラスを表現していました。当時(現在でも?)C言語を使わざる得ない人たちの間では、C言語でオブジェクト指向プログラミングをするために様々な試行錯誤がなされていたかと思います。
そんな感じで、私はC++にひっそりと憧れを抱きつつ、指導教員に影響されて「C++は悪」という宗派に属していました。また、当時のJavaは計算がまだ遅くて、私が扱っていた実時間での制御プログラムには使用できませんでした。Javaに関しては、学部時代の授業で良い印象がなかったということもあります。未だに意味なく嫌いです。
プログラミングは研究の用途以外にもちょくちょく使っていて、ちょっとしたテキスト処理や画像処理ツールの作成などをしていました。そこではせっかくなのでC言語以外のプログラミング言語も触ってみたくて、C++とJava以外のオブジェクト指向言語をいろいろと物色していました。
そんなときにちょっとハマったのが Objective-C でした。Objective-Cはその頃登場したMac OS Xの公式プログラミング言語でした。記法は独特でしたが、C言語のマクロ的拡張(別の言語ではなくて、C言語にオブジェクト指向的な記法をラッピングしたような感じ)ということもあって、アンチC++/JavaのC言語使いからすると救世主のような言語でした。
学内の書籍部でObjective-Cの本を買って、その足で「珠緒ビューア」という、さとう珠緒の写真だけを見られる画像ビューアを作りました。当時好きだったんですよね、さとう珠緒。
Objective-Cにハマったのは、Mac OS Xへの純粋な憧れもあったと思います。あの頃、お金があれば確実にMacを買って、今でもApple信者をやっていたと思います。ターミナルが使えて、綺麗なGUIでも操作できて、Microsoft Officeも(不安定でしたが)使える、最高のUNIXですよね。研究で使いたかった…
その他、Tcl/Tkというプログラミング言語を必要に迫られて研究で使っていました(正確にはTclという言語とTkというツールキット)。当時メインで使っていたLinux上でGUIを作ろうとすると、Tcl/TkかQtくらいしか選択肢なかったんですよね。QtはC++だったので必然的にTcl/Tkになりました。
それと、比較実験のために3次元CGでシーンを再現する必要があり、3ds MAXという3次元CGソフトウェアのスクリプトに少し触れました。このスクリプト言語(MAXScript)、当時も少し話題になっていましたが、ソフトウェアの付属品にしてはよくできたプログラミング言語でした。
あとは、Rubyというプログラミング言語をテキスト処理に使っていました。最初はPerlというプログラミング言語でテキスト処理のスクリプトを書いていたのですが、私と同じ大学出身の日本人が開発したプログラミング言語ということでRubyに興味を持ちました。
Rubyは今でも一番好きなプログラミング言語です。ちょっと何言ってるかわからないと思いますがリテラルまでがオブジェクトという徹底ぶりで、例えば、「5.times
{ 処理 }」って書いたら処理を5回繰り返すんですよ、すごい。用途的に丸かぶりのPythonに駆逐されつつあるのが悔しい。Ruby on Railsみたいなのが出てきて復活してほしい。