つい最近C++の勉強に乗り出して、C++はCと互換があるだけで言語としては別物なんだなあなんて思っていたのですが、他の人は勉強するならC++とC#どちらを(またはどちらから)選択するのだろうかとふと思い質問することにしました。
それぞれの得意分野等の説明があると嬉しいです。
(....宗教戦争が勃発しそうですね)
<<<補足>>>
元々Javaの勉強をしていました
C++、C#は最終的には両方共学びたいと思います。
将来的にはUNIXやLinuxのソースをいじれるようになりたいと考えています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答13件
0
ベストアンサー
Windowsアプリだけを対象にしているのであれば、よほど厳密で高速な処理が必要なアプリ(例えばFPSゲームとか)で無い限り、作れる物とかそういうのはあまり変わらないと思います。ただ、中途半端に中間取ってC++/CLIをするぐらいならC#にした方が良いと思います。
Windows以外もターゲットになると、Monoが安定してきたと言ってもC#ではまだ不安を覚えます。汎用アプリでは無く、Unityを使いたいとなると、逆にC#しか使えません。iOSやAndroid向けとなるとXamarinとの組み合わせでC#で作ることもできますから、その選択もありです。
ということで、一体何を作るのが目的なのかが重要であり、それが無い限り、選択は難しいと思います。言語仕様としては、C++はCの拡張ですが、C#はDelphiをJava風にしたという形で、設計思想や方針が異なるため、比較はあまり意味がないと思っています。
投稿2016/08/18 21:53
総合スコア21735
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
条件がなにもないと難しいところですが、
C#ですかね。仕事で使うので。
旧VB触ってた頃は、簡単なAPIのラッパ(使わない引数とか制限して呼びやすくしただけのもの)をC++で書いたこともありますが、最近はそういう出番もほとんどないので。
とはいえC#は仕事で困らない程度には書けるので、その意味では C++なのかなぁと
思わないでもないですが、C++やるなら他の言語選んじゃいそう。
投稿2016/08/18 17:03
総合スコア2604
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/18 18:52
2016/08/18 23:01
2016/08/19 04:12
0
概して言えば
C++ はC言語のようなもの
C# はJavaのようなもの
なのでご質問自体が
「C言語とJavaのどちらを先に勉強したら良いでしょうか?」
に似ています。
従いまして目的によって異なると思います。
現実的に仕事をしてお金を稼ぐという観点からすると最近は
C#の方が比較的良い仕事が得られるのではないでしょうか?
(ケースバイケースですが・・・)
投稿2016/08/29 22:02
総合スコア1628
0
得意分野等の説明
C/C++は機械に近く、C#は人間に近い言語です。
C/C++はOSなどのシステムを作るのに向く言語で、
C#はシステムの上で動くアプリを作る言語です。
C++は汎用性が高いですが仕様が巨大なので、
そのぶん学習コストも大きいです。C#はその逆。
勉強するならC++とC#どちらを選択するのだろうか
その2択でしたら私の場合C#です。
もともと人間が読み書きしやすい軽量言語が好みというのもありますが、
どのみち全部の技術は学びきれないので、特化することを私は考えています。
「何をやらないか」が戦略で、私はシステムやインフラはさわりません。
そのかわり、機械学習や自然言語処理などに学習リソースをあてています。
たとえると、料理屋は料理に凝りたいので、素材は買ってくるという考えです。
しかしどのような選択であれ、言語を学ぶときは、
目的をハッキリさせた方が学びやすいと思います。
投稿2016/08/29 18:41
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
何をしたいかにもよりますね。
たとえば、GUIアプリならC#の方が圧倒的に作りやすいので、今更C++で作りたいとは思いませんが、信号処理や画像処理のように大量のデータを高速で処理したいならC++以外に考えられません。
では、画像処理を行うGUIアプリを作りたいときはどうするかといえば、GUI部分はC#で作り、画像処理部分はC++で作り、C#からC++の関数を呼び出す、というようなことをします。実際、C#向けに公開されている数多のライブラリ(アセンブリ)も、中身はC/C++で書かれていることがとても多いです。
両者は得意分野が違うので、どちらかを選ぶのではなく、両方覚えて状況に応じて使い分けるのがいいでしょう。
投稿2016/08/19 02:54
総合スコア5938
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんにちは。
私自身はインフラ的な部分の開発が多いのでC++一択です。
でも、GUIを作らないといけない時はなやましいです。C++Builderを使えばいいのですが、オープン・ソースをC++Builderで開発するというのはどうかと思いますし、昔はネット情報も豊富だったのですが今はかなり厳しいようです。
結局、GUI開発にはC#を使っています。C++をベターCとして使える状態でC#を学ぶのは簡単でした。
もし、それなりに学習に時間をかけることができるなら、歯ごたえのあるC++を学習するとなかなか力がついて良いのではないかと思います。
あまり学習に時間を割けないなら、成果に結びつくのが速いC#は良い選択と思いますよ。
投稿2016/08/19 02:53
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
どっちか、ではなく両方使えた方が何かと良いです。使用領域はあまり被りません。
私はもう両方使える状態ですが、私がC++を勉強し始めた頃はまだC#なんて存在していなかったからであって、
今から勉強するならC#からの方が良いかもしれないですね。
やはり後発言語である分仕様がすっきりしていますので、勉強しやすいかと思います。
今のC++は仕様の化け物で、基本的に誰も使ってないような構文などもあったりして、人のプログラムを見て書き方を学ぶという面が少なからずあったりしますし。
投稿2016/08/19 02:41
総合スコア336
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
自分が使ってるという意味ではC#ですかね。
ただ、以前はC++も使っていたので、C++を勉強するのも悪い選択肢には思えません。
業務で必要だから勉強するというのも一つですし、単純にパソコンや組み込み機器、サーバーなどの挙動を知りたいという意味での勉強というのもあると思うのです。
C#はC++等の言語でいうポインタの概念を考慮せずとも作れるので、難しいことを考えなくても
思った通りに作りやすいです。業務で使う機会も増えてきていますし、設計等もしやすいです。
OSがどうとか、メモリがどうとか裏側を理解したいというならばC++は勉強になります。
逆にC++で大規模開発などに乗り出すとオブジェクト指向とはいえC言語からの拡張という位置付けもあり
色々とC++なりの書き方が必要になってくると思います。1から勉強するには落とし穴が多いと思われます。
勉強という観点だとどちらも勉強になりますが、プログラムのなんたるかを知りたいならC++
最近流行している書き方を習得し、業務に生かしたりほかのプログラミング言語習得に関しても幅を持たせたいならC#ですかね。(C++はもうついていけてませんが、最近流行のというならboostをはじめいろいろなライブラリが充実しているのかもです。)
投稿2016/08/18 23:56
総合スコア161
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私の場合は、元々アセンブラからスタートして、N88 BASIC、VB、C、C++と渡り歩いているので、C/C++という答えになりますが、言語は所詮道具なので、他の方が言っておられるように何をするかで変わってくると思います。上記以外にも、PL/Iで組込ソフトを作ったことも有ります。
業務じゃなくて個人的には、ruby,perl,awkなどスクリプト言語も触ったりしてます。その時の目的に応じて習得すればいいと思いますが、若い内にやっておいたほうが良いとは思います。年齢を経てくると時間がなくなるのと気力が若い頃ほど続かなくなります(笑)。
C#も、一通りは使えますが、C++11/14などC++も言語仕様が進化しているので、そちらのほうにまだ興味や関心があるということです。自由度も高いですから。
投稿2016/08/23 08:26
総合スコア3579
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私の場合は、たぶんC#から勉強すると思います。
一度、C++から勉強して挫折しています。
WinAppの開発では、C#を選択します。
また、Windows以外のターゲットもC#で開発できる環境が
整えられて来ています。
投稿2016/08/19 00:30
総合スコア338
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。