プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 このページをアンテナに追加 RSSフィード

 iTunes Music Store(Japan) なかのひと あわせて読みたいブログパーツ
|

0001 | 00 |
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2008 | 01 | 02 | 03 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 |
2010 | 03 | 04 | 06 | 07 | 09 | 10 | 11 |
2011 | 01 | 02 | 10 |
はてな一覧
アンテナに追加
私のアンテナ
私のダイアリー
私のアーカイブ
私のアイデア
私のブックマーク
私のグループ
私のキーワード
ニュース系、今まで続いているシリーズモノの読み物
dKingyo Utility Toolkit Projectのリリース情報
やっぱり暗号化は大人の味(笑)
プログラムのパッキング方法を調べよ
ココが厳しいよMinGW
ライブラリアン通信
ゲームプログラミングどうしよう
CRCについて
ビット演算練習
d金魚の今更Ajax
Windows Tips
VC6 Tips
Win32 WTL Tips
Ruby for C++ User
Ruby Tips
今日のRubyで嵌った事
正規表現PIECE
書きかけ
続く・・・

私のダイアリーの人気記事
新しくブックマークされた記事


あまり、役に立たなそうな個人的に調べた情報や妄想に耽った事、今 勉強している事ヒソヒソと公開していたりします。 | 登録してくれている方々 | d金魚にメール | 当サイトは640x480の画面解像度に対応しています。
日記へのリンク、アンリンクはフリーですが、selfタグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


 | 

2006-06-12 OOPを否定とか批判とかする前に・・・

[][][][]私もOOPなんて役に立たないと思います!!! 私もOOPなんて役に立たないと思います!!!を含むブックマーク 私もOOPなんて役に立たないと思います!!!のブックマークコメント

Powered by dKingyo ソフトウェア開発技術者 | C++ | Ruby | 256倍使うための本 | Windows Server


http://blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html

http://b.hatena.ne.jp/entry/http://blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html

の記事が私が訪れている様々なブログ日記でいろいろと議論が巻き起こっているのですが・・・いやいや、なんか、荒々しいコメントが目立ってきてなんかちょっとな・・・って感じがする今日この頃です。

いやいや、OOP・・・確かに目的ソフトウェアを作る上では全く役に立たないと思いますよ。あくまで私の主観で経験上の話ですよ。(ってか、実際業務を行っているプロフェッショナルではない私が言うのもなんなんですけど・・・)


私自身、頑張ってOOPを自分なりに理解して覚えてきた訳ですが、実際、なにがなんだか分からないままにgoogle:glibコーディングスタイルデータ構造、状態遷移関係がオブジェクト指向だと思い込んでいままでプログラムを組んできたわけです。目的機能(ライブラリを作ったり、ライブラリを読んで構造を理解するのに私が学んできたOOPは素晴らしい考え方だと感じます。

特に、私が学んできたOOPという考え方は必要な機能を実装したらリライトをしないような形で表現する所が素晴らしいと感じるのです。


ですが、この考え方に凝り固まってソフトウェアコーディングしてもさっぱりソフトウェアが完成に近づかないのです。

むしろ、何回もリライトすることになりソフトウェアが動くまでになかなか漕ぎ着けません。そんな経験が私からpureでtrueでrealなOOPソフトウェアを作ることから遠ざけているような感じを受けます。

ですが、私が学んだOOPという考え方、好きなんです。なんというか、プログラミングする上で私の中での美徳というかPolicyにまでなってしまった考え方なんです。

なので、私はライブラリ製作にのめりこんでいったのではないか?と考えたりすることもあります。


しかしながら、私が学んできたOOPは真のOOPではないのかもしれませんし、真のOOPを使うと生産性が上がるのかもしれませんし、そうではないのかもしれません。

ですが、今の時代、大量のライブラリAPIを使わないとソフトウェアが作れない時代になってきました。ライブラリ最近APIにはこのOOPが使われる傾向が多分にあります。これを考えるとオブジェクト指向という考え方は少なからずソフトウェアを作るのに必要な概念ではないかとは私は感じています。


それからこの記事の著者は「とりあえず、スキルアップのためにはコードを書くのだ!」的な事をとりあえず、OOPを引き合いに出して主張しているのかな?と感じました。確かに、このコードを書く = スキルアップの為の近道*1私の経験的にはこれは当たっていると思います。

また、流行ってる技術=役に立つ技術」ではない!!!というのもうなずけるような気がします。


UMLって昔、流行ったような気がしたのですが、役に立つような気がしません・・・。

XPというプログラミング手法の本も読んだのですが、役に立つような気もしません・・・。

JXTAってのもあったような気もしますし・・・。*2

(追記:「目的ソフトウェアを作る上では」と付け加えるべきでした。誤解を招いてしまいましたかもしれません。スミマセン。)


いやいや、ここにあげた概念を私はがんばって覚えて使って物言いしたわけではなりません。ただ、私がこの概念の概要を雑誌で読んだ第一印象を述べているだけです。

むしろ、私は経験的に古典的なFSM的考え方やポリシーが役に立つ技術のような気がしてなりません。*3

むしろ、

C言語による最新アルゴリズム事典のような

アルゴリズム関係の本

を読み倒して、どのアルゴリズムをどのようにして組み合わせると目的ソフトウェアが作れるか というような事の方が役立つ技術のような気がしてなりません。

むしろ、そのプログラムをどのように組み合わせると目的ソフトウェアを製作、完成させるのにメリットがあるかという事を経験していることの方が役立つ技術のような気がしてなりません。

ですが、私はプログラミングは独学ですので真の概念や真の考え方が分からないのにこういう文章を書いているので ちょっと(/ω\) ハジカシー 感はぬぐいきれません・・・。プログラムかじっている学生の戯言と思っていただけると救われます。

[][]コーディングスタイル戦争を勝ち抜くためには・・・ コーディングスタイル戦争を勝ち抜くためには・・・を含むブックマーク コーディングスタイル戦争を勝ち抜くためには・・・のブックマークコメント

ここで、一つ、思い出した格言があった。

「正しい事をしたければ偉くなれ」

さてさて、日本ではどのコーディングスタイルが正しいとされるのだろうか・・・

[][]C言語を極めるには・・・ C言語を極めるには・・・を含むブックマーク C言語を極めるには・・・のブックマークコメント

glibを読めること*4

[][][]OOPを否定とか批判とかする前に・・・ OOPを否定とか批判とかする前に・・・を含むブックマーク OOPを否定とか批判とかする前に・・・のブックマークコメント

glibを読もう!!!

google:glib

VCでコンパイルできなくて困っているなら

http://www.dkut.flnet.org/DKUT/glib_vc_222.dgc

バージョン古いけど置いておくから。とりあえず読んでみて欲しい。

やっぱりglibってOOPだよね!?(いや、真のOOPかどうかは確証は無いけど・・・)

また、私はまだ読んでいないのだが、

デザインパターンとともに学ぶオブジェクト指向のこころ

http://www.amazon.co.jp/exec/obidos/ASIN/4894716844/studiokingyo-22

という本のレビューがかなり評判が良いので読んでみることをオススメする。

出来れば上記のURLクリックしてAmazonアクセスして買ってくれると紹介料が私に入り、研究費、生活費として私の収入になるので是非クリックして買っていただきたい。

[][]やっぱりOOPの考え方を勘違いしていたらしい やっぱりOOPの考え方を勘違いしていたらしいを含むブックマーク やっぱりOOPの考え方を勘違いしていたらしいのブックマークコメント

http://d.hatena.ne.jp/JavaBlack/20060612#p3

より。

JavaBlack氏によると私の学んできたOOPという概念MSVB方言によるものではないか?との事ですので真のオブジェクト指向と呼ぶには疑問が残るそうです。

よって、JavaBlack氏のブログによると

との事でした。

なるほど。プログラミングを生業にするにはこれらの概念理解や勘違いをしないようにしなくてはいけないことも大切にしなくてはならないようです。

トラックバック感謝

*1:確証があるわけでもないし、証明もできないけれども

*2:追記:http://web.sfc.keio.ac.jp/~yoshiro/weblog/archives/2003/04/jaxta.htmlより JAXTAってスペルミスらしい。JXTAが正式な名称のよう。

*3:昔の人はOOPにとらわれずにFSMやっていたんだよなー と考えるとなんだか頭が下がります。

*4:ついでにdkutil_cも読めること(ナンデヤネン!( −_−)ノ ビシ*)゜O゜) アゥ)

kmt-tkmt-t 2006/06/13 01:12 どうも。kmt-tです。
> リソースの再利用性を高めるためには、きっちりとした仕様書を
> 書く訓練や、他の開発者とのコミュニケーションスキルをUP
> した方がずっと実務的ですし、上司も評価してくれるでしょう。
多分、仕事をやったことがない人には理解しがたいところが
あるでしょうが、本当にこのひとことに集約されます。
社会人になってこの方、仕事が早かったり、ソフトウェアの
品質が高くて評価されることはありますが、オブジェクト指向を
理解していて評価されたことはありません。これば社風だけで
なく、部署や上司によって大分違うと思いますが。自分も
この件に対して記事を書きましたが、誤解を招く書き方のような
気がしてきたので、また記事を書く予定です。

ついでに言うと「C言語による最新アルゴリズム事典」を
この程度の本という人もいますが、この本一冊内容をすべて
理解できたら職場では超一人前です。って職業プログラマで
この1/3も理解できている人がどれだけいることか(自分も
人のことは言えない)。確かに仕事では本の内容プラスアルファ
が必要ですが、この本を理解できる力があれば絶対大丈夫です。

studiokingyostudiokingyo 2006/06/13 06:43 こんにちは。コメントありがとうございます。
>本当にこのひとことに集約されます。
まだ、そのような業務経験が無い学生が今までの体験から妄想を働かせて青臭いことを書いてしまったわけなんですけど、現実、現場ではそうなんですか。なるほど。
事実、自分は未だにその世界に触れてはいなくて現場ではどのくらいの知識、経験が必要でどのような行動が必要かといった事が未だに分からなくて不安でした。
ですが、kmt-tさんからアドバイスをいただけると先行きが見えたような感じがして安心します。ありがとうございます。
それでは。

gallugallu 2006/06/13 16:08 がると申します。んっと………業務プログラマ(SEとかもやってますが、とりあえず論じる立脚点としての主張です)側からいくつか。
まず
> 目的のソフトウェアを作る上では全く役に立たない
ですが。そうですねぇ「初手に作るとき」にはあんまり意味がない可能性があるのですが。保守をしなければいけないときに、OOで作るか否かは大きな違いがあります。
で、多分ここが違うんだろうなぁと思うのですが。
> 特に、私が学んできたOOPという考え方は必要な機能を実装したらリライトをしないような形で表現する所
明示的に「違う」と反論できます。
OOやOOP(やOOSE)の便利なところは「なんぼでもリライト出来る」ところが一つの利点です。
つまり、OOPで作成すると
・とりあえずなんとなく動いているっぽいけど本当に動いてるのかこれ?
みたいな、かなり曖昧なものをとりあえず作れます。
で、必要な部分だけ「ちゃんと」作ると、そのうちある程度動くものが作れます。

ってなくらいに、オブジェクトって曖昧で適当で大雑把でいい加減なものだと私は考えてます :-P
そのあたりは、手前味噌で恐縮ですが、
http://www.m-fr.net/study/object/index.html
をご覧頂くと「理論的背景とか学術的思想を無視した実用一点張りの考え方」の一端が見ていただけるかと思います(苦笑

UMLは…私も使いません(苦笑
XPは「どの部分を使うか」にもよるのですが。テストファーストは必須。早いリリースもかなり不可欠。教育的側面も考慮したうえで、ペアプログラミング重要。なので、少なくとも「きちんとしきれる人間がいる」状態で業務で開発するかぎりにおいて、非常に重要です。
# ちなみにXPは「開発手法」ですね。プログラミング手法よりはもうちょっと広い守備範囲になります。

あと
> コードを書く = スキルアップの為の近道*1私の経験的にはこれは当たっていると思います。
には明示的に反論を。
スキルアップするのは、書いた上で「修正したり考察したりして反復して学ぶ」からスキルアップするものです。
ただ書くだけでスキルが上がるというのは、本質的にありえないです。
多分、studiokingyo さんは「書いている時や書いた後に考えたり見直したり修正したりすることをほぼ無意識になさっている」から、なんだとは思うのですが。

以上、ちょいと気になったので書き込みしてみました。

NIESNIES 2006/06/13 19:52 こんにちは、はじめまして。NIESと申します。
suma君の紹介で以前から日記を読ませていただいていました。
OOPの考え方で、私も以前勘違いをしていまして、
http://d.hatena.ne.jp/NIES/20041126
昔はOOPに従わなくちゃいかんのだ・・とか、ここはOOP(もしくはデザインパターン)の考え方だとこうだから、こうしなくちゃいかんのだ・・という考え方でした。
>アルゴリズムを理解、暗記
>アルゴリズムを自分で考えて製作することが出来る
>その先にオブジェクト指向云々があり
>さらにその先にXPの美学を理解することが出来るようになる。
これにすごく共感しました。
やっぱり、情報学の分野でこれまで積み重なって考えられてきたものは、そのまま土台になってるんですね。

FooFoo 2006/06/14 00:09 UML嫌いな人って多いんですね。
コーディング前のレビューとか若い衆に説明するには便利だと思うんだけど...
あと、OOP慣れしてない奴に書かすと面白いし。
昔からフレームワークばっかり作ってるからかな。

おいらも、一人で作ってレビューする必要が無い場合や、ビジネスロジックの設計には使わないもんね。

shinichiro_hshinichiro_h 2006/06/15 13:00 こんにちは。時々ご活躍拝見させてもらっています。
dkutilとか見せてもらったことあるんですが、少なくとも私はd金魚さんがOOわかってないように見えませんでした。MS方言なんてのがあるのはVB触ったこと無いので知りませんでしたが、私にはd金魚さんのコードは普通のC++/Java/C#タイプのOOのコードに見えます。
あとglibはOOだと思います。
個人的にはd金魚さんがプログラムのレベル的には今すぐ働いても問題ないっていうのは疑いの余地が無いように見えますし、学んだことがどう仕事に生きるか、なんてのはいざ仕事する時にでも考えることにしても遅くはないとは思います。

 | 
Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー