• ベストアンサー

C言語の種類と特徴について教えてください。

java一辺倒なのでぼんやりとしかわからないのですが、 C言語の種類(C、c++、c#他)とそれぞれの特徴(何に向いているか等) を教えてください。 またそういった解説のあるHPも教えていただきたく。

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

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

C言語はCだけで、C++やC#は別の言語です。 ただ、C++はCの拡張ですからCの直接の子孫とは言えるかも知れません。 VC++というのは、マイクロソフトが出しているC++の実装の一つですで、C++のコンパイラ、開発環境の製品の名前ですね。 Cはアセンブラに近いのでかなり高速に動くコードや、ハードウェア制御コードなどがかけます。が、機能的にはシンプルでいろいろと自分でコードを書く必要があります。ライブラリはありますが、Java等に比べれば貧弱で数は少ないです。 Cの特徴を生かしつつ、なるべく互換性を保ったまま機能拡張しオブジェクト指向の対応したのがC++です。 が、互換性を持ったまま機能拡張したのでかなり仕様が複雑になってます。また、拡張部はどうしても速度が落ちたりメモリを余分に使ったりしがちですので、アセンブラ変わりに使えない場合も出てます。(組み込み用途等) C#はJavaとあまり違わないと思っていいです。ごく簡単なものならソースもそのまま使える場合もありそうですし。逆に、C,C++とはあまり似てません。まあ、JavaがCと似ている程度には似てるとは言えますが(^^; #2の方の回答にもありますが、VC#(とVB.NETとVC++で出力をネイティブコードでなく、マネージコードを出力させた場合)は中間言語にコンパイルしてそれで動作するので、 そういう意味でもJavaと同じと言えます。 私が向くと思う言語はC++,C,C#ではこんな感じです。 十分マシンパワーのあるWindows(2000,XP等)上で動くプログラムを比較的お手軽に作るなら、C#。 Javaから楽に移行するならC#。 OSの機能をフルに使うなら、C,C++。 ちょっと非力なマシンで動作させるならC,C++。 Windows以外のOSなら事実上C,C++。 パワーのあるOS,マシン環境で高速に動作させ、比較的楽に作るならC++。 非力なマシン等で動作させるプログラムならC。 だいたいどこのOSでもコンパイラが存在するのがC。 ただ、Cのプロジェクトというのがどんなものか分かりませんが、それがCしか使わないのなら、 やはりCを学ぶべきだと思いますが。 この場合はC#は無関係なのでやる意味はありません。

newwave2000xl
質問者

お礼

なるほど!とても詳しい説明ありがとうございます。 今度Windowsサーバーで動作するアプリケーションを 作ることになりそうで、お客様からは要件だけ満たしていれば 開発言語など実装に関することは任せると言われてまして。 要するに言語の選択から検討するはめになってしまいまして、 ご相談した次第です。 私の今後のキャリアプラン的な意味からしてもC++でやってみたほうが よさそうかなぁと思っております。

その他の回答 (4)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.5

> 今度Windowsサーバーで動作するアプリケーションを 作ることになりそうで、 それなら、C#(Visual C# .NET)でしょう。 VC++と比較すると、生産性が違います。

回答No.4

> C++とVC++またはC#とVC#って違うんでしょうか? > マイクロソフトのものがVisual~? No.2 では、C++, C# は一般的な言語環境としてという意味合いで、いろいろな処理系が出ていますが、Visual C++, Visual C# は Microsoft が作った処理系という意味合いで書きました。深い意味はありません。 C++ は言語仕様が複雑なためか、処理系によってサポートしている機能が微妙に違うようです。参考URLの C++ 移植性ガイドが参考になります。

参考URL:
http://www.mozilla-japan.org/hacking/portable-cpp.html
回答No.2

その昔 C や java で書いていて、最近は主に Visual C++ ばっかり使っています。 C, C++ はアセンブラに近く細かい事まで出来るのが特徴です。また、最終的には各マシンの機械語(ネイティブコード)に変換されるので、実行速度が比較的高速です。その代わり、バグ等でポインタや動的メモリ管理の扱いを間違えるとメモリリークや保護違反などが発生しやすく、安定したプログラムを作るにはそれなりの熟練と十分なテストが必要となります。 C++ は C 言語を拡張しオブジェクト指向プログラミングも出来るようにしたもので、文法的にもほぼ上位互換で C++ の処理系では C も扱えるので、慣れれば断然 C++ の方が書きやすいです。また、オブジェクトを使って書く事で、全体の見通しが良くなる事で上記メモリ管理のトラブルは多少減らせます。(100%撲滅は困難ですが) C# は使った事が無いのですが、java よりも後に設計されただけあって、使っている人によっては java よりも良くて究極だと言っている人もいるようです。(何せ、Microsoft による java への対向軸ですから、十分 java の良い点・悪い点を研究して作られているようです。) 実際に使っていないので、以下はあちこちで見聞きした情報に基づきます。間違ってたらごめんなさい。 --- C#は、文法的には C を拡張していますが java の要素を盛り込まれていて、Visual C# 等では java のように中間コードに落して実行していると聞いています。そのため、.NET Framework が入っていないと動かない等の制約があるそうです。 ただし、メモリ管理は java のように GC(ガベージコレクタ)ベースで、システム側で勝手に開放してくれるので、C, C++ のように神経質にならなくても良いようです。 いかんせん使った事が無いので、これ以上の使用感等はわかりません。 (C#に詳しい方フォローして下さい…)

newwave2000xl
質問者

お礼

詳しい解説ありがとうございます。 あほな質問で申し訳ないのですが C++とVC++またはC#とVC#って違うんでしょうか? マイクロソフトのものがVisual~?

回答No.1

基本がC言語です。 C言語にオブジェクト指向をサポートさせたものがC++言語です。 C#は使った事ないですが、.NetFrameworkを利用できるC言語だって聞いた事があり、.NetFrameworkを利用しないならC言語の方が使いやすいと聞きました。 最初はC言語で基本を学んで理解できたらC++に移行するというのがいいのではないでしょうか。 あとC++はCの上位言語なので開発環境はC++のでもCの勉強はできると思います。

newwave2000xl
質問者

お礼

ありがとうございます。 今度Cのプロジェクトを任されそうなので質問してみました。 C++を学ぶのが得策ですかね。

関連するQ&A