東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

わかりませんか?

安請け合い...だったかなー の続き。

ながいことC++やってきてるんで、なにがわからんのかわからんくなってるです。
ぶっちゃけどうよ、OOのなにがわからんですか?

- どこが美味しいのかわからん
- なにをクラスにしていいかわからん
- クラスを如何に実装すっかがわからん
- クラス群の構成法がわからん

たまぁに意見を求めに僕とこに来る"OOわからん同盟"の連中は
「どんなメソッド提供していいかわからん」なんてほざくこともあります。
...そうね、そのクラスができたとして、それを使うことを考えてごらんよ。
いっちばん使いやすいなーと思えたときのメソッド群を提供すればいーんじゃない?
作る側目線じゃなくて使う側目線でってこと。
# Fujiwoさんが Subject Oriented とかゆってたっけ♪

そうそう、これも是非伺いたい:
 OOがわからんと困ることがありますか?

投稿日時 : 2007年8月13日 11:24

コメントを追加

# re: わかりませんか? 2007/08/13 12:12 ひろえむ

困る・困らないが基準なら、まぁ困らないかもしれませんね。

知らないでしんどいかしんどくないかというとしんどい気はするけど、知ってる人がリードしたら、まぁなんとかなるかもしれませんね。 知ってる人がリードできない環境は大変そうですね。

知らない人ばかりの環境だと・・・なんか大変そうな気がしますね。

まぁ、そんな感じでしょうか。

知らなくて困っているという状況より、まったく別のアプローチができるということに気がつかない・気がつけない。

で、もしかしたらそっちのアプローチだと問題が楽に解決できるかもしれない(できないかもしれない)ということでしょうね。

まあ、知らないより知っていたほうがなんかの役になつでしょってことなんでしょうねー。

# re: わかりませんか? 2007/08/13 12:44 επιστημη

困らないよねー ^^;

たまにお手伝いで"OOなにそれ同盟"んとこにお手伝いに
行くことあんですけど、OOが使えなくなることに困ります。
抽象化レベルを落とさにゃならんのがめさ辛いっす。
「えーなんでこんなことまでいちいち考えにゃならんのよぉ」
てやつ。

# re: わかりませんか? 2007/08/13 12:51 片桐

困るor困らない、なら『困らない』

まぁ、正直そうよね。とくにVSいじったらそういうのになる。プログラマゆとり世代いっちょあがりって感じ
でもね、困る困らないじゅなくて、知りたいの。ネットで調べて実践してでもそれだけじゃなくて、先輩たちの生の話やコードから盗めるものを盗みたいのさ
勉強会ってそれができる数少ない機会なのさ
と片桐は考えてみたり

# re: わかりませんか? 2007/08/13 12:53 黒龍

ooってのも開発言語における一つの文化なのでそれに沿った.Netなりのライブラリを理解したり使いこなそうと思えば困ると思います。
片言でも動くものは作れる(意味は伝わる)のですがooネイティブな人から見ると無駄があったりわかりにくかったりはしそうです。
なので理解する対象がoo文化圏なら困るって感じでしょうか。実際不要な局面も多々ありますし。

# re: わかりませんか? 2007/08/13 13:23 επιστημη

うーん、そーなのよね。
なくなると困るけど知らなくても困らない。
コックがレシピ忘れたら死活問題だけども、
お客は作り方知らんでもええのよ。
もっと言やぁ、"レシピを知ってるのは一握りのヒト"で十分なのよ。
メシ食いたい奴は全員レシピを暗唱しろ! じゃナンセンスなのよ。

言い様によっちゃ"知らなくても使える"程度に浸透してる
ってことで、それはそれで結構なことなわけだが。

で、それを踏まえて「勉強会でなに喋らせたいよ?」
デザイン・パターンのあたり?
もっと言語寄りのコマケーとこ?

# re: わかりませんか? 2007/08/13 14:47 シャノン

裸のシェフになる方法。
http://japanese.joelonsoftware.com/Articles/BigMacsvs.TheNakedChef.html

「OOを知ってる一握りの人」と「OOを知らない(うちに使っている)多くの人」の混成チームでプロジェクトが進んでいく形になるんだろうか。
そうすると、知らない一握りの人に対する、いわゆる「プログラマ蔑視」が発生しそうな気がする。

あとは問題は技術よりもマネジメント方面になってしまう。
要するに「知らない多くの人はずっとそのままでいいのか」という次元になる。

# re: わかりませんか? 2007/08/13 15:11 επιστημη

うーん、裸のシェフが創る料理はさぞかし旨いんだろう、Macなど足元にも及ばぬほどに。

だがしかぁし、わしらの世界ではどうだろう。
中身がどんなに汚くて冗長で反吐の出そうなコードでも、
利用者からはそれが見えない。
利用者にしてみれば"真"であり"善"であることは明らかなれど
"美"は見えないところにあるのだよ。

むしろカッコよくてエレガントでコンパクトなコードは
ウケが良くなかったりする。
なにやってんだかわからんらしい。

# re: わかりませんか? 2007/08/13 15:20 シャノン

> 知らない一握りの人に対する、いわゆる「プログラマ蔑視」が発生しそう

間違い。「知らない多くの人」です。

> 中身がどんなに汚くて冗長で反吐の出そうなコードでも、
> 利用者からはそれが見えない。

さて、論点が変わってきたぞ。
これまでは、オブジェクトを使うだけの利用者はOOを知らなくてもいいという話だったよね?
ここからは、オブジェクトをどう汚く作ろうが、どうせ利用者には見えないんだから、作る側もロクに知らなくていいという話になる?
材料がどんなクズであれ、うまくて安い料理が出りゃ客は満足だ、と(高級な材料を使わないとうまいものが作れないよりは、安い材料でもうまいものができるほうがいいだろうけど、それでも、あまりにクズな材料なのは良くない)。

オブジェクトを使うだけの人とまで「美」を共有する必要はないというのは、それはまぁいい。
しかし、だからといって「作る側が美を追求してはならない」ということにはならない。

> なにやってんだかわからんらしい。

だったら、それにあわせてレベルを下げるより、相手のレベルを上げて喜びを分かち合う方が建設的ではないかい?
ここで言う相手ってのは、顧客やオブジェクトの利用者ではない。コードを読むってことは作り手の側なんだから。

# re: わかりませんか? 2007/08/13 15:32 ひろえむ

んー、OOは利用者が直接的に喜ぶ技術ではないかもしれませんね。 

間接的には効果が出てくるかもしれませんけどね(^^;

ただ、通常チーム作業する場合はエレガントでコンパクトなコードよりも多少冗長でもシンプルである程度の人なら誰でも理解できる簡単コードのほうが喜ばれるでしょうね(^^;

また、美しいかどうかとOOかどうかは別問題のような気もしますね(^^;;

結果的にそうなるかもしれないというだけで、コードやロジックに正解はなくて、唯一正解とされるのは結果だけですから(^^;

我々の仕事は利用者にソリューション(解決策)を提供するのが仕事で、その中身には利用者の関心はないでしょうが、OOはそのソリューションを提供する我々ソフトウェアを開発する技術者のためソリューションの1つなんじゃないかと。

故に、それを知るということは我々技術者が何かしらのソリューションを手にするということなんじゃないかと思うんですね。 なので、利用者にメリットがある技術じゃなくて技術者にメリットのある技術だと思うんですよね(^^;

# re: わかりませんか? 2007/08/13 15:34 επιστημη

ぃゃぃゃ、わかって言ってんだって ^^;

OOは食材あるいは調理用具でしかないわけだ。
シェフの腕は食材/調理用具を如何に使いこなし、
オノレの感性を注ぎ込むか、なんだろと思う。
# 場合によっては"使わない"ことをわきまえていてこそ"使える"って言えるんだろね。

「なにやってんだかわかんない」については僕も思うところが大いにあるのです。
実際よく言われてるのよトホホーイ orz

てめーらシェフだろが。
レシピが読めんなんて言い訳になるか。包丁置いて出てけアホンダラァ!

# re: わかりませんか? 2007/08/13 15:42 シャノン

> 我々の仕事は利用者にソリューション(解決策)を提供するのが仕事

って言うと、利用者ってのは納品先の顧客よね。以下、その意味で。
これまで、誰かが作ったオブジェクトを使うプログラマって意味で「利用者」って言ってたこともあるので一応ね。

> 唯一正解とされるのは結果だけですから

そうっちゃあそうなんだけれども。
同じ結果を出すにしたって安くて早い(速いではない。早いに越したことはないけど)方がいいわけで。
そこまで含めて「結果」とするなら、顧客にとって無為とも言い切れないような。

> 美しいかどうかとOOかどうかは別問題

確かに。
そういう点でも、技術としてのOOをテーマに取ると難しいわけだ。
OOは美しくする技術のひとつであるし、安く早くする技術のひとつであるけれど、やはり、そのひとつでしかないわけで。
「美しくする方法」「安く早くする方法」を論点にした方が、まだ喋りやすいかもしれない。

> 包丁置いて出てけアホンダラァ!

と怒鳴って追いだすんでなく、どうすればそこんとこ啓蒙できるかとか、そういう方面からの話になるんじゃないかなぁ。

# re: わかりませんか? 2007/08/13 15:44 シャノン

> 早いに越したことはないけど

またしても誤字ゴメソ。「速い」です。

# re: わかりませんか? 2007/08/13 17:14 凪瀬

OOは大規模システムの設計するには必須と考えています。

設計する側は難しく、使う側は簡単なものだと思う。
使う側としてはポリモフィズムが一番のハードルかも。
どうも、宣言型と実行時の型が違う場合にどこのコードが動くのか掴みにくいらしい。
ソースコードを追いかけるのが難しいらしい。

> 「美しくする方法」「安く早くする方法」を論点にした方が、まだ喋りやすいかもしれない。

私もそう思います。経済的観点から見たオブジェクト指向のネタをやりたいところ。

# re: わかりませんか? 2007/08/13 21:44 ひろえむ

#επιστημηさん
まま、おわかりになっているのはわかっていましたが(^o^;
乗っかってみましたw

ただ、実際問題レシピがわかるなら問題ないんだけど、「お袋が作ったミートスパゲッティ」と抽象的な指定をされた料理を作る場合、どんな材料をどのように調理すればいいんだとわかっているなら誰も問題ないんでしょう。

問題はその料理を作るのにあたりその材料を適当に分類し、料理の行程の途中途中で味を加えやすい構造にするには、その材料の量を変えやすいように整理しておいたほうが、抽象的な問題の解決に近づきやすいという方法なんでしょう。

もちろん、天才プログラマはそれをエレガントなセンスと勘でなんとかできるのかもしれませんが、我々凡人にはそういったものより、上記のような解決するための具体的手段があったほうがないより楽でしょうということなんでしょう。

ただ、その手法を説明するにはやはり少々手間がかかるし、また説明できる人も少ないということでしょう。

なので、わからない人は教えてもらいにわかる人は教える方法を勉強しようということなんですけどね(^^;

#シャノンさん
>これまで、誰かが作ったオブジェクトを使うプログラマって意味で「利用者」って言ってたこともあるので一応ね。

うんうん、もちろんそれもわかりますよー(^^)

>同じ結果を出すにしたって安くて早い(速いではない。早いに越したことはないけど)方がいいわけで。

というか、どちらかというと、それが「正解」かどうかが抽象的なので正解と思っていて作ったものが正解じゃなかったりすることがまれにあるので、そこに近づきやすいようにするということはプロの仕事をする1つのエッセンスじゃないかなと思うんですよね(^^;

またその顧客が正解と思っていたものが正解とも限りませんし(^^;


>OOは美しくする技術のひとつであるし、安く早くする技術のひとつであるけれど、やはり、そのひとつでしかないわけで。

んー、私はどちらかというと「結果として」美しくなることもあるかもしれませんが、美しい・エレガントにすることを目的にするのは、ちょっと目的がずれているような気もします(^^;;;

#凪瀬さん
>OOは大規模システムの設計するには必須と考えています。

それは「そうですね」と素直に同意できないような・・・(^^;;;

直結するには根拠が薄い気がします。
もちろん、OOを用いて設計するといいケースもありますが、OOが大規模開発に必須な技術かどうかを言い切るには少々早計な気がしますし、乱暴な気もします(^^;

επιστημηさんがおっしゃるように、技術者としては持ち合わせた上であえて「利用しない」という選択するというのも方法としてはありだと私は思いますよ(^^;

OOを選択しても、大変な目にあうことだってあるかもしれませんし(^^;

# re: わかりませんか? 2007/08/13 22:22 επιστημη

とまぁ、一連のコメントを整形すればパワポ三枚できあがりっと♪

策士だねー(おほほほほ

# re: わかりませんか? 2007/08/14 9:22 中博俊

>OOは大規模システムの設計するには必須と考えています。

そんなことないよぉ。
OOなんて逆に要らないかもー
おっほっほ

# re: 大規模システムの設計 2007/08/14 15:25 凪瀬 Blog

re: 大規模システムの設計

# re: わかりませんか? 2007/08/15 10:52 とりこびと

>OOのなにがわからんですか?

>味の向こう側。

>OOがわからんと困ることがありますか?

寝つきが悪い。

# re: わかりませんか? 2007/08/26 20:47 C.John

OOのわからないところ。
何を信じていいか分からない。
本を読んでも本によって違う事が書いてる気がするのです。
例えば入門書やちょっと古い本なんかだと
「継承してメソッドをオーバーライドして振る舞いを変るんだよ!簡単でしょ!」

みたいな感じだけどデザパタ系の本をみると

「振る舞いを変えちゃダメ!振る舞いをクラスにして委譲するんだ!これがStrategy 」

ってな感じで違うことを教えられてる気分になります。
OOの考え方の歴史というか、進化の流れみたいなのが
分かるともうちょっと分かった気になれると思うのですが
そういった事が書いてあるページとかなかなか無いんですよね。

タイトル
名前
URL
コメント