オブジェクト指向プログラミングの学習法(初心者向け)
個人的な話をしますと、オブジェクト指向の入門書に出てくる、﹁クルマのたとえ話﹂とかは本当に意味わかりませんでした。こちとら、すっかり手続き脳なもので、そんなんでmainとかどうやって書くのよ?みたいな。<我ながらヒドイ http://d.hatena.ne.jp/LazyCoder/20070806/1186417299 追記 PHPのオブジェクト指向を勉強してる。というか仕事での必要性を感じてやってるけど、正直オブジェクト指向の良さがさっぱりわからん。(中略) よくあるオブジェクト指向の解説本には車がオブジェクトでタイヤがファンクションでみたいなんかいてるけど、実務で使うプログラムの設計の仕方がわからん。 http://anond.hatelabo.jp/20070427093912 こんな説明を読んで、なんだかわかったような気分になれる人は、どっちかというと思考力に欠ける人なんじゃないかと思います。﹁わけわからん﹂という反応のほうが技術屋としては正常でしょう。 いい加減、こういうわけのわからないたとえ話はやめたらどうかと。 あんなもん、わかったつもりの半可通と、理解できない挫折組を生み出すだけではないかと。 http://kmaebashi.com/programmer/object/naze.html ﹁パン屋さんの設計図がクラスで〜とか、cryってメッセージが送られると猫ならニャーニャー、犬ならワンワンって返ってくると考えると解りやすいですね﹂ とか言ってたけどむしろ解りづらいし… 上記のような例えで理解できる人は既に開発の経験がある人じゃないの? なんて思ったものです。 現実世界は何でもオブジェクトとして考えられるとか言われてもピンとこなかったしね。 http://d.hatena.ne.jp/ysatou7250/20080501/1209652552 http://www.biwa.ne.jp/~mmura/SoftwareDevelopment/twentyfirstcentury3.html http://d.hatena.ne.jp/JavaBlack/20070805/p2 これに関連して,改めて書くほどのことではないんだけど、初心者が学習する上で参考になるように一応まとめとく.特に初心者向け/入門レベルの話なので,ベテランには今更ほとんど参考にならないでしょう. なんとなく書籍紹介っぽくなってしまったが,新しい技術を勉強する時に優れた書籍というものは圧倒的にコストパフォーマンスに優れるのだから仕方あるまい.*1
私の推奨する学習の順序*2は以下の通り. (一)OOP言語を学ぶ. (二)そのOOP言語のイディオムやコーディングテクニックを学ぶ. (三)GoFのデザインパターンを学ぶ. (四)OOPの設計原理を具体例︵ソースコード!︶を交えながら学ぶ. (五)リファクタリングを学ぶ. (六)第二OOP言語を学ぶ. (七)オブジェクト指向プログラミングそのものを理論的に学ぶ. このうち1,2,3までが必修科目.4,5は推奨.6,7は選択科目. また言語,イディオムを学び終えたあたりから,実際にプログラムを書いたり,良いソースコードを読んだりするのも大切だ.フレームワークやライブラリのコードを読んで,設計や様々なテクニックを理解する必要もあるだろう.プログラミングを座学だけで体得するのは非常に難しいのだ.*3
毎度お馴染み参考書リスト‥ http://d.hatena.ne.jp/JavaBlack/20070522/p1 ﹁オブジェクト指向を教えるとき、どの言語がよいか?﹂ ●ここ数年、オブジェクト指向を覚えるときには、Javaが使われてきました。(以下略) ●選択肢とは、RubyとPythonのことです。両言語とも、動的型言語です。静的型言語と一緒に使えるようになってれば便利だと思います。 ●私は、まずは言語を使って、何かできるようになるほうが断然いいと思いますね。私にとってソフトウェア設計とは、数学みたいなものなんです。読んだり聞いたりするだけでは、なかなか理解が深まりません。 http://capsctrl.que.jp/kdmsnr/wiki/bliki/?LanguageForLearningObjects
1,2,3:必修科目
プログラミング言語Java (The Java Series)
- 作者: ケン・アーノルド,ジェームズゴスリン,デビッドホームズ,柴田芳樹
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2007/04
- メディア: 単行本
- 購入: 38人 クリック: 1,044回
- この商品を含むブログ (71件) を見る
- 作者: ケンアーノルド,デビッドホームズ,ジェームズゴスリン,Ken Arnold,David Holmes,James Gosling,柴田芳樹
- 出版社/メーカー: 東京電機大学出版局
- 発売日: 2014/05/10
- メディア: 単行本
- この商品を含むブログ (4件) を見る
Javaチュートリアル 第4版 (The Java Series)
- 作者: シャロンザクァワ,ジャコブロイヤル,アイザックラビノビッチ,マークホーバ,トーマスリーサ,スコットホンメル,Sharon Zakhour,Isaac Rabinovitch,Thomas Risser,Jacob Royal,Scott Hommel,Mark Hoeber,安藤慶一
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2007/11
- メディア: 単行本
- 購入: 12人 クリック: 505回
- この商品を含むブログ (8件) を見る
- 作者: Dave Thomas,Chad Fowler,Andy Hunt,まつもとゆきひろ,田和勝
- 出版社/メーカー: オーム社
- 発売日: 2006/08/26
- メディア: 大型本
- 購入: 7人 クリック: 270回
- この商品を含むブログ (152件) を見る
- 作者: Joshua Bloch,柴田芳樹
- 出版社/メーカー: 丸善出版
- 発売日: 2018/10/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
Effective Java (English Edition)
- 作者: Joshua Bloch
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2017/12/18
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者: スコット・メイヤーズ,小林健一郎
- 出版社/メーカー: ピアソン・エデュケーション
- 発売日: 2006/04/29
- メディア: 大型本
- 購入: 29人 クリック: 411回
- この商品を含むブログ (186件) を見る
Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)
- 作者: スコットメイヤーズ,小林健一郎
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス (C++ in‐depth series)
- 作者: ハーブサッター,アンドレイアレキサンドレスク,浜田光之,Herb Sutter,Andrei Alexandrescu,浜田真理
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2005/10
- メディア: 単行本
- 購入: 20人 クリック: 383回
- この商品を含むブログ (100件) を見る
GoFもそういう具体的なノウハウの一つだ.ただしプログラミング経験が少ないと理解できないかもしれない.
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (202件) を見る
Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本
- 作者: Eric Freeman,Elisabeth Freeman,Kathy Sierra,Bert Bates,佐藤直生,木下哲也,有限会社福龍興業
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/12/02
- メディア: 大型本
- 購入: 14人 クリック: 362回
- この商品を含むブログ (98件) を見る
4,5:推奨科目
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
- 作者: Sandi Metz,?山泰基
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/02
- メディア: 大型本
- この商品を含むブログ (6件) を見る
オブジェクト指向設計実践ガイド ?Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
- 作者: Sandi Metz
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/02
- メディア: Kindle版
- この商品を含むブログ (6件) を見る
追記.基本的で王道のテクニックが説明されてる.入門者が手を出してもかまわないだろう.
デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)
- 作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章
- 出版社/メーカー: ピアソン・エデュケーション
- 発売日: 2005/09/16
- メディア: 大型本
- 購入: 51人 クリック: 615回
- この商品を含むブログ (125件) を見る
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
- 作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
- 作者: ロバート・C・マーチン,Robert C. Martin,瀬谷啓介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2008/07/01
- メディア: 単行本
- 購入: 18人 クリック: 586回
- この商品を含むブログ (64件) を見る
- 作者: ロバート・C・マーチン,瀬谷啓介
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/30
- メディア: 単行本
- 購入: 3人 クリック: 236回
- この商品を含むブログ (148件) を見る
リファクタリングも重要ではあるが,ある意味で非常に地味な技術で全て丸暗記する必要はない.センスのある人ならば臨機応変に対応するだけで十分かもしれないが,センスのない人は一度一通り目を通しておこう.
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (312件) を見る
新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
- 作者: Martin Fowler,児玉公信,友野晶夫,平澤章,梅澤真史
- 出版社/メーカー: オーム社
- 発売日: 2014/07/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
6,第二言語を学ぶ
最近RubyMLで出ている,以下の件も興味深い。 ですから、将来ありえる組み合わせは * 1.8のまま、順序は導入しない * Hashに順序を導入する(ただし、インスタンス変数やシンボルテーブルなどにはない) のいずれかではないかと。気持ち的には後者に傾いています。 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43930 この発想はJavaではあり得ないだろうな.RubyとJavaとでは単に言語仕様が異なるというだけでなく,ライブラリの設計思想まで異なるのだろう.
7,オブジェクト指向プログラミングそのものを学ぶ
- 作者: ティモシイ・A.バッド,Timothy A. Budd,羽部正義
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2002/12
- メディア: 単行本
- 購入: 3人 クリック: 195回
- この商品を含むブログ (42件) を見る
オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)
- 作者: バートランド・メイヤー,酒匂寛
- 出版社/メーカー: 翔泳社
- 発売日: 2007/01/10
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 307回
- この商品を含むブログ (132件) を見る
オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)
- 作者: バートランド・メイヤー,酒匂寛
- 出版社/メーカー: 翔泳社
- 発売日: 2008/08/29
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 97回
- この商品を含むブログ (53件) を見る