- ベストアンサー
C++は何に適している?
最近C++の基礎を学びました(クラス、継承、フレンドまで)。しかし、このレベルだとC++の特性や私たちが普段使っているプログラムがどのように出来ているのか想像すら出来ません。C++はGUIなどに適しているのでしょうか?それともC++は主に演算に使われるのでしょうか?職人的にすべてC++でプログラムする人もいるでしょうが、プログラムの適正を知っておきたいのです。 付け加えて、もしよろしければ各業種(ゲーム、ネットワークなど)別にプログラミング言語の優勢度を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
どのプログラミング言語がどのような用途に使われるかは、それぞれのプログラミング言語が開発された時代背景を知ることで理解できるのではないかと思います。 http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E5%B9%B4%E8%A1%A8 C言語は、UNIXの移植性を高めるために開発されたことから判るとおり、非常にハードウェアよりな低水準処理を記述でき、かつ、移植性も高いという特徴があります。C言語は構造化プログラミングの概念が盛んな頃に開発されましたが、後にオブジェクト指向という概念が生み出され、C言語をオブジェクト指向に拡張したC++が開発されました。 今でもOSを開発する場合に使用するプログラミング言語はほぼ間違いないくC/C++ですし、OSとかかわりが深くハードウェアと直接やり取りするデバイスドライバの開発もC/C++の独壇場です。また、マイコン等の小さなCPUで機器を制御する組み込み系のプログラミングも、圧倒的にC/C++で行われています。 C/C++以外の代表的なプログラミング言語とその用途を挙げます。 FORTRAN: 歴史的には古い言語に見えますが、スーパーコンピュータ上で科学技術計算をするときは未だにFORTRANが主役です。地道な改良と豊富なライブラリに支えられています。 COBOL: この言語もFORTRANに次いで古いですが、銀行などの会計システムは未だにCOBOLです。 Perl: 強力な文字列演算機能を持ち、webサイト上で動くCGIを開発する用途で一気に広まりました。blogシステムの代表格であるMovable TypeはPerlで記述されているそうです。(一部PHP) Microsoft Visual Basic: Microsoft Windows上で動作するアプリケーションを開発するための言語(と開発環境)で、フォーム(ウィンドウの土台)に部品を貼り付けることで簡単にGUIプログラムを作ることできます。私たちが普段Windows上で使っているプログラムのなかには、VBで作られたものも少なくありません。 Java: C/C++に似た文法を持つ、本格的なオブジェクト指向言語です。Javaで書かれたプログラムはJavaVMという仮想マシンの上で動くため、JavaVMがあればOSに依存しません。GUIから通信、データベースへのアクセスなど非常に幅広いライブラリを有しています。PC上で動くJavaアプリケーションもありますがあまり多くはありません。webサーバ上でサービスを提供しているプログラムがJavaで書かれていることもよくあります。DoCoMo携帯の上で動くiアプリも、Javaプログラムです。
その他の回答 (4)
- toro777777
- ベストアンサー率16% (43/257)
#3さんの例えはVB(Windows限定)とC/C++でしょうね。 C++はCに対してプラス機能(オブジェクト指向など)を付けたものって 感じですので C++もCも汎用性が一番高いけどその分機能が完璧な習得は不可能でしょうね。(ANSIのC言語辞典のANSI規格上の関数すべて覚えていて完璧に 使いこなせる人いたらすごいですよ。) C/C++初心者が一番最初にぶつかる壁はポインタあたりかな。 Windowsアプリを作る場合確かにC++は便利ですが ソフトハウスでは効率重視の場合が多いです。その場合 どうしても短期間で開発が容易なVBを選ぶ場合が多いですね。 PCショップで販売しているパッケージソフトの多くでは VC++あたりで開発が多いですね。
- lv4u
- ベストアンサー率27% (1862/6715)
C++の表現力はすごく豊富です。 汎用機の一部でよく使われたPL/Iという言語がありますが、「PL/Iをマスターした、とはナカナカ言えない」といわれるほど機能豊富でした。そのPL/Iと比較しても、C++は豊富な機能を持っています。で、「ほぼマスターした」と言えるのはとても難しいと思えます。 例えば、Cプログラマがタクシーのドライバとすると、C++プログラマはF1レースのドライバ能力を要求される気がしています。 タクシードライバを10人用意することは簡単でしょうが、F1ドライバを10人集めるのは困難ですよね。 ですので、入れ替わりの激しい派遣SE・PGなどを利用するシステムでは、C++での開発はちょっと難しい気がしています。 そして、C++の適正用途ですが、「複雑」「でかい」「速い」を要求されるような高度なシステムに向いています。 ですので、たんなる演算だけとか、ウインドウからデータをもらって、経理等の一般的な事務処理には、C++向きではないかもしれません。ただ、C++コンパイラーの使いやすい機能だけを利用するという意味で、C++が使われることも多いと思います。 で、会社の人々(派遣多し)の机の書籍を見るとC言語の本がほとんどのようです。それは上記の理由を考えると納得です。 結局、「C++はいい!」とSE・PGが考え、上司も納得するなら「C++あり」でしょうけど、「C++はいいのはわかる。でも、F1クラスの貴方が辞めたら、残りは一般ドライバーばかりだよ」と上司が考えたら、(C++コンパイラを使うかもしれないが)C++の選択は無いでしょうね。
- MrBan
- ベストアンサー率53% (331/615)
> このレベルだとC++の特性や私たちが普段使っているプログラムが > どのように出来ているのか想像すら出来ません。 「プログラムが想像できる」ってのは言語以外の問題が多いと思いますが、 別の言語なら想像できるのですか?別言語でできるならC++でもできそうですし、 別言語でできないならC++でもできないように思います。 C++が向いてるのは、処理性能が要求されたり、リソースが制限されたりする処理全般だと思います。 「GUIに応答性能が要求される場面」ならC++が向いていると思いますが、 「GUIの速度は要求されずに簡単に表示したい」なら不向きです。 システム用言語ってのは、ある程度汎用的に、それなりの処理をそれなりの速度とリソースで実行できるのが強みでです。 # メモリ管理を自前で厳密にできるとか、サイズが予測できるとか。 向き不向きの肝は「性能要求」で、「機能」だけでは決まらないと思います。 「記述のお手軽さ」より「性能要求」が大事な場面が、C++の向きです。 結果、C++の特性が生きるのは、ミドルウェアとかファームウェアとか、オペレーティングシステムとか、(何かの)処理エンジンとかになってきます。 いまだC言語が強い分野で、オブジェクト指向とか大規模開発とかしたい場合とかですね。
人によって答えは違うと思う。 それぞれに特徴があるし。 演算ならFORTRANとかあるしデータ処理ならCOBOLとかだってあるし。 GUIだけならpythonやtclの方がずっと簡単。 でも、ゲームプログラミングはCやC++が多いと思う。PSとか。