オブジェクト指向プログラミング言語を学びたかったのですが、OOPの概念全体を知ることだけを目的にしたくないのです。だから、誰が私がどの言語を学び始めるべきか教えてくれますか?
オブジェクト指向プログラミング言語を学びたかったのですが、OOPの概念全体を知ることだけを目的にしたくないのです。だから、誰が私がどの言語を学び始めるべきか教えてくれますか?
回答:
さらなる提案:
私がこれまでOOPバーで読んだ中で最高の本は、バートランド・マイヤーのオブジェクト指向ソフトウェア構築です。それはあなたが場所で一生懸命に考える必要があるという点で「簡単な」読みではありません。しかし、OOの原則を説明する上で私が見た中で最高の仕事をします。
言語に関しては、C ++には近づかないでしょう。学習目的には大きすぎます。OOを理解するのに本当に役立つ言語が必要な場合(主流のアプリを作成したり使用したりする言語とは対照的に)、smalltalkをご覧ください。またはエッフェル(上記のマイヤーの本の言語)。
もう少し主流でありながら、オブジェクト指向の原則を忠実にサポートする言語が必要な場合は、Pythonが最適です。静的型付けが必要な場合は、JavaとC#も適切です。
ただし、注意すべき点が1つあります。言語はオブジェクト指向を教えてくれません。それはオブジェクト指向の概念をどれだけうまくサポートするかを助ける(または妨げる)だけです。オブジェクト指向の学習とは、オブジェクト指向の用語で考えることを学ぶことです。そのために、マイヤーの本に戻ります。
hth。
C ++、Java、C#などのオブジェクト指向言語を学習して、OOPSを試すことができます。
あなたが本当にOOPを学びたいなら、あなたは言語を超えて考え、それがこの現実の世界でそれらを管理するのと同じようにソフトウェアプログラムに関わるマンガの複雑さを助けるパラダイムであることを理解する必要があります。次に、多態性、継承、カプセル化(PIE)などのオブジェクト指向の基本概念を学びます。
Grady Boochによるアプリケーション指向のオブジェクト指向分析および設計(第2版)についても優れた書籍があります。
また、このようなブログを試してみることもできます。これは、fascinatingoops.comから始めるのに十分なほど簡単です。
OOPを学びたいですか?1つの答え-Smalltalk。
これはエレガントな言語であり、コアなオブジェクト指向です。OOPを最初から学習し、他の言語が取り入れようとする他のすべての注意散漫によって妨げられることはありません。
Smalltalkが勝ちます。また、無料の優れた電子書籍も利用できます(Stephane Ducasseを参照)
C ++、またはSmalltalkのような先祖の1つを学ぶ必要があります。C ++は、オブジェクト指向、メモリ管理、参照と値などの概念を明確に分離し、強力な汎用サポートを提供します。
JavaやC#のような.NET言語を学ばないでください。Javaのような言語を学ぶとき、「オブジェクトは常にヒープ上にあり、常に参照である」などのことを学びます。これはJavaにのみ当てはまり、一般的にOOPには当てはまりません。この概念の融合(オブジェクト指向、メモリ管理、参照と値)は、最初の言語では非常に危険です。なぜなら、それらを頭に閉じ込めると、それらを取り戻すのは非常に難しいからです。この点ではC#の方が多少優れていますが、それほど多くありません。さらに、一般的なプログラミングの弱いサポートで、「継承はハンマーであり、すべてが釘である」ことを教える傾向が高い場合があります。
OOの世界への最初のコンタクトはC ++でしたが、これは悪いスタートではありませんでした。しかし、Pythonを学習するとき、私は大幅に改善しました。違いは言語にあります。C++でアイデアを試す(「OOの方法でこの問題を解決するにはどうすればよいですか?」)には、記述するコードが多く必要であり、Pythonで同じアイデアを試すよりもはるかに多くの落とし穴があります。だから私はPythonをお勧めします。
OOPを学ぼうとしている間に別の言語を調べるべきではないと思います。私にとっては、理論を把握してから、すでに知っていることと関連があれば理論を適用することを学ぶのは簡単です。新しい構文を理解することは邪魔になります。
どのOOPブックからでも始めることができます。繰り返しますが、私は選択した言語で1つを取得します。リファクタリングに関する本(OOPスタイル)を読んで、OOPの適用に役立ちました。私は既存のプロジェクト(要件収集から気を散らすものはありません)を取り上げ、それを改善する新しい方法を見つけました。OOPのためのOOPだけではありません。その後、新しいプロジェクトで最初から最後までそれを行う方法を学ぶことができます。ここでのロジックは、最初から常に正しいとは限らないということです。適切な場所を認識できれば、より良い結果が得られます。ほとんどの場合と同様に、すべての問題を解決できるわけではありません。
一部の言語には明確な制限があります。あなたの目標が多重継承のマスターになることであるなら、.NETは出ています。
ここでは、従来の考え方に反し、OOP を使用するための最も簡単な言語は、必ずしもそれを学習するのに最適な言語ではないことを提案します。私は最初にC ++でOOPに触れましたが、PerlでのOOPに関するLarry WallのCamel本の章を読むまで「取得」しませんでした。何らかの理由で、明示的にオブジェクトをクラスに祝福しなければならないまで、クラスとオブジェクトの違いを把握するのに苦労しました。CでGObjectを使用するまで、OOPの基礎となる実装を本当に理解していませんでした。言語に依存しない企業のクラスを受講するまで、ベストプラクティスを本当に理解していませんでした。非常に大きなトピックです。