質問

申し分なく、私はコンピューターサイエンスの入門クラスを受講したばかりで、学校での言語選択はJavaでした(ポリモーフィズム、カプセル化などの概念の基本的な知識があります)。私はC ++、次にCを学びたいです(最初にC ++を学び、それからCに行くべきだと聞きます)。したがって、C#を最初に学習すると、後でC ++をよりよく理解できるようになりますか?

ご協力ありがとうございます。ありがとう。

役に立ちましたか?

解決

疑わしい。 C#は、JavaほどC ++に似ているわけではありません。 unsafe コード内のポインターをサポートしますが、それ以上に、JavaからC ++への特に優れた橋渡しになる理由は考えられません。また、これは、他の方向からやってくる開発者が使用する可能性が高いと思われる機能です。 C#を学習する理由が他にもあるなら、私はそれに行くと言いますが、C ++に簡単に移行するために、スキップすることをお勧めします。

他のヒント

JavaからCおよびC ++への最も簡単な移行は、最初にCから始めることだと思います。

管理されたメモリではなく、ポインタの感触を取得します。

次に、CとC ++のハードなものを感じたら、C ++でオブジェクトとSTLを追加します。

それが私が学んだ方法であり、私にとって非常に簡単な移行でした。

主にC ++の学習に興味がある場合は、表面上は非常に似ているように見えますが、実際にはまったく異なるため、C#を学習しないでください。

マネージメモリシステムを使用しないプログラミング言語を学ぶことを強くお勧めします。その理由は、そのような言語を扱うとき、メモリ管理の複雑さを自分で学ぶことを余儀なくされるからです。オブジェクト/構造が生きるか死ぬかはあなた次第であるため、ガベージコレクターに本当に頼ることはできません。

Cは非常に小さな言語であり、おそらくC ++よりも速く学習できますが、最新のオブジェクト指向言語を最終的に使用して学習したい場合は、Cから悪い習慣を拾う可能性があります。最初にCを学習することは必須ではありません。

私の究極の推奨事項は、C ++に直行して、その感覚をつかむことです。

すでにJavaを知っている場合、C#はC ++について既に知っている以上のことを教えません。

Cを何よりもまず学び、管理されていないメモリを扱う感覚を身につけます。次に、オブジェクト指向の概念について学んだことを、C ++で管理されていない世界に適用します。仮想メソッド、多重継承などのC ++の違いを紹介します。

ベストプラクティスに関する本を読む。 C ++を単独で学習しても、すぐにC ++開発者になることはありません。これは言語の連合体であり、その言語の使用方法を知っておく必要があります。

Cを学ぶだけです。「遷移」に悩まないでください。 Cを学ぶことが目的の場合は、直接Cにジャンプしてください。 JavaはCと十分に近い構文を共有しているため、C ++を心配する必要はありません。あなたはただC ++のことで脇に追いやられるでしょう。 Cは、「打撃を和らげる」ことを試みずに、単独で学習するのに十分重要です。

Javaはオブジェクト指向であり、C ++はオブジェクト指向であり、C#はほとんどOOPですが、それが主な類似点です。

C#はJavaから大きく変わったため、.NET 1.1のC#を見ていない限り、Javaとは非常に異なる言語を学習することになります。目標がCの場合は、そこから離れます。

Cは構造化言語であるため、オブジェクトがなくなったため、考え方は他の3つとは異なり、ガベージコレクションではなく、メモリコレクションを自分で心配する必要があります。

Cが簡単だと理解したら、ポインターはCで学ぶのが最も難しい部分でした。

Cを知っていて、すでにJavaを知っていれば、C ++の学習量は少なくなります。

多分Dを除いて、C ++へのスムーズ移行を行う言語はないと思います。

C ++およびDにほぼ固有の概念:

  • RAII ->間違って使用するのは難しく、使用するのは簡単な決定論的なリソース管理。 C#やCでは、そこでは手動のリソース管理しか学べないことを学習しません。
  • テンプレートメタプログラミング->コンパイル時のチューリング完全性。ほとんどのプログラマはこれを必要としませんが、これはあまり一般的ではありません。通常、これはライブラリの形式で見つかります(最も顕著な例:式テンプレート)
  • コンパイル時間、カモ型の汎用プログラミング-> C ++には、多くのタイプに依存しないアルゴリズムとコンテナーが付属しています。 C#ジェネリックは厳密に型指定されており、クライアントにより多くの制限を課しています。
  • 異なるパラダイム:手続き型、オブジェクト指向、汎用、および少しの関数型プログラミング。 C#、Java、Cはそれらのサブセットのみを教えます。 C ++では、いつ最適かを学ぶ機会があります。
  • constの正確性およびconstが正しいライブラリ。

多くのプログラマーが、C ++またはCとC#の比較を" C#にポインターを置くこともできます" を減らすのは好きではありません。

常に物事が発明された順序で学習します。他の方法ではありません。

編集:最初にC ++を学習し、次にCは非常識です... C ++はCのスーパーセットです。 C ++の機能がCに実装されなかった理由を推測するよりも、言語の進化に伴って物事が追加された理由を理解する方が簡単です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top