SSブログ

プログラミング言語の経験(5) [プログラマー現役続行]

1991年の頃から自宅ではMacintoshを使用していたのですが、1996年の夏にWindows PCを購入したこともあり、好奇心からJavaの学習を始めました。

3年近くC++でプログラミングしていたので、ある意味、書き方が異なる程度ではあったのですが、「インタフェース」だけは当初理解できませんでした。C++には、言語仕様として「インタフェース」は存在せず、Javaにはinterface予約語で宣言するインタフェースが存在します。インタフェースを理解するのには、一ヶ月以上を要したと思います。しかし、本当の意味で理解するようになったのは、かなり後です。

ある意味、3年間のC++でのプログラミング経験は、「Programming in a language」に過ぎなかったのです。つまり、C++が提供する設計道具を使用して設計しているにしか過ぎませんでした。C言語で手続き型プログラミングをするけど、オブジェクト指向プログラミングをしないと同じです。

仕事ではなく、趣味でJavaを学び始めたのですが、Javaを通して私の設計道具に「インタフェース」が増えたことになります。Javaからは色々な影響を私自身は受けましたが、「インタフェース」という道具は強力でした。あまりにも、強力だったので、2000年から再びC++を用いた開発に関わるようになった時に、「インタフェース」の概念をC++での開発に積極的に取り込むことにしました。つまり、「Programming into a language」を行った訳です。自分が行いたい設計を与えられた言語でどのように表現すれば良いかということです。言い換えれば、C言語でオブジェクト指向プログラミングするのと同じです。

1996年の夏から学習を始めたJavaですが、仕事で私自身がソフトウェアをJava言語で書いたのは、2005年の頃に3ヶ月ぐらいしかありません。Javaでのプログラミングは、その多くが、趣味で開発していたMessagingToolです。1980年代からXerox社内では使用されたいた、いわゆるチャットツールのJava版です。

MessagingToolの書き直しを通してJavaを使い続けていました。
  • 最初のバージョンでは、Javaの言語仕様にネストしたクラスやインタフェースがない頃で、AWTを使用して書きました。
  • Java 1.1が登場して、ネストしたクラスやインタフェースが導入されたので、イベント処理のコードを書き直しています。
  • AWTに代わるSwingが登場したので、大幅に書き直して、AWTとSwingの両方をサポートするようにしました。
  • Java SE 5.0のリリースでは、ジェネリックスを用いた書き直し
  • Java SE 8のリリースでは、ラムダ式を用いた書き直し
  • 並行して様々な機能を追加していきました。ファイル転送機能、会議室機能、それにおまけの付箋紙機能とか。
他にJavaで書いているのは、私のホームページです。ホームページのソースコードはJavaで書かれており、GWT(Google Web Toolkit)を用いてJavaScriptへコンパイルされています。

仕事でJavaを使用して実際にコードを書くことはあまりないのですが、2000年から再びC++を使用した開発に戻ってからは、2009年まではC++でコードを書いていました。しかし、Javaを通して学んだ設計方法をかなり適用していました。

コメント(0)