C / C ++コードのレベルを向上させる


16

私は現在3〜4年間プログラミングを行っており、初心者とは呼べないように感じていますが、このサイトで質問を読んで、WTFについて話していると思いますか?最近、プログラミングの本を手にしたときも同じように感じています。

私はいくつかの初期プログラミング本を読みました。C/ C ++に関するものとゲームに関するものです。私は、非常に基本的なAI、シリアル、TCP / IPインターフェースなど、より複雑なものをいくつか書きました。

私はゲームプログラマになることを計画していますが、最近、組み込みシステム(シリアルインターフェイス)で作業する機会を得た後、組み込みシステムにある程度興味を持ちました。

私が見つけることができる中間C ++の本はないので、導入と初心者の本を完了した後、学習を続けるための資料を見つけることは非常に難しいとわかりました。

私の知識とスキルを成長させ、向上させるためにどのようなアドバイスをしますか?特定のリソースをいただければ幸いです。


C ++の本のためにこの質問を参照してください。stackoverflow.com/questions/388242/...
のNaveen

回答:


10

C / C ++について話しているなら、間違いなく追加の経験を使うことができます。私があなたに与える最初のヒントは、CとC ++は完全に異なる言語であるということです。C ++を学ぶのに最適なリソースはStackOverflowです。膨大な量の経験と知識を持っている人がたくさんいます。

次に行うことは、DirectXなどの低レベルAPIで3Dグラフィックエンジンを記述しようとするなど、主要プロジェクトを開始することです。プログラムする。

StackOverflowのこのリンクをチェックして、C ++を学習するための優れた書籍の大きなリストを確認できます。


3
いいえ、C ++を学習するのに最適なリソースは良い本、またはできれば本です。
ニールバターワース

+1主要なプロジェクトを開始するため。私は本で読んだ何よりも、3Dグラフィックエンジンを介した苦労から多くを学びました。それはあなたが解決するために研究を必要とするなじみのない状況に入るように強制します。それはきれいではありません、それは効率的ではありませんが、あなたは何かを学びます。
SCゴースト

「C / C ++について話しているなら、間違いなく追加の経験を使うことができます。」の+1 「C ++を学習するのに最適なリソースはStackOverflow」であるため、-1。
レジデュー

5

まず第一に、あなたがまだ知らないことについての基本的な理論的背景を増やしてください。理論を研究し、いくつかの短い例を書いてください。

基本的な理論的背景の例:

  • アルゴリズムとデータ構造
  • ソフトウェア設計(UML、設計パターン、OOP)
  • オペレーティングシステムと並列プログラミング

次に、追加の言語(JavaまたはC#など)の学習を検討します。-追加の言語を学習すると、使用している言語の長所と短所をよりよく理解でき、気付かないかもしれないベストプラクティスを学ぶことができます。

次に、新しいドメイン(Webプログラミング、コンピューターグラフィックス、画像処理、コンピュータービジョン、データアクセスなど)を選択します。理論を研究し、いくつかの短い例を書いてください。

次に、多層アプリケーションをカプセル化し、データアクセス、UI、選択した特定のドメインを処理する大きなサンプルを作成します。アプリケーションのアーキテクチャに重点を置きます(その部分ができるだけ疎結合であることを確認してください)。

うまくいけば、新しいアプローチと技術​​を学び、それらを優れたアーキテクチャに統合する方法を学ぶことができます。


特にゲームプログラミングでは、次のドメイン/技術を選択することをお勧めします。

  • 画像処理の基本
  • 特定のUIテクノロジー
  • コンピューターグラフィックスの基本
  • 特定のグラフィックエンジン(DirectX、OpenGL、OGRE、ODG、Java3Dなど)
  • 機械物理の基本
  • 特定の物理エンジン(PhysXなど)
  • 特定のゲームエンジン(XNAなど)
  • マルチスレッドプログラミング
  • 分散プログラミング


編集:

学習方法:

  • CodeProjectから例を読んで実行します。
  • 好きな本(読書スタイルに一致+読みたいトピックをカバー)が見つかるまで、本/電子書籍ライブラリまたはストアで数冊の本を閲覧します。
  • ブログを読む。
  • 物事を試してみて、スタックしたときにStackOverlowで聞いてください。

私はダイレクトxを知っています。第二に、私はこれを考えましたが、非常に基本的なものを超えるリソースを見つけることができません。物事を学ぶ方法について何かアドバイスはありますか?
スキート

2
例を書くことで-試行錯誤が最善の方法です。また、編集を参照してください。
ダニーヴァロッド

1

C ++を(Cと組み合わせて)使用することで、彼らが話しているWTFを理解するために、より多くのことを学ぶ必要があると仮定します。C ++はいくつかの言語であり、同じ場所に存在する抽象化のいくつかの層であり、一度にすべてを探索し、今見たものを理解するには時間がかかります。

私はあなたの場合であり、私はまだそれらの言語について学んでいます。また、組み込みシステムでの作業も多く学びます。

ここに私のアドバイスがあります:

  • これらの本を読んでくださいhttps : //stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list- >初心者ではないと感じていても、入門書から始めてください。先に進む前に基本的な知識を十分に習得する。次に、テンプレートのメタプログラミングと組み込みシステムの制限について学びます。
  • たくさん練習する:学んだことを応用すればするほど、それを理解するようになります。この点で、私のやり方は、小さなテストプロジェクトで言語とコンテキストの隅々をテストすることです。また、すべてを管理している「大きな」ホームプロジェクトもあり、新しいテクニックを実践し、それらが壊れるまでプッシュします。

プログラミングについて多くのことを知っていると思い込まないでください。ほとんどの開発者は、さまざまなコンテキストと種類のプロジェクト、プラットフォームなどを使用して、10年以上の実世界での実践を経て初めてプログラミングが成熟します。

あなたは旅を始めたばかりです。


3
言うまでもなく、使用している「成熟」は「学習するものが何もない」とはほど遠いものです。学べば学ぶほど、知らないことをより多く知ることができます。
デビッドソーンリー

0

組み込みプログラミングとゲームへの関心に基づいて、次のこともお勧めします。上記の投稿のブックリストを熟読して、これらすべての主題に関する優れたソース資料を見つけることができます。私が不可欠だと思った本の1つは、C ++標準ライブラリ:チュートリアルとリファレンスです。

  • OOPの基本に慣れていない場合は、まずそれらを学んでください。継承とカプセル化の基本を理解します。仮想、パブリック/保護された、プライベート、および静的なキーワードの動作を理解します。

  • ポインタと参照を快適に使用します(一般的に参照を優先します)。smart_ptr <>コンストラクトを学習および使用して、「自動魔法」のメモリ管理を実現します。

  • C ++テンプレートの使用方法を学びます-最初はコンテナーデータ型として。C ++テンプレートがメタプログラミングを介して実行できる新しい強力な手法を継続的に発見できます。

  • STLを学ぶ:文字列、iostream、例外、およびコンテナークラスを使用し、実用的な場合は常に、低レベルのchar *、FILE *、およびchar []データ型よりもそれらを優先してください。

  • Boostライブラリの一部の使用を開始します -興味があるなら、まずasioとスレッドライブラリを学ぶことをお勧めします。これは非常に強力で、オープンソースで、クロスプラットフォームのC ++ソースベースであり、移植可能な高品質のコードを記述できます。(コアC ++標準への多くの追加は、Boostの貢献に由来しています)

  • 楽しんで!真剣に-いくつかのペットプロジェクトを選んでコーディングします。組み込みプログラミングプロジェクトが好きなら、Arduinoボードをいじくり回すかもしれません。

  • 幅広い経験を積む-Windows / Visual Studio C ++のみを使用している場合は、Linux / g ++またはOS X / XCodeのコードを作成してみてください(MacでC ++をコーディングするか、実際に視野を広げて行くことができます) Objective-Cの場合、OOP言語の別のブランチがどのように物事に取り組んでいるかを確認します!)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.