私はしばらくC#
を使用しています。私のキャリアをさらに伸ばし、プログラミングの知識を拡張するために、C++
に入りたいと思っています。 C#
は非常に便利で、すぐに使用できますが、私のチームと私は大規模なプロジェクトを作成する予定であるため、いくつかの理由で下位言語での作業を検討する必要があります。ほとんどの企業は、高いパフォーマンスと移植性のためにC/C++
を使用しています。もちろん、C#
はC
やC++
に比べて必ずしも悪いわけではありませんが、私はジョブごとに異なるツールを用意することを好みます。
C++は低レベルの言語であり、マシンコードであり、メモリ管理がないため、私はC++を読むのがより困難です。しかし、それがマシンコードであるという事実は、消費されるメモリの量も削減します。この言語は扱いが難しいですが、ある意味、強力な言語になっています。高速で効率的なマシンコードに作られましたが、「マシンに近いので」理解と学習が難しくなっています。
私は決心し、C++
を学びたいので、学習中に覚えておくべきいくつかのヒントはありますか?悪い習慣に陥らないようにして、後で破るのではなく、申し訳ありませんが安全です。
私は記載されたリソースを使用する予定です ここ が、個人的な推奨事項、書籍、またはオンラインガイド、できればC#
について十分な知識を持っている人が簡単に理解できるものを優先します。
私は実際にはC++からC#へと逆に行きました。私は本当にC++のコンテキストで良いOOデザインに歯を切らしているので、私はこれについて大丈夫だと話せると思います。
チップ:
const className&
関数パラメーターの入力タイプとして-これには非常に詳細で非常に詳細な理由があります。 Marshall Clineの C++ FAQ は、このために非常に貴重です。これはオープンエンドネスのために閉じられる可能性がありますが、うまくいけば、このヒントが十分に重要であり、議論の余地なく十分に役立ちます。
所有権に注意してください。
C#(および自動メモリ管理を備えた他の言語)では、変数を所有するオブジェクトが少しあいまいになる可能性があります。イベントはハンドラーを所有しますか、それともイベントの「キャッチャー」を所有しますか? C#では、それは本当に重要ではありません。 C++では、ハンドラーの所有者がknowでなければ、プログラムは恐ろしい、恐ろしい(そしてしばしば微妙な)死を迎えます。
これは、プログラムを設計する方法の主な違いであり、注意深く非常に注意しないと、微妙な方法で現れます。あなたがする必要がある最も重要な移行であるものを誰が所有するかについて設計することを学ぶので、それに早く集中してください。
C++(低水準言語)を記述するために使用している言語と、不正確であると解釈されるため、技術的説明(マシンコード)のいくつかにも少し注意する必要があると思います。
次に、なぜ新しい言語を学びたいのかを理解する必要があります。多くの企業がC/C++を使用しており、多くがJavaを使用しており、多くの企業がPerlとPythonとScalaと。 ..(一部はFortranを使用している場合もあります。特定の会社、セクター、またはプロジェクトを念頭に置いている可能性がありますか?それが純粋に雇用上の理由である場合、証明可能な経験を得る方法がない限り、私は警告します(私は私の暇な時間のプロジェクトをインタビューの経験として使用してください)興味のあるものを選んでください、多分それはOOではないでしょう;あなたは長期的にはそれでより良くなるでしょうそれから本当の興味を持つことです。次に、コードを公開して、それがどうなるかを確認し、進行中に質問をします。C++の場合、特にメモリ管理をしたい場合は少し時間がかかります!