オブジェクト指向をどう学ぶべきか

アバター
namachan10777
記事: 32
登録日時: 10年前
住所: 四国
連絡を取る:

オブジェクト指向をどう学ぶべきか

投稿記事 by namachan10777 » 10年前

http://dixq.net/forum/blog.php?u=124&b=5665
日記と議論されていることが食い違っているようなので、新しく。
僕も勉強中の身であるので、なるべく様々な意見を聞きたいと思います。
僕は本を読み、考え、作ってみるというのを繰り返して勉強するのが良いと考えています。
皆さんの意見はどうでしょうか。

Rittai_3D
記事: 525
登録日時: 12年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by Rittai_3D » 10年前

【これまでの大まかな流れ】
発端:http://dixq.net/forum/blog.php?u=124&b=5665(へろりさんの日記です)

#追記
思いのほか長くなったのでスポイルしました。
► スポイラーを表示
書き間違い等ありましたらおっしゃってください。
最後に編集したユーザー Rittai_3D on 2015年8月24日(月) 18:23 [ 編集 1 回目 ]

derok
記事: 51
登録日時: 12年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by derok » 10年前

Rittai_3D さんが書きました:ようするに、考えに考え抜いたコードより、思いつきのままのコードがよいということですかね
違います。確かに設計は大事です。考えることは大事です。
ですが、考えているだけでは机上論です。
実際にコードにしてみないことには分からないことはたくさんあります。
わたしが言いたいことは、オブジェクト指向は難しいけど、別言語の力を借りて学びやすくしてみては?ということです。
なら私の言いたいことは余り変わらないのでは?というはなしです。
最初の話に戻りますが、クラス単位でコンパイルできることが、オブジェクト指向を勉強しやすくするとは思えません。

Rittai_3D
記事: 525
登録日時: 12年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by Rittai_3D » 10年前

derok さんが書きました:違います。確かに設計は大事です。考えることは大事です。
ですが、考えているだけでは机上論です。
実際にコードにしてみないことには分からないことはたくさんあります。
実際にコードにしてみないと分からないことはないと思います。
分かることは見た目くらいではないでしょうか。
オフトピック
考えたものをコードに書き起こすという意味でしょうか?
全く想像が出来ないので例を出していただけると助かります。
derok さんが書きました:なら私の言いたいことは余り変わらないのでは?というはなしです。
最初の話に戻りますが、クラス単位でコンパイルできることが、オブジェクト指向を勉強しやすくするとは思えません。
オブジェクトの分割(JavaでのFileクラスやFileReaderクラスなど)の参考になると考えたからです。
これがうまくできていないと適切な設計にならず、肥大化したクラスになるのだと思います。
C++とC言語には互換性があるので、C言語から入った人がC++に移るとCっぽく書いてしまう場合があります。
これを防ぐために別言語を勧めました。
オフトピック
へろりさんレベルの方でしたら勧めるまでもないか、と思いましたが、一応書いてみただけです。

derok
記事: 51
登録日時: 12年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by derok » 10年前

Rittai_3D さんが書きました:考えたものをコードに書き起こすという意味でしょうか?
はい、机上論では気づかないこと、分からないことを見つけるためにです。
初心者ならなおさらいざ書く段階になって気づくことがあると思います。
Rittai_3D さんが書きました:C++とC言語には互換性があるので、C言語から入った人がC++に移るとCっぽく書いてしまう場合があります。
Cっぽく、の意味によりますが、そんなことあるのですか?
事実上のグローバル関数や変数の使用なら又聞きですがC#やJava でもよくあるらしいです。むしろSingletonという免罪符を得ていることも多いとか、まぁ、これはC++にもいえることですが。
(GoFのデザインパターン23種は22種類にすべきだと思います)

アバター
namachan10777
記事: 32
登録日時: 10年前
住所: 四国
連絡を取る:

RE: オブジェクト指向をどう学ぶべきか

投稿記事 by namachan10777 » 10年前

Cっぽく、の意味によりますが、そんなことあるのですか?
よく聞きます。C+と呼ぶそうです。

頭で考えたことを、実際に設計して書いてみるというのは僕も重要だと思います。
結構うまく出来たかもと考えてみても、いざ書いてみると、全然ダメだったりとか。
もちろん、考えた上で書かなくては意味がないと思いますけど。
しっかり設計しておけば、設計の段階で気づくのでしょうが...

しかし、Rittai_3Dさんも言われていますが、オブジェクト指向を学ぶのであれば、JavaやC#などのオブジェクト指向言語を使うのが最も良いと思います。
自分はJavaから始めたので、D言語もC++も1クラス1ファイルとしたのでクラス単位で分割してコンパイルすることは当たり前すぎて、メリットはよく分からないのですが、言語は何でも良いと言う考えには反対です。
インターフェースや、継承、カプセル化などが言語機能でサポートされていない言語でオブジェクト指向を学ぶのは非効率的かと。

アバター
usao
記事: 1889
登録日時: 12年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by usao » 10年前

なんというか,"オブジェクト指向"って「結局は何なの?何が言いたいの?」っていう印象.

あるコードがあったとき,それが"オブジェクト指向"ですか?違うのですか?という
その線引きというか閾値というかはどこにあるのか.
何をしたらそうなって,何をしたら(あるいはしなかったら?)そうではないのか.
ググったりしてみても,そこらへんが不明瞭というかぼんやり感……

皆さん,その辺のことを明瞭に掴んでいて
「俺は今オブジェクト指向でプログラミングしてるぜ.(他の何らかの形態(指向?)とは違うんだぜ)」
みたいに意識しておられるのでしょうか.

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by softya(ソフト屋) » 10年前

私の認識では、オブジェクト指向は個人ごとに認識や線引が大きな差がある。出来るレベル差も大きい。
ネットでプロでもちゃんと出来る人が少ないと嘆いている人をよく見かけますが、そのとおりだと思います。
そもそも、ちゃんとオブジェクト指向するというのは非常に哲学的な事だなと感じますので、深みにハマらない様に思考放棄しています。
※ オブジェクト指向を私は極めておりませんので、どこまで出来たら合格ラインなのかは語れません。
なので、プロでも高度なレベルは出来ない人がいる前提でチーム作業をしないと置いてきぼりの人が続出します。
オブジェクト指向の一部は高度すぎて汎用化が難しい技術であると思っています。
プロなら出来るようにするのが当たり前という意見もありますが、現実はそれでは回りません。

と言うことで、月並みですが生産性、安定化、メンテナンス性を第一に考えて使うべき技術であると言う私の認識です。
あと掲示板だと宗教戦争になりやすいですね。

Rittai_3D
記事: 525
登録日時: 12年前

RE: オブジェクト指向をどう学ぶべきか

投稿記事 by Rittai_3D » 10年前

はい、机上論では気づかないこと、分からないことを見つけるためにです。
初心者ならなおさらいざ書く段階になって気づくことがあると思います。
「頭で考えて書く」までを想定して書いていましたので、「考える」と「コードを書く」で分割されているとは思いませんでした。
しかし、書く段階になって気がつくことはやはりないと思います。
Cっぽく、の意味によりますが、そんなことあるのですか?
事実上のグローバル関数や変数の使用なら又聞きですがC#やJava でもよくあるらしいです。むしろSingletonという免罪符を得ていることも多いとか、まぁ、これはC++にもいえることですが。
(GoFのデザインパターン23種は22種類にすべきだと思います)
Cっぽくはよく見ます。主に初心者のコードに。
「Better C」や、namachan10777さんがおっしゃっている「C+」のことです。
(GoFのデザインパターンについての知識は「何それ?おいしいの?」レベルです)
オフトピック
>usaoさん
皆さん,その辺のことを明瞭に掴んでいて
「俺は今オブジェクト指向でプログラミングしてるぜ.(他の何らかの形態(指向?)とは違うんだぜ)」
みたいに意識しておられるのでしょうか.
意識しているけど全く出来ないという状態です・・・

Poco
記事: 161
登録日時: 14年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by Poco » 10年前

usao さんが書きました: 皆さん,その辺のことを明瞭に掴んでいて
「俺は今オブジェクト指向でプログラミングしてるぜ.(他の何らかの形態(指向?)とは違うんだぜ)」
みたいに意識しておられるのでしょうか.
私はSOLID則を意識しているかどうかが、オブジェクト指向だぜの境かなと思っています。

derok
記事: 51
登録日時: 12年前

Re: オブジェクト指向をどう学ぶべきか

投稿記事 by derok » 10年前

>Rittai_3Dさん
ふーむ、そういう人もいるのですね。
ですが、Cっぽく書けないなら、オブジェクト指向っぽく書けるわけではありませんよね?
C#やJavaでもなんちゃてオブジェクト指向はたくさんあるでしょう。
このなんちゃてオブジェクト指向、オブジェクト指向をすることで非オブジェクト指向的なコードより可読性も下がり、拡張性も低くなっているようコードから抜け出すのは大変です。
これをできるようになるにはかなりの時間がかかるでしょう。
その時間に比べてCっぽく書いてしまう時間なんて誤差だと思います。
最後に編集したユーザー derok on 2015年8月26日(水) 00:39 [ 編集 1 回目 ]