No.5ベストアンサー
- 回答日時:
Javaはポータビリティーがあるようで無いですね。
バージョンが違うだけでも、微妙に動作が異なり移植の妨げになったりします。また、各社の囲い込みなんかがあって、思うようにポータビリティーを維持できません。それでもがんばってポータビリティーを保証したプログラムをしている人にどうやっているのと聞いたら、ほとんどJavaのコアな機能しかつかっていないとのこと。これではC++使っているのとほとんど同じではなかろうか。これに対して、CやC++は、長年使い込み、様々な自分用ライブラリなんかが書きたまってくると、結構ポータビリティーの良いコードが書けますね。ほとんどシンタックスの仕様も年月の間に変化しないので、いわば安定した言語と言えるんじゃないかな。
また私は、「オブジェクト指向」というのは言語の性質を言うものではなく、プログラミングスタイルのことを言うものだと考えています。質問者にあるとおり、いくらオブジェクト指向をうたった言語を使っていても、オブジェクト指向プログラミングを生かすことが出来ない一方、オブジェクト指向言語をうったっていない言語を使っていても、オブジェクト指向プログラミングは可能です。
オブジェクト指向というものを最もシンプルに基本的な形で表してくれるのが、UNIXのファイルシステムです。UNIXでは、様々な異なるディバイス、あるいは、プロセスなどまで、すべて「ファイル」という概念で仮想化されています。「ファイル」の中身がどうなっているかを問わず、この「ファイル」にたいして、open / read / write / fcntl/close という統一されたシステムコールによって作用を与えます。
No.4
- 回答日時:
C++ には標準ライブラリが存在しないという不幸な歴史があって、ベンダーやコミュニティーが各自でライブラリを開発し混沌としていました。
言語仕様としては、「ベターC」と「オブジェクト指向」の二つの顔を持っておりJavaよりも複雑であると良く言われます。ガーベージコレクション云々は、オブジェクト指向の本質からずれます。ガーベージコレクションが無くても参照カウンタを使えば特に問題にはなりません。現時点で、パフォーマンスが高く、OSネイティブなコードが書けるC++の方が、完成したアプリケーションの性能が上でしょう。ただ、C++を100%使いこなせるには言語を超えた知識が必要になります。比較的簡単なJavaを使えば、開発期間の短縮につながります。
一番良いのは、C++を使ってJavaと同様の開発効率でプログラミングできる人材になることです。ちなみに、プロは、いまさら言語の良し悪しについて議論しません。お茶碗とお箸の使い方について熱い議論をする人はいないでしょう。つまり、日常の単なるツールにしか過ぎないのです。もっと言えば、利用者側からすれば、Java、C++はどうでもいい話です。
最後に付け加えていきます。言語を生かすのも殺すのも開発者次第です。こっそり教えると、C++がオブジェクト指向プログラミングがやりにくいと言う事は、恥ずかしい事です。ちなみにオブジェクト指向も、アスペクト指向などで補完しないと使えないという事が言われ始めています。。。
No.3
- 回答日時:
> 「いやC++はすばらしいオブジェクト指向言語だ!」
C++をオブジェクト指向言語だと考えるのが最悪の誤解かと思います。まるで、「パソコンはワードとエクセルのための機械だ」というのと、同レベルの誤解ではないでしょうか。
「C++」と「オブジェクト指向」が不可分なものであるという考えが、C++の普及を妨げているような気がしてならないのです。
No.2
- 回答日時:
マイクロソフトは、.NetFrameworkで、他の言語でガベージコレクションがされていることの親和性から、C++を拡張したマネージドC++を開発しています。
VC++2005でそうなる予定です。マネージ拡張は、マイクロソフトだけでなく、ECMAでも標準化作業がおこなわれているので、そういう流れのC++というのも(将来的に)存在するということになるかと思います。
(VCの話でいえばVC++2002からガベージコレクションはサポートされています)
ガベージコレクションがあるとプログラマにとって便利なのは確かですが、それとオブジェクト指向プログラミングのしやすさ自体は直接関係ないのじゃないかと思います。
また、ガベージコレクションがプログラマの予測しないところで実行されると困るようなプログラムもあるでしょうから、そういうガベージコレクションが使用できる・しないをコントロールできるのは必要なことだと思います。
この回答への補足
マネージドC++というものがあるのですね。勉強になりました。
ガベージコレクションがないと、メソッドの戻り値として安易にnewしたオブジェクトが返せませんよね?
オブジェクト指向設計(UML等による分析や設計)した結果を実装するためには、言語の特性や制限のために設計結果に手を加えることになりますが、それがC++では大きいと感じたのです。
オブジェクト指向言語とは、設計した結果をそのまま実装できるのが理想と考えています。
Javaが「オブジェクト指向設計を実装するための言語」すると、C++は「ベターC を作るためにオブジェクト指向を取り入れた言語」に過ぎないのかなと思いました。
No.1
- 回答日時:
すばらしいオブジェクト指向言語かはともかく
すばらしい言語ではあると思います。
ガベージコレクションはなくてもデストラクタで管理すればメモリリーク
も心配しないように設計できるでしょう。
おっしゃるように
Web系や、SI系のソフトウェアではC/C++は将来性は少ないかもしれません。
ベージコレクションも無いですし、しかもJavaと比べれば
機能を使いこなすのに時間がかかります。
保守の面から考えると、その点はJavaやC#に分があるでしょう。
しかしガベージコレクションがあるということは
そのアドレスにアクセスがあるかを監視する必要があるわけで
その事はオーバーヘッドになるでしょうし、仮想メモリがある環境
でもなければガベージコレクションなんて使えません。
既存の市販ゲームがほとんどC/C++で開発されている
事はいうまでもないと思いますが、
次世代ゲーム機(XBox2等)のソフトもC++で開発します。
C++かJavaかは、用途によるということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java オブジェクト指向プログラミングの実践本を紹介してください 3 2022/09/19 04:56
- IT・エンジニアリング c言語とjavaの需要について 3 2022/06/23 22:59
- IT・エンジニアリング FORTRAN、COBOL、C、Java、C++とか誰が作ったのですか?言語習い使いまた出て、キリが 4 2023/05/06 23:11
- C言語・C++・C# プログラミング言語「C#」の難易度ってどれくらいですか? 4 2022/05/12 19:15
- 経済学 マクロ経済学の租税に関する質問です。 3 2023/03/28 17:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- 高校 高校物理についての質問です。 2 2022/07/17 15:33
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- その他(職業・資格) 私(女)はホストクラブに通っています。 私は、ヘルプのホストの男性Aに嫌な事を言われて、ホストクラブ 1 2022/03/27 03:07
- C言語・C++・C# C言語の質問です HTMLでこのようなコードを書いたのですがそれをC言語で同じように書きたいです < 1 2022/08/11 23:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
web2.0以前のインターネットで...
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
C言語、C+、C++、C#の違い
-
アカデミックパックが使いづら...
-
今、コンピューター言語で、COB...
-
C言語って古いですか?
-
UNITY Float型の接尾辞fって
-
COBOLでのNOT = の AND条件
-
ホワイトハッカーを目指そうか...
-
C++における継続行
-
UWSCはどのプログラミング言語?
-
Delphiに詳しい方助けてくださ...
-
先日、技術の授業がありました...
-
Excel VBAで文字化けする (英語...
-
HTMLとC++で、どんなホームペー...
-
COBOLで文字タイプを数字...
-
順列の内容をすべて表示するプ...
-
C++の将来性・・・
-
GMLとは何でしょうか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
プログラム言語について c言語...
-
プログラムに書かれる"%"記号の...
-
C言語とhtmlの違いを どな...
-
vbaとc言語の関連性について
-
AIって何のソフトで作っている...
-
UNITY Float型の接尾辞fって
-
COBOLでのNOT = の AND条件
-
TO_CHARで小数点以下がある場合...
-
COBOLで文字タイプを数字...
-
プログラム言語について プログ...
-
C++における継続行
-
swift言語の最適化 swift最適化...
-
VBSとWSHは読み方が違うだけで...
-
C++ ってなんて読む?
-
web2.0以前のインターネットで...
-
Excel VBAで文字化けする (英語...
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
-
Pythonって何を意識した言語な...
おすすめ情報