プロが教えるわが家の防犯対策術!

C#とC++のざっくりとした違いを教えて下さい。
僕はしばらくC#を使っていて、夏休みに入った今にC++も学ぼうと思っているのですが、気をつけるべきところはありますか?

質問者からの補足コメント

  • これはどう?

    また、C++ は使いやすくなったC言語。
    つまり、コードの書き方としてはC++とCは同じということと考えていいのですか?

      補足日時:2021/07/24 23:26

A 回答 (6件)

違いか~、簡単に挙げると


①VM: C++ 使わない。C#:.NETのVM(CLI)上で動作
②GC(ガベコレ): C++ 使わない。C#: 使う。
③多重継承:C++: 可能だが使い方が難しい場合がある。C#: 無し。
④OOP: C++: Cに付加する形。C#: OOPしか許さない。
⑤プロパティ、イベント C++: 無し、C#: 有。

C++ は C にクラスを付けてみようという発想から始まった
かなり古い言語。ヘッダファイルで型情報を共有とか
他の言語では廃れてしまったやり方を未だに踏襲してます。

C#は元々ほぼ Java のコピーから出発した言語。
.NET Framework の主力言語で、Java と機能を競って
発展を続けてます。javaと違って RAD なGUIのサポートのため
プロパティやイベント(delegate)なども備えてます。

C# は VM と GC を使うので、組み込み系など、H/Wに近い
レベルの開発は無理。WindowsもC++で書かれていますね。

C++は利用者に高い能力を要求するので、下手なコードを書くと
よくわからない動作をして利用者を困らせます。
たくさんのベストプラクティス身につけないと人に迷惑を
かけやすい玄人向けの言語です。

蛇足:
VC++/CLI は、C++だけど VM/GC を使える C++ で、
NativeとVM用のコードを混在して書ける超変態言語です。
でも、.net と native の間をつなぐのにとても重宝しました。
    • good
    • 0

開発需要にあわせた進化だと思います



C → C++ → C#(C++++)

進化に伴い、
・安全なプログラムを書けるようになってきました
・フレームワーク、パッケージが充実してきてゴリゴリ書かなくてもいろんなことが比較的簡単に実現できるようになってきました
・他の今時の言語、それを取り巻くエコシステムとの協調が楽にできるようになってきました

未だC++、そのエコシステムを使った方がコスト的に有利な開発は沢山あります。ですが、そのようなある意味特殊な開発分野以外はイマドキ、C++を使う必要はありません(と思います)
    • good
    • 0

ざっくり的な回答はNo.1さんがされていますね。



追加して書けば、

・マイクロソフトは、「できるだけC#を使ってほしい!」という意向があります。どーーしてもC++じゃあないとダメって場合だけC++を使って欲しいということのようです。

・C++は、Cで記述するのが難しい複雑なプログラムを記述するために生まれました。Cよりも簡単なように見えるところもあるのですが、実際にはCよりも5倍から10倍も難しいと思います。
「Cがちょっと進化した言語」と甘くみると痛い目を見ます。

なお、STLってうまく使えば、とても役にたつので、C++が嫌いでも、STLが好きになる方がいるのは分かりますね。

日本での業務系のソフト開発では、ソフトの作り易さ、それにマイクロソフトの意向もあってC#が選ばれると思います。
C++を使うことはまず無いと思います。

リアルタイム系、組み込み系となるとC++でしょうけどね。
    • good
    • 0

C#はMicorosoftの.NET技術を基盤とした言語で、C++はそうじゃない言語です。


ざっくりとした違いという意味で。


>気をつけるべきところはありますか?
メモリ管理の考え方とかC#と全然別物なので、一から覚え直しくらいに思ったほうが良いかと。

>コードの書き方としてはC++とCは同じということと考えていいのですか?
C言語も変化しているので、C++自体と別言語としてとらえるのが技術的には正確ですが、まあそんなところで良いのでは。

>C++ は使いやすくなったC言語。
こういういい方は、あまりしないと思います。
    • good
    • 0

> また、C++ は使いやすくなったC言語。



いや、「使いやすくなった」って事は違うんじゃないかな。
むしろある意味「ややこしくなった」C言語、とは言えるかもしれんですが。

世の中、必ずしも「新機能追加!」が「使いやすくなった!」とは同義ではないのです。

> つまり、コードの書き方としてはC++とCは同じということと考えていいのですか?

上手いC++の書き方は「殆どCのコードにちょっとだけC++の書き方を混ぜる事だ」たぁ言われてますけどね。

バベル案内:
http://www.aoky.net/articles/steve_yegge/tour_de …
    • good
    • 0

何だろね。

はて。
C#ってC++++のつもりで名付けたらしいんですが(笑)、実際はC++よりはJavaに近いんじゃないの?分からんけど。

・C#ではポインタが隠されてるけどC++だと悪名高いポインタが出まくりである。
・C#はJavaと同様に、仮想マシン(VM)向けにバイトコードを吐き出すコンパイラを持っているが、C++はネイティブコード(いわゆる機械語)を吐き出すコンパイラを用いるケースが多い(必須ではない)。
・C#はJavaと同様に、基本的にはユーザーにオブジェクト指向を強要する。反面、C++はオブジェクト指向も「使える」が、別にユーザーにそれを強要する事なく、C的なフツーの手続き型言語の書き方も可能。あるいは、STLと言う標準ライブラリの一つを使えば、擬似的だが関数型言語な書き方も可能な「マルチパラダイム」の言語である。

ってのがざっくりとした違いかなぁ。ホントざっくりだけど。

> 夏休みに入った今にC++も学ぼうと思っているのですが、気をつけるべきところはありますか?

ゴメン、あんまC++は詳しくないんだ。
でもC++のSTL、ってのは面白いと思う。多分STLを中心に学んだ方がエキサイティングかしらん。

Standard Template Library:
https://ja.wikipedia.org/wiki/Standard_Template_ …

実はSTLって殆どC++から独立してるようなライブラリなんですよ。実はこれ自体でほぼプログラミング言語として完結してると言う。ヘンなライブラリだ。
これは面白いです。
ぶっちゃけ、「C++を好きな人はこの世にはいない」ですが、STLとかテンプレートを大好きな人はこの世にいっぱいいるんですよね(笑)。不思議な現象です。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!