2007-07-10

プログラミングをはじめる方のための第5回: プログラム言語とオブジェクト指向

プログラミングをはじめるにあたって、たいていの方はまずプログラミング言語を学習しようとします。
まぁ、当たり前といえば当たり前ですが。

とくに、何か実際作りたいアプリケーションのアイデアなんかがある場合、早くそれを作りたいわけですよね。
プログラミング言語を早く習得して、そのアプリケーションを作りはじめたいと思うのは当然です。

というか、
これからプログラミングをはじめようっていうんだから、プログラミング言語を習得する以外にするべきことはないだろ。
とお思いの方が多いのではないでしょうか。

コンテンツ

  1. 誤解
  2. 順番
  3. オススメ


誤解

多くの方が、
「オブジェクト指向言語を習得すると、オブジェクト指向はその中に含まれている」
と暗に思っていらっしゃるのだと思います。
が、それは少し違います。
オブジェクト指向というのは、いってみれば考え方です。
こういうふうに物事を捉えれば、もっとうまくいくんじゃないか
というかんじで考えだされたものです。
オブジェクト指向言語は、そんなオブジェクト指向の考え方を実際のプログラミングに生かすために、それぞれの言語独自のやりかたで実装しています。
つまり、「オブジェクト指向」は「プログラミング言語」とは別モノなのです。
プログラミング言語は、あくまでその言語の流儀で、オブジェクト指向をどうプログラムに表現するかということは教えてくれます。
でも、オブジェクト指向そのものについて教えてくれるわけではありません。
たとえば、VB(Visual Basic)は、.NETになって真のオブジェクト指向言語になったと言われていますが、それでもVBはVBなりのやり方でオブジェクト指向を実装しているに過ぎません。
VBを作った人が、オブジェクト指向全体の中から、VBにとっていいと思うところをクローズアップし、そうでないところは削っているんです。
VBがオブジェクト指向だからって、オブジェクト指向全体を漏れなくカバーしているわけではないのです。

順番

ですので、プログラミング言語から入った人は、次にはオブジェクト指向そのものについて学ぶ必要が出てきます。
プログラミング言語の文法は比較的簡単に習得できますので、書くだけならすぐにできるようになります。
でも、オブジェクト指向言語の本当のパワーを引き出すためには、その言語が何を意図して作られたのか―つまり、その言語が表現しようとしている「オブジェクト指向」そのものを理解する必要があるのです。
多くの方が、まず言語の文法を学習してからオブジェクト指向を学ぶわけですが、私は、できればこの順番は逆の方がいいのではないかと思っています。
プログラミング言語というのは、日本語や英語のような自然言語と似た特性を持ってるように思います。
たとえばあなたがVBを習得した場合、以降、他の言語を充分に使いこなせるようになるまでは、あなたはことあるごとに、VBのボキャブラリ、思想、文化でものごとを考えるようになります。
オブジェクト指向を学習するときも、VBでプログラミングするとどうなるだろうか?とばかり考えてしまうのです。
なんといっても、オブジェクト指向は結局のところソフトウェアを作るためにあるのですから、ついそう考えてしまうのは自然なことです。
でも、まだあなたはVBのオブジェクト指向についてのパワーを理解していないのですから、これは無意味な思考ですね。
そもそも、VBがオブジェクト指向全てを含んでいるわけでもないですし。
つまり、プログラミング言語を前もって習得しておくことは、オブジェクト指向を理解する際の足かせになるのではないかと、私は思っているのです。
プログラミング言語を習得する前にオブジェクト指向の基礎を理解するのが理想ですが、そうでなくともできるだけ早いうちにオブジェクト指向を習得されることを、私はオススメします。

オススメ

手前味噌で申し訳ないのですが、このブログはプログラミング言語にできるだけ触れずにオブジェクト指向を解説することを目的としています。
基礎編のアタマからじっくりと読んでみてください。
プログラミング言語の前に、日本語でオブジェクト指向を理解することができるのではないでしょうか。
言語にjavaを選択された方なら、まずこの本を読みはじめてみることをオススメします。
この本でも、はじめはプログラミングのことを考えるなと言っています。
この本でプログラミングのはなしが出てきたとき、その内容を理解するために必要なところからjava言語の勉強をはじめるくらいでもいいんじゃないかと思います。

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...