プログラマ崩れ
ある場所で書ききれなかったことを、ここで書いてみる。
私は、職業プログラマをやっている。といって、これは私が望んでやっている職業ではなく、成り行きでそうなった、というだけである。一応それで飯を食っているわけだから、プロはプロである。それを失ったら、私は当面生きていけない。
私が始めてであったプログラム言語といえば、下にも書いたMSXのBASICである。当時(私は小学生)は、プログラムを考えて組んでいたわけでなく、ベーシックマガジンなどに掲載されているサンプルをただ打ち込んで動作させてみる、といった感じだった。数十行から数百行打って、実行させてみる。そうすると、簡単な絵が画面に書かれたり、奇妙な音が出たりして私たちを楽しませてくれた。今思えば下らないが、新鮮で面白かった。
次に私がプログラムに触れたのは、大学に入ってからのことである。学校の電算室にあるWSで、Fortran77というプログラムを習った。Fortran77という言語は、数式をそのままコードに書いて計算できるので、科学計算用の言語として広く使用されているようだ。分岐やループ、或いは手続きや関数といったプログラムの基本原理は、とりあえずそこで身に付けた感じ。
間もなく、自分でもPC98を買ったので、何か言語を載せてみたくなる。で、買ったのが、値段も手頃で初心者向けというVBだった。当時、Windows3.1だったので、VB2.0だったろうか。VBがFortranと大きく違うのは、それがGUIツールであること。また、メインルーチンがなく、イベントドリブン型の構造であったことだ。最初はやや戸惑ったが、コーディングもGUIで簡単なので、次第にそちらの方へ馴れていった。とにかく、VBのコンポーネントの概念は、開発者にとって画期的である。完全な再利用性があり、コードの手間が大幅に削られる。この概念の登場によって、素人でも簡単にプログラムできるようになった、といっても良い。後に、この概念はActiveXとして拡張される。
社会に出て、その研修で使用されたのが、おなじみC言語だ。C言語は構造的にあまり上品とはいえない。実装されている関数も、その名前は英語が恐ろしく省略されたような名前で、予約語の殆どは記号だ。これぞプログラム言語だ、という感じである。
Cのソースは、作成者の性格がかなり出るといわれている。それだけ融通が利きやすい側面があるのだ。ただ、そのことがバグを誘発する原因にもなっている。結構いい加減に組んでも、コンパイルは通るので、そのまま実行されて、ハードで不正が起きたその瞬間に違反があがって停止する。それがシステムのカーネルまで侵食していたら、OSごと落ちることもある。まぁこれはCに限った話ではないが...
しばらく開発をやっていれば、短期開発という要求も当然出てくる。そこで登場するのがRADである。多くの場合VBが採用されるが、ランタイムが
必要なことと、インタプリタなので実行が遅いことが懸念されて、うちではDelphiが採用されている。
DelphiはBoland製のRADで、使用されている言語は Object Pascal というPascal言語の拡張版だ。これは、従来のPascalにオブジェクト指向の概念を加えて、さらに実装を豊富にしたもので、結構気に入っている。元々がプログラム構造学習用のPascalなので、結構型どおりの筋になってないとコンパイルが通らない。融通が利きにくい反面、開発者は自然に標準的なコードを組むことになり、予約語などもほぼ英語そのままなので、解析もしやすいのだ。しかもオブジェクト指向の利点を継承して、VBの流れを汲むコンポーネントの概念が採用されている。
ただ、Delphiで作られた実行体というのが、以上にサイズがでかい。これというのは、実はその内部に、VCLという標準コンポーネント郡をまるごと組み込んでしまうからである。これは、ランタイムが要らないことと引き換えに抱えてしまった問題ともいえる。特にWebアプリなどになると、この
欠点は致命的である。
そこで最近、注目されてきたのがJavaである。Javaは、目下勉強中だが、最初、その実行速度がかなり遅いことがあり、正直いってあまり良い印象はなかった。これは、JavaはOSの上で直接動作せず、そのさらに上に常駐しているJavaVMの上で稼動する、ということに起因するものだ。つまり、Javaの遅さは、JavaVMの性能がどうであるか、ということに全く依存してしまう。しかし、Java2になって、それもやや改善され、むしろ、軽量なプログラムがプラットフォーム(OS)を選ばず動作する、という利点の方が株を上げてきている。
しかも、Javaは最初からオブジェクト指向である。文法自体はCに似てるので、全く別言語というよりも比較的馴染みやすい。ん〜、今後はJava
の時代である。そう思う...
2001/03/15
[ MENU ]