生活が、一番面白い【Sampoのコラム】 このページをアンテナに追加 RSSフィード

Sampoのメールアドレスを問い合わせる→
このブログにトマトを投げる!

2008-07-12

意味のわかるオブジェクト指向(1) プログラミング言語は、巨大なシステムを開発するために進化してきた

プログラムは書けるけどオブジェクト指向がどうもよくわからないという人に

オブジェクト指向の価値は多態性にある

ことを理解してもらうためにこの連載を書きます。このことが理解できたら、次はデザインパターンに触れて多態性がいかに役立つかわかるようになると、ものすごく理解が深まることでしょう(この連載の中でも、少しだけデザインパターンを紹介する予定です)。

連載では、ずっと昔のプログラミング言語の紹介から始めて、オブジェクト指向に向けて進化する中で何が変わったのかを解説していきます。この過程は(デザインパターンを学んでいくところまで含めて)まさに僕がプログラミングを学んできた過程そのものにほかなりません*1。自分では、自分はちょうどいい時代に生まれてちょうどいい段階からプログラミングを習得できたと感じているので、この過程を紹介する次第です。


プログラミングの初心者にとって、オブジェクト指向プログラミング(面倒くさいので、以下OOPと略そう)を取り入れた言語から学ぼうとすると、意味のわからない「おまじない」がとても多い。昔のマイコンのずっと原始的な言語でプログラミングを学んだ人の方が、自分が何を書いているのかよっぽどわかりやすかったはずだ。

Java(OOP言語)で書いた、「こんにちは!」と表示するプログラム
Class Hello{
  public static void main(String[] args){
    System.out.println("こんにちは!");
  }
}
※BASIC(原始的な手続き型言語)で書いた同内容のプログラム
10 PRINT "こんにちは!"

BASICのプログラムの意味は、「各命令行の頭には行番号を付けないといけない(上の例では「10」)」というルールさえ理解していればすぐに理解できる。それに対してJavaのプログラムは括弧がたくさんあり、行が字下げされていて、Class, Hello, public, static, void, main, String, args, System, out, とたくさん単語が並んでいる。こいつら、どういう意味?

やりたいことはprintln(これも、「ln」の意味がよくわからないけど……)だけなのに。println以外は全部おまじないだと思うしかない。これでは自分が何を打ち込んだのかもよく理解できない。

これらのおまじないの意味(と意義)を理解してもらうためのOOP講座なのだが、最も簡単なプログラムからこんなにおまじないだらけでは心がくじけてしまう。だからまず、心が折れないよう、次のことを頭に置いておいてもらいたい。

1.プログラミング言語は、巨大なシステム構築のために進化してきた

仕事としてプログラムを作る人たちも、昔はBASICのような原始的な言語で実務用のシステムを開発していた。しかし実務用の(複雑で巨大な)システムを開発していると、どうしても突き当たる問題というのがあった。それを解決するために言語の方が進化してきた結果が、おまじないだらけの現代の言語なのだ。簡単なプログラムは最初から念頭にないわけで、それが簡潔に書けないのはある意味当然のこと、と。

さて、そのプログラミング言語の進化のうち2大変革とも言える「構造化・モジュール化」「オブジェクト指向」を順を追って見ていくことにする。それを理解することで、オブジェクト指向の意味が自然に理解できるはずだ*2

次回:「スパゲティ・プログラム」

*1:過程そのもの、といっても関数プログラミングについてはまったく割愛します。またオブジェクト指向の中でもプロトタイプ型オブジェクト指向については省きました。どちらもとても面白いのですが、あしからず

*2:最後まで読んでもらうと、上のJavaのサンプルプログラムの中で、内側の括弧がモジュール化の産物、外側の括弧がオブジェクト指向の産物であることに気がつくと思います。にやりとしてください

mulukhiyyamulukhiyya 2009/05/16 02:26 「Class」というのは、「class」(全て小文字)ですよね

セックヌは戦いなんですぅwwwセックヌは戦いなんですぅwww 2009/07/09 00:21
はぁ・・思い出す度にオッキくなっちゃうから一日中下半身大変だよwww
ローションべっとべとに塗られて玉舐め手コキされるって初だったんだが
予想以上に気持ちよすぎて瞬殺されちゃったwwwwww
てか意外に素股も気持ちよかったし!! 明日は僕が瞬殺してやるもんねw

http://QsX6d23.meshiuma.tsukimisou.net/

これなんて錬金術??これなんて錬金術?? 2009/07/14 20:27
> 教えてくれた人
書き込み消えてるから名前わかりません(すいません・・)
半信半疑で試してみたんすけど、その日にハメちゃいましたwwww
本当に一発で5万貰えるって思ってなかったんで正直ビビりましたよ(^^;
思ってる以上に世の中甘いもんなんすねーーwwwww

http://4ZSNcWb.dashinuki.adult-value.com/

うぇwwうぇっうぇwwwwwwwうぇwwうぇっうぇwwwwwww 2009/07/26 04:33
ドーユーリメンバー?私アルパカに似てるタケシねwwwwwww
んぉふーww 雑誌に載ってたのやってみたらコスプレ姫の魔法のフィラチオにハマっちゃって思考回路がフィラチオ中心になってるぉwwwwww
てか気持ちよくしてもらってんのに何で5万貰えんの? カオスwwwww

http://netoge.bolar.net/HzK0MXr/

俺の銃が火を噴くぜwwww俺の銃が火を噴くぜwwww 2009/08/05 05:14
始めた途端に誘いの嵐だったからちょっとパニクったわwww
とりま玩具プ レ イ好きのビ ッ チを選んで楽勝で即 ハ メ〜(^-^)v
ハ メ て 5 万 貰 え るとかカルチャーショックだったけど、
これやらないやつはただのバカだろwwwwwwwww

http://ene.creampie2.net/JqXATbC/

ぎょはぁ!!!!!ぎょはぁ!!!!! 2009/08/09 05:21
ヘイヘイ!!あひひひほはぁwwwwwww ちょwwいきなりごめwwwwww
寝てるだけで5 万もらっちゃって真面目な自分がヴァカらしくなってさwwwww
はぁーいま女シャワー浴びてんだけど、もう1ラウンドでまた5 万くれるってYO!wwwwww
またマグロでさっさと中 出 しするわwwwwwwwww

http://kachi.strowcrue.net/xV85ptD/

ケ ツ コ キ!!!!!!!!!ケ ツ コ キ!!!!!!!!! 2009/08/16 03:34
すんげえケ ツでかい女に当たった!!! コイツのケ ツ 技すぎすぎwwwww

ケ ツにロ -ショ ン塗りたくって、俺のティ ヌコ挟んですんげー前後すんの!!!
前後してる時にク リに当たったりマ ヌ コに入ったりして
女もアヒアヒしまくりで俺も女も絶 頂しまくりで最高ですたwwwwwww

こりゃハマるわぁ・・・・

http://yuzo.plusnote.net/bEPY7J5/

マグローニャマグローニャ 2009/08/27 02:43
もう動くのもマンドクセーから家に来てもらってんのよ。
オレはネトゲに必死で女はフ ェ ラに必死というカオス状態wwwwwww
なんでか毎回3 万貰えてるしイミフすぎwwww

これ始めた俺歓喜www 金無しニートのオマイら涙目wwwww

http://koro.chuebrarin.com/iswKeNN/

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Sampo/20080712/p1