• ベストアンサー

VC++とC#を学ぶ意義の比較

私はVC++を3ヶ月ほど、C#は触った程度の大学生です。 他の言語ではCを3年間学び、pascal,javaはある程度わかる扱うレベルです。 C#かVC++を学ぼうと思っているのですが、悩んでいます。 先日まで私は C#はVC++より開発効率がよく、 VC++はC#より実行速度が速く、ライブラリが豊富、 と思っていたので、両方ともしっかり学ぼうかと思っておりました。 しかし、以下のサイトではC#の実行速度はVCとほぼ一緒と出ており、 http://homepage2.nifty.com/Fujimaki/download/Comparison/ また昨今ではC#もライブラリが充実してきていると聞きます。 なので、これから学習するのはC#だけでもいいかなとも思うのですが、どうなのでしょうか? それとも、windowsプログラミングの仕組みをしっかり理解するためにも,VC++のsdkプログラミングくらいはした方がよろしいでしょうか? 長文申し訳ございません。 よろしければ、どなたかご意見お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.3

>C#はVC++より開発効率がよく、 >VC++はC#より実行速度が速く、ライブラリが豊富 これはあくまで一般論ですね。 下手なC#プログラマのそれと上手なVC++プログラマのそれは比較にならないでしょう(後者であれば逆のパターンで)。 >しかし、以下のサイトではC#の実行速度はVCとほぼ一緒と出ており、 ざっと読んでみましたが、罠が幾つかあるように思います。 1.2002年と古い時期の比較である。 →おそらく.NET Framework1.0の時代です。今の2.0や3.0とは比べ物にならないでしょう。 2.「VB, VCは .NETを使用」とある。 →.NET Framework上で動作させてしまったらパフォーマンスは落ちます。というより、C#とVCの差が殆どなくなる事のほうが重要でしょう。 3.VC++をC++とみなすなら、C++Builderとの差が説明できない。 →コンパイラ(実装)によっても変わってくるという好例です。 >これから学習するのはC#だけでもいいかなとも思うのですが hykuranさんがそう思われるのならそれでも結構だと思います。 実際に開発の現場で言語を選択できるケースと言うのは非常に稀ですし、 大学生の今ぐらいしかそんな悩みはないでしょうから(笑)。 ただ、せっかくC言語を3年もおやりになったのですから、 その上級言語であるC++で追加された、クラスを使ったオブジェクト指向プログラミングは是非学んでおいて欲しい。 というのが私の率直な感想です。 もっとも、オブジェクト指向に関してはC#やJavaのほうが洗練されていて分かりやすいですけども。 ここまで来れば、構造化プログラミングやオブジェクト指向など、実装パターンを意識して言語を勉強すべきだと思います。 逆に、実装パターンをしっかり習得すれば、どんな言語であれ習得するのはそう難しくないはずです。

hykuran
質問者

お礼

懇切丁寧で密度の高い回答ありがとうございます。さすが専門家さんです。 >>しかし、以下のサイトではC#の実行速度はVCとほぼ一緒と出ており、 >ざっと読んでみましたが、罠が幾つかあるように思います。 たしかにpiyo2000さんのご指摘のとおりですね、私が浅はかでした。申し訳ございません。 >ただ、せっかくC言語を3年もおやりになったのですから、 >その上級言語であるC++で追加された、クラスを使ったオブジェクト指向プログラミングは是非学んでおいて欲しい。 >というのが私の率直な感想です。 熟練されたプログラマーほど、C++を学ぶことを学ぶことの大切さを訴えておられる気がします。piyo2000さんの仰るとおりに、がんばってC++も理解してみようかと思います。私の頭では力不足かもしれませんが(笑) >ここまで来れば、構造化プログラミングやオブジェクト指向など、実装パターンを意識して言語を勉強すべきだと思います。 >逆に、実装パターンをしっかり習得すれば、どんな言語であれ習得するのはそう難しくないはずです。 なるほど実装パターン、ですか。構造化プログラミングは理解できているので、オブジェクト指向の実装パターンをこれからは重点的に学んでいこうかと思います! piyo2000さん、本当にありがとうございました!

その他の回答 (2)

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

Windowsの開発現場が続くと想定されるなら、C#を選択ってのもありかもしれないですね。C++とは違った作法に従う必要のある言語のようですからね。ただ、Unixとか、他の環境での開発が多いかもしれない(やりたい)なら、C#は使えないですから、C++(VC++)に自動的になりそうですね。VC++が3ヶ月程度であれば、まだまだ覚えることが多いと思いますので、いろいろと手を広げるよりも、VC++をもう少し学んだほうがいいような感じがします。 もし、「この言語なんとなく好き!」っていうのがあれば、その感性に従うのもいいと思います。

hykuran
質問者

お礼

回答ありがとうございます。 >Unixとか、他の環境での開発が多いかもしれない(やりたい)なら、C#は使えないですから、C++(VC++)に自動的になりそうですね。 私事ですが、将来はアカデミック路線も結構考えているので,いずれにせよUnix環境は逃れられないと思います。もといUnix好きですし、C++もしっかり学ぼうかとおもいます。複雑と聞いているので、自分の脳で理解できるといいですが。 lv4uさん、本当にありがとうございました。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

将来的に何をされたいのでしょう。 プログラマー系を目指すなら時間の許す限りあらゆる言語を身につけるべきでしょうし。日曜大工プログラマなら特定の言語に偏るのも良いでしょう。 C#は開発者の言葉を借りるなら"C++++"という位置付けでもある新しい言語です。今後は主流になる可能性も高いので、覚えておくのは良いと思います。ただし便利だからとか効率が良いから、速いからという理由だけで開発の最前線で即使われることはまずありません。これは別にプログラムの現場に限らず、どの業界でも同じことです。ちょっと便利だからと言って一旦全てを更地にして新たに作り直すような所ってあると思いますか? その殆どは既存の財産の上に、増築という方法で継ぎ足ししていくものです。 ですので切り替わるには最低でも10年、20年はかかりますし、使われだしても以前の言語は修正や保守管理で必要なので、古い言語(今で言えばCOBOLとか)でもその経験者は何のかんのと重宝されます。 また特定の言語しか用いないという会社もそうそうありません。もちろん会社によって得意言語もあるし、現場やプロジェクト単位で見れば特定の言語に偏ることになるわけですが、ある現場だけで一生仕事するわけでもありません。ちょっとあっちのプロジェクトが人手不足だから応援にいってくれと言われても、VBなんて触ったことないですで断れるならまぁそれもいいですけど。 言語の経験はあればあるだけ仕事や会社の選択肢が増え、あればあるほど就職の後も昇進の道具として利用できます。勿論例えばC職人としてのみ生きていくというのもアリですが。

hykuran
質問者

お礼

手早く、親切な回答ありがとうございます。 >将来的に何をされたいのでしょう。  私事ながら、将来は創造的な職がよいので  修士→創造的な開発系に就職(3割) または  博士→アカデミック路線(7割)  で行きたいと思っております。 >ただし便利だからとか効率が良いから、~ >言語の経験はあればあるだけ仕事や会社の選択肢が増え、~  言語の数は就職の幅を広げる、ということですね。学習のためにもVC++もC#も両方学びたいと思います。 popesyuさん、本当にありがとうございました!

関連するQ&A