わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

オブジェクト指向の本質

WEB+DB PRESS Vol.59

WEB+DB PRESS Vol.59

  • 作者: 竹内真,猪狩丈治,矢野りん,中島拓,伊藤敬彦,角田直行,はまちや2,柄沢聡太郎,田中正裕,梶原大輔,藤本真樹,増井俊之,加藤幹生,藤澤瑞樹,木村俊也,永井幸輔,中尾光輝,平田雄一,渡辺智暁,藤吾郎,原悠,浜本階生,八柳幹太郎,uupaa,塙与志夫,ミック,大沢和宏,中島聡,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2010/10/23
  • メディア: 大型本
  • 購入: 9人 クリック: 180回
  • この商品を含むブログ (20件) を見る
手軽に自然言語処理を学ぶには「入門 自然言語処理」の第12章がお勧め - 武蔵野日記でも取り上げられていますが,専門が違うと関心も違うものですね,私自身は,データマイニングの特集(特集3 [実践]大規模データ分析)は軽く目を通した程度で,特集1(Webサイト 超高速化実況中継)を2回,通し読みして,研究室のWebページをよりよくするのに使えないものはないか考えました.特集2(PHP最“深”活用),一般記事のクリエイティブコモンズも,興味深く読みました.
なのですが,ページあたりの消費時間を一番とったのは,pp.2-3,カラーのコラムでした.連載の第4回で,「オブジェクト指向の本質」というタイトルがついています.
オブジェクト指向」も「本質」も要注意語で,使いどころを間違えると自己顕示欲丸出しになるのですが,それをくっつけてタイトルにして*1,どうなるのかと読み進めると,怒り爆発です.頭の中の内燃機関が,制御不能になる直前までいきました.
というのはうそですが,プログラミングに関心のある大学生のために少しでも解説をしておきますと,まずこの記事では,「オブジェクト指向 = オブジェクト指向プログラミング」が暗黙のうちに仮定されています.「オブジェクト指向分析」「オブジェクト指向設計」「オブジェクト指向プログラミング言語*2」と分けて理解するようにしましょう.
「本質」という言葉は,著者や話し手の持つ特定の意図に,読者や聞き手の意識を向けようとするためによく使われます.これはここ数年の傾向です.また,辞書的な意味の「本質」にたどりつけない,あるいはたどりつけるための情報が欠けている点も,指摘したいと思います.読み終えて,いまは妻の手にある『お経から人生を学ぼう』にも,すぐページは出せませんが中盤に2度,「本質」という言葉が使われていて,その周辺はごまかされたなあという思いがあります.
コラムから引用:

数年前に,私の会社で組み込み向けのプロジェクトで,C++コンパイラが安定して動かないのでCでプログラムを書くように私が指示したケースがあったのだが,何人かのエンジニアが「今さらCなんかでプログラムを欠けませんよ.クラスを使わなければスパゲッティコードになってしまいます」と猛反対をしてきた.しかたがないので,Cを使っても十分にオブジェクト指向のプログラミングができることを,実際にコードを書いて説明しなければならなかったが,彼らがまさに,典型的な「オブジェクト指向の本質を理解していない」エンジニアの例だ.
(p.2)

いや,コーディング標準を明確にしないリーダーの例でしょこれは.

気がついた人も多いかもしれないが,すでにここまでの段階で,オブジェクト指向の主要なコンセプトである粗結合・情報隠蔽・多様性・動的束縛の重要性をクラスやインスタンスという言葉を使わずに説明してきた.
つまり,こういったコンセプトは,C++Javaなどのオブジェクト指向言語を使わなければ利用できないような小手先のテクニックではなく,アセンブラやCを使って開発するときでさえ十分に活用できる,もっと本質的なものなのだ.
そこを理解せずに(略)
(p.3)

それを言いたいのなら,タイトルの「オブジェクト指向の本質」はミスリーディングです.「オブジェクト指向から学ぶ プログラミングの本質」なら,怒り*3も収まります.まあ本文構成もかなり変わることになるでしょうが.
ほかにも,著者の周辺のエンジニアが特定の技術に習熟していないのを嘆き,自分は持っている,こうして成功していったんだという経験の記述が目につきます.「自己顕示欲」の典型例です.
再度,これから研究室で,また就職してプログラミングにどっぷりはまることになる,大学生のためにアドバイスをしてみましょうか…「オブジェクト指向」と「本質」のほか,「デザイン(設計)」と「コンセプト(概念)」という言葉は,人によってさまざまに解釈されています.“上の人”がおっしゃるのはどういう意味・意図なのか,よくコミュニケーションをとって確認しましょう.「お前,そんなんも知らないのか」と叱ってもらえるのは若さの特権です.とはいえ,叱り叱られる回数は少ない方がお互いいいでしょうから,一つの言葉を複数の人が別々に解釈して,それでも組織や社会が成り立っているんだということを,プログラマ向けの文書だけでなくドキュメンタリーや小説を含めた「読み物」を通じて,理解しておきたいものです.

*1:Googleで調査….“オブジェクト指向”の本質 - Smalltalkのtは小文字ですオブジェクト指向プログラミングの本質とは何か? 本当にソースコードは分かりやすくなるのか? 【▲→川俣晶の縁側→ソフトウェア→技術雑記】.前者はそこに「本質」という言葉を使うことが,やっぱりなじめません.後者は一見識だと思います.

*2:OOPとOOPLの違いはwikipedia:オブジェクト指向プログラミングの出だしに書かれていますが,私なりに言うと,OOPLはときにはwhat(プログラミング言語の分類),ときにはhow(プログラミングの手段)を明確にするための用語であるのに対して,OOPは常にhow(プログラミングの手段)であるととらえるのがいいでしょう.

*3:ほんとはないんだけど.