• ベストアンサー

C#という完璧な言語があるのにどうしてVBやC++、javaがいまだに使われている

MSが開発した言語であるC#は既存の言語の利点を集めて欠点をつぶしたものらしいのです。 古いものを補修するのに仕方なく古い言語を使うだけならまだなんとなく分かりますが新しいものを作るときに古い言語が使われる理由はなんですか。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

MSの言う「既存の言語の利点を集めて欠点をつぶした」に説得性が無いからでしょうか。

noname#84526
質問者

補足

説得性が無いのはMSだからでしょうか? それともC#そのものの問題でしょうか?

その他の回答 (12)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.13

>新しいものを作るときに古い言語が使われる理由はなんですか。 長年1つの言語を使用していると、いろんな部品(ライブラリ)ができてきます。 新しいシステムを作るとき、その部品を利用すればいちからコーディングしなくても簡単に作ることができます。 このライブラリが多ければ多いほど他の言語に移行するのは難しいでしょうね。 会社の新人教育ではライブラリの使い方だけ教えて、その中身は教えないことがありますから、その場合は他の言語で組もうとしてもできません。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.12

#1です。 >説得性が無いのはMSだからでしょうか? >それともC#そのものの問題でしょうか? MSの言うことは怪しいこともありますが、それは情報を公開していないから信じ切れないということです。 C#の言語仕様は公開されているので、「MSだから」ということはありませんが、人が百人いれば、利点・欠点の見方も百通りあるわけで、C#のいう「利点を集めて欠点をつぶした」は、あくまでC#の言語仕様策定に関わった人の視点に過ぎません。 そのうち、また別の「既存の言語の利点を集めて欠点をつぶした」をセールスポイントにする言語が出てきそうですね。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.11

もし本当にC#が「完璧な言語」であるなら、なぜたびたび言語仕様がバージョンアップするのでしょうか? しかも、ISO/IEC23270を公然と無視する形で。これではPascalと同じですね。 .NET FrameworkやMonoのような実行環境が搭載されていない/搭載できない環境ではC#は何の役にも立たない訳ですが、C#の得意分野に限っても、上記のような状況を考えると、他の言語が使われるのも当然かと思います。

回答No.10

Lispと言う最強の言語があるのにVBやC++、javaがいまだに使われているし、MSが開発した、と言うだけで「完璧な言語」と言っちゃう人がいるから、です。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.9

宣伝文句は別として所詮は人間がつくるもの、現実には「完璧な言語」なんて幻想です。 それは英語でも日本語でもエスペラント語でもC#でも変わりません。 何かの問題を解決すれば、トレードオフで別の問題が現れますし、 別の一面でみればある意味C言語の方がより完璧に近いかもしれません。 (C#の方が簡易に使いやすい面もありますが、C言語の方が表現力が豊かだったり。 文法に縛りがあるということは「あえて崩した表現が難しい」と言うことでもあります) ・現実的にWindows/.NET上でしか使えないので他環境では役立たず。 ・現実的にMicrosoft主導なので、Microsoftと心中する覚悟が必要かもしれない。  (VBはそもそもMicrosoft専用言語なので、これは単に開発保守コストなどのせいかも) ・そもそもC#の実装ではできなくなったことがある。(改善の名の元に捨てられたり、CLR依存してたり) ・枯れてない。(頻繁にバージョンが変わる時点で将来が不透明) # 一応、C#自体はISO/IEC23270という国際標準があります。JIS X3015もあります。 # 但し、現実の実装仕様とは例によって一致しないわけですが…。

  • ttega
  • ベストアンサー率52% (9/17)
回答No.8

適材適所というのはあるわけで、C# を使ったら楽な場合もあれば、とても使い物にならない場面もあります。大筋ではみなさんのおっしゃっているとおりだと思いますが、参考までに、敢えてちょっと違ったことを書いてみます。 基本的には他プラットフォームやいわゆる組み込み系では使えないといってもいいのでしょうが、Mono があるおかげで iPhone なんかでも C# アプリが動いていたりしますので、Windows 以外のプラットフォームでも徐々に面白い使い方が模索されていることは確かです。 また、ネイティブアプリが作れないというのは誤解というか不正確です。あらかじめ x86 や x64 向けのコードを生成しておくことは可能です。実際、.NET Framework のアセンブリは、IL レベルではなく、x86 や x64 向けに最適化された状態で用意されています。要するに、例えばこれまでの MFC アプリと比べると、(言語仕様も含めてですが)フレームワークたる MFC に比べて .NET Framework が一般に重いということは言えるでしょうが、ネイティブであるかないかという違いではありません。 私自身は PC 上でお気楽プログラミングをしていればよいので、.NET Framework を使えないシェル拡張モジュールを書いたりする以外のケースでは大抵 C# で済ましています。

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.7

 この質問にたいする答えは、「完璧な言語とは何ですか?」という質問に対する答えと同じでしょう。  考えられることはいろいろとあります。ちょっと考えただけでも・・・ ・どんなに知識がない人でも簡単に覚えることができ、 ・どんな問題にも対応することができ、 ・どんなコンピュータでも、変更することなく同じオブジェクトを利用することができ ・保守・メンテナンス性がよく・・・ ・・・・・・ ・・・・・・ ・そして、いつの世にも存在しない(笑)  まぁ、最後は半分冗談として、  現実のC#には、ここにあげただけでも×ですね。簡単に覚えられるとはいいがたく、現実の実装は.NET FRAMEWORKに依存する中間言語をターゲットとするものしかなく、まだまだ発展途上で、ライブラリーや下手すると言語定義そのものが変わっていくため、長期の保守メンテナンス性にも欠けると・・・・  条件の最後のひとつは、半ば冗談ですが、それこそ、自動的に人の考えることを読み取って勝手に動作するコンピュータでもできない限り真実かもしれません。そして、もしこんなのができたら、その時完璧な言語もできたことになるかもしれませんが、その時には、そもそもコンピュータ言語なんて概念が無くなるでしょうから(笑)  コンピュータ言語は、ハードウェアの進歩と共に・・・そして、人がコンピュータに求める物の進歩と共に歩んできました。  ENIACの時代、コンピュータ言語は端子と配線の山でした。  フレームワーク(いわゆる大型コンピュータ)が出来、科学技術計算に利用されるようになると、数値計算を書きやすくするためにFORTRAN言語が出来ました。  企業レベルでコンピュータを導入できるようになり、財務情報などの管理に使われるようになると、COBOLというデータを扱うことに長けた言語が登場しました。  パソコンの黎明期、素人でも扱えるという触れ込みでBASICという言語が登場しました。これは、書いてすぐに動かせる、しかも、コンピュータ本体に総てのシステムが最初から入っているという意味で簡易性を求めたとも言えるでしょう。  パソコンが普及し、性能がどんどんと上がっていく中、プログラムから構成される狭義のシステムが巨大化する中、プログラムの部分部分を局所化するために、構造化プログラムという理論を現実の言語とするために、CやPASCAL等の言語が登場します。  さらなるシステムの巨大化と共に、オブジェクト指向というプログラミング理論の登場と共に、C++やJAVA等の言語が出てきました。  悪い言い方をすれば、MS帝国によるパソコン界の寡占化の達成と共に、プログラミング界の寡占化を狙ったのがc#なのかもしれません。それほどに、この言語は、.NETの基盤を素直に表現しています。OSの基盤が乱立するが故に、既存の言語は、「アーキテクチャ依存性のない言語」という目標を達成しようとあがき、そして失敗してきましたから。このOSの寡占化はこの問題に対する一つの解とも言えます。ただし、寡占化しただけであって、独占したわけではありません。従って、この基盤に依存するC#だけでは、総てに対応することもできません。  まだまだ、JAVAやC++にも出番のある場面は多いと言ったところでしょうか。  (最初の方で「誰でも簡単に覚えられ・・・」と書きましたが、従来の慣れたJAVAやC++を捨てて、C#を初心者から始めるだけの時間も余力もない人も世には多いという理由も大きいかもしれません。)  まぁ、この問題は、つまるところ哲学論争でしょう。正解はないと思いますし、今までの文章も、私なりの感想に過ぎないと断っておきます。

  • tom951
  • ベストアンサー率30% (29/96)
回答No.6

・Windows環境以外での.NET Framework環境がまだまだ100%互換がないから。 ・C/C++ではOSや組み込み系などに使えるが.NET Framework環境下で使うC#ではそれが不可能だから ・.NET Framework環境下で動くのでOSのネイティブアプリが作れないから ・JAVAはJSPなどのサーバサイドで利用される。(JAVAが動くOSなら環境構築できる。)

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

C#だと、Linux/Unix等の環境での開発はできませんからね。 また、リアルタイム処理など、高速な応答性が要求されるシステムには原理的にC#は使えません。 さらに、OSの開発は、C#では無理でしょう。やはりC/C++でしょうね。 そして、組み込みシステム等、メモリやCPUパワーが厳しい環境では、C#は使えないでしょう。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

C#でなければ 記述できないってことのほうが少ない気がします C#で記述すればソースの記述量を減らせるなどならあると思いますが --- 以下は私見です C#オンリーで記述されたWindowsって発表されていましたっけ? 『完璧な言語』ならこの程度朝飯前ですよね またはハードべったりなデバイスドライバをC#オンリーで開発するとか DDKって C/C++ベースだよな確か

関連するQ&A