皆さんが基本としているプログラミング言語は何でしょうか。 70年代(汎用コンピュータの時代)から使われているCOBOLやFORTRANそしてPL/1。 パソコンが身近になった80年代ではBASICやアセンブラが使用されていました。 ちなみに筆者のベース言語はC言語です。 あの頃はかなり勉強しました。「C言語入門(アスキー)」を教本としてマーカーを引きまっくていました。 苦労して覚えたせいですね。そのあとどんな言語を学ぶときも、C言語との比較で習得してきました。
オブジェクト指向が主流となった今では、たくさんのプログラミング言語が存在します。 一例として、弊社で使用しているプログラミング言語をあげます。 古くから使っているC言語やC++。業務アプリケーションの開発で使用するVusual BasicやDelphi。 WebプログラムをつくるときのJavaやPHP。最近ではVisual Basic.netやC#.netも使っています。 次から次へと新しい言語が生まれてきます。技術の進歩って本当にすごいですね。
「言語なんてへっちゃらさ。」本コラムのタイトルです。 今までに色々なプログラミング言語を扱ってきました。 でもどんな言語でも、文法の違いと、トレンド技術の表現方法の違いなんですよね。 ほとんどの言語で基本となる要素は次の通りです。
- 基本データ型(整数型とか文字列型とか)
- 配列
- 記憶クラス(スコープですね)
- 演算子
- 制御構造(条件とか繰り返しとか)
- ライブラリ
これらの違いを抑えれば50%は大丈夫。あとの50%。ここに時代のトレンドが加わります。 今のトレンドはオブジェクト指向です。 オブジェクト指向には3つの機能があります。
- ポリモフィズム (多態性、多相性)
- カプセル化
- クラスの継承
上記3つの機能を実装したプログラミング言語をオブジェクト指向プログラミング言語 (OOPL; object-oriented programming language) と呼びます。 オブジェクト指向プログラミング言語の共通要素は次の通りです。
- クラスとオブジェクト(クラスを定義してそのオブジェクトを作成します)
- 継承とポリモーフィズム(特化と汎化、仮想メソッドとその上書きです)
- 演算子のオーバーロード(作成したクラスに基本的な演算子を追加します)
- インターフェイス(クラスの規則を定義します)
これで、「言語なんてへっちゃらさ。」
でも勘違いしないでくださいね。 プログラミング言語をマスターするのが簡単とは言っていません。 非常に難しいです。
自分の中でしっかりとした言語の土台をつくり、新たな言語の仕様や特性、そしてその技術が生まれた背景を理解する。 これって、大変なことですよね。
本屋に行って技術本コーナーをのぞくと、「逆引きXXXXX」がたくさんあります。 弊社でも、「逆引き」シリーズを好んで購入する技術者が多くいます。 「逆引き」シリーズはとても便利ですよね。筆者もよく助けてもらってます。 その反面、新しい言語を覚えるための最初の購入本が「逆引き」シリーズと聞くと頭を抱えたくなります。
最初に買う本はやっぱ「言語仕様」でしょ。