ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

石田晴久先生が、お亡くなりになったそうですね・・・

2009-03-10 15:27:05 | Weblog

ここのニュース
訃報:石田晴久氏逝去
http://slashdot.jp/developers/09/03/09/1015209.shtml


サイバー大学は、どーなるの?たしか、石田先生、IT総合学部長だったと思うんだけど。

石田晴久先生というと、K&Rの「プログラミング言語C」の翻訳が有名だけど、
ほかは、ネット関係の先生というのが一般的なイメージかもしれないけど、
ウィリアムのいたずらが石田先生を拝見したのは、
1回だけ、

 はじめて社会人になって勤めた会社が、石田先生を呼んだのか、石田先生が何かの用事でいらっしゃったのか、とにかく、来たので、せっかくだから何か話してもらおうと、みんなで会議室に集まってお話を聞いた(って、ある意味、そんなんで、急に集まるっていうのも、暇な会社というか、贅沢な会社というか)時なんだけど、

そのときの話は、たしかPS(PostScript)の話だった気がする。。。
(ごめん、かなり昔なんで、内容までは覚えていない ^^;)


ってことで、ウィリアムのいたずらにとっては、ネットの人という印象は薄かったりする・・・

ま、そんなことはさておき、看板教授、石田晴久先生がお亡くなりになって、どうするどうするサーバー大学ですよねえ・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

抽象化すると、再利用できたり、生産性があがったりするか?

2009-03-10 12:16:14 | Weblog

 プログラムは抽象化したほうがいいという話がある。
 だからこそ、継承といった機能があるわけだが、
 本当に抽象化すると、再利用できたり、生産性があがったりするか?

 まず、抽象化すると、わかりにくくなるという話は、
 4枚カード問題(ウェイソンの選択課題)と、それを具体的に行った実験(「コスミデスの実験」)などを見れば、まあ、明らかだろう。

 わかりにくくなるにもかかわらず、抽象化するには、抽象化部分が再利用でき、生産性があがることにある。




 しかし、必ずしも生産性があがるとは言い切れない。

 たとえば、

 ・英語、日本語で挨拶を表示するプログラム

 を考えよう。
 具体的に書くのは簡単。Javaなら、
  System.out.println("Hi");
  System.out.println("ちーす");
 でいい。

 だけど、これを抽象的、汎用的に書くと難しい

・どっかから挨拶データをうけとって、 
・その挨拶データを表示する

 このとき、挨拶データは、何語かわかんないので、UTF-8で受けて、それをファイル化なんかに入れて読み込んで・・・ステップ数いっぱいになってくる。

 上記の仕様を満たすだけなら、具体的に書いたほうが早い。

 つまり、生産性で言うと、量が少なければ具体的に書いたほうが早く、ある一定のところで抽象的に書いたほうが早くなる。




 量が多くなるというのは、今回システム化するモノの量が多い場合もあるし、再利用するので、結果として量が多くなる場合もある。
 しかし、抽象化すると、再利用が可能になることは認めるが、それが有効かどうかは疑問だ。

 総論(=抽象論)賛成、各論(=具体的に書くと)反対っていうことがある。

 たとえば、上記の例の場合、

・どっかから挨拶データをうけとって、

 とあるが、受け取る方法は、
  ・ファイルから
  ・DBから
  ・引数として
  ・Webのサーブレットで、サーブレットコンテナから
   :
   :
などなど、さまざまある。 
これを、抽象化すると・・・結局、Javaが提供している、Streamとなんらかわらなくなる。
つまり、あまりに抽象化してしまうと、なにもしないクラスを作ることになる。
そーいうのを継承するより、具体的に別々の処理にしちゃったほうが早いということがある。

 他の例で言うと、在庫管理の場合、管理対象でいうと、
  ・単品在庫管理
  ・ロット別在庫管理
  ・(ふつうの)在庫管理
 さらに、別の分類として在庫事態の種類でいうと、
  ・部品在庫、
  ・製品/商品在庫
 と分かれる。

 これらを抽象的な「在庫」という概念から継承させることは、可能ではあるのだが、意味があるか?と問われると・・・
 このような状況において、「単品在庫」システムを作り、「在庫」クラスを再利用しようとして作っても、「ロット別在庫」を作るときには、同じ在庫でも、あまり役に立たないこともある。




 ということで、抽象化することが、再利用できたり、生産性があがったりするとは言い切れない気がする。

 話は逆で、再利用できたり、生産性があがったりするような抽象化は、
 どーいうときにありえるか?(残りは具体的に書いたほうがわかりやすいはず)

 ってことじゃないのかなあ?

 そして、モデル部分については、かなり多くの場合、具体的に書いたほうが早いと思うぞ・・

 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする