• ベストアンサー

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

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

noname#84526
noname#84526

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

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

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

noname#84526
質問者

補足

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

その他の回答 (12)

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

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

  • notnot
  • ベストアンサー率47% (4846/10257)
回答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

  • コンパイル言語とインタープリター言語の違いについて

    コンパイルするプログラミング言語とインタープリターする プログラミング言語の違いについて教えてください。 特に、開発上および運営上の利点・欠点についてお願いします。 また、CGIでは、PHPやPERLなどのインタープリター言語が 主流ですが、その理由とC言語などで組むのと比較して、 どのような利点があるのか教えてください。

  • C,C++,VB,Java 各言語の特徴って何ですか?

    C,C++,VB,Java これらの各言語の特徴や開発にあたって注意しないといけない点などを教えてください。 ■背景 現行のシステムには様々な開発言語が用いられていますが、時々なぜこのシステムを開発するのにこの言語を使ったんだろう?と思うことってありませんか? 私は試行錯誤すればどの言語でも大抵のことはできると思っているせいか、いまいち言語の特徴が明確にできません。 上記の言語を比較してそれぞれどのようなことが言語の特徴となるのでしょうか? よろしくお願いいたします。

  • VBとC言語

    VBとC言語の開発目的の使い分け。という題で課題があるのですけど検索してもいまいちわからないので誰か説明教えていただけませんか?

  • こんな私にオススメの言語は…?

    プログラミング言語を使ってゲームアプリケーションを作ってみたいと思っているのですが、 何の言語を使用するか迷っています。 作りたい物の特徴としては ・シミュレーション系。いつかはRPG等…(夢は大きく)。 ・独自のシステムのゲームを作りたい。 ・グラフィックはあまり重視してない。 ・ウインドウズ。 なんかを考えてます。 過去の記事を参考にし、自分なりに ・HSP ・Delphi ・C/C++ のどれかかなあ、とは思っているのですが、どれも長短ありでなかなか絞れません。 自分なりに考えてみた利点と欠点は次の通りです。(☆…利点、★…欠点) 【HSP】 ☆無料。 ☆取っ付きやすそう。 ☆ゲーム作りに適しているらしい。 ★ソースが長くなると訳わかんなくなりそう。 ★あんまり高機能な事は出来なさそう。(オブジェクト指向じゃないし) 【Delphi】 ☆いろいろできそう。 ☆無料版がある。 ★でも気合入れてやるなら有料。 ★開発環境が重い。 ★開発環境のエディタがとても使いにくい。(←変えられますか?) 【C/C++】 ☆なんでもできそう。 ☆出来るとカッコいい(笑) ☆挫折した過去があるので、いつか倒したい(笑) ★敷居が高い。難しい。 ★それなりの環境で…となると高額。 ★見た目が好きじゃない。(&とか%とか…) というのが今思いつく特徴です。 星の数からわかるように、結構均衡しているのです…。 そこで、ここであげた以外に各言語の利点と欠点、 実際に使っている方はどのような感じか、 他に何かオススメ等がありましたら教えてくださると嬉しいです。

  • JavaはC#より生産性が低い?

    業務系のシステムをWebアプリケーションとして開発しようとしています。  そこで言語の選択としてJavaかC#かを考えているのですが、C#のほうが生産性がいいというのが大部分の方の意見のように思います。たしかにVisual Studio のサポートは強力だと思いますが、言語そのものとしてはどうでしょうか?またC#はつい最近まではWebフォームが主流だったのが、最近はASP.NET MVC のほうに移行しつつあるというのも気になります。MSでしか開発できないというのもひっかかります。  またメンテナンス性についてですが、JavaEEはリリース後年数も立っており更新頻度もゆっくりとしており一度構築してしたあとは、長く安定して使えるのではないでしょうか?その点、C#はMSの意向やそのときのトレンドで仕様がガラッと変わって、システムを大きく改変させる必要が出てきたりはしないでしょうか?  またJVM上で動く言語としてScalaなどがあり、Java系の言語が今後主流になっていくことは考えられませんか?  現時点だけでみると、生産性等の面でC#のほうに歩がありそうですが、5年後10年後はどうなっているだろうという視点で考えるといかがでしょうか?皆さんのご意見をお聞かせいただきたく思います。

  • c言語やjavaのソースを読みたいのですが

    c言語やjavaのソースを読みたいのですが ゲームやアプリのプログラムを公開しているサイトを御存知でしたら 教えてください。言語の開発環境は、VC++・vc#・Eclipse・visualBasic(2005)です。

  • C++を学ぶとC言語は・・・

    超新米プログラマです。 C言語を学ばずにいきなりC++を学んでいるのですが、開発環境がC言語のみで、という場合に困ることってあるでしょうか? CでできることはC++でもできるとのことですが、C++で慣れるとCだとまずかったりするのでしょうか?

  • 究極の言語は作成可能か?

    ふと思ったのですが、 C,C++,C#,VB,Javaの利点を「すべて」含んだ言語は開発されるでしょうか? 今では、D言語なるものが開発中だそうですが・・・。 個人的には、Javaに近い言語だったらいいんだけど。。

  • ゲーム作りたいがC言語かJAVAか迷う。

    私は将来、ゲーム・デザイナーになりたくて、プログラミングの勉強をしたいと思っています。それに向けて、学習するべき言語というのはCなのかJAVAなのかでまよっているのです。よくプログラミング言語など似たようなところがあり、ひとつの言語を身につければ他の言語も身につきやすいともいいますが、なるべく効率的に学んでいきたいですし、一番使用されることの多い言語を選びたいです。私が作りたいのは携帯電話用の比較的簡単なゲームでなく、ある程度大掛かりなというか、本格的なゲームを開発してみたいという思いがあります。これは特殊な例かもしれませんが、例えばコンピュータ将棋のプログラムなどではほとんどC、C++で開発されています。JAVAなどで作成されたソフトは見かけませんでした。やはり、JAVAの利点もあるでしょうが、結局、一番普遍的なというか、汎用性のあるプログラミング言語としてはC言語を選択するのが最良の策かなと考えています。これは妥当な筋道なのかとお尋ねしたく質問させていただきました。

  • Cで作られたDDLをJAVAで

    初歩的な質問で申し訳ないです。 現在配属しているプロジェクトでは、サブシステムが2つに分かれており、C言語で開発されたシステムとJAVAで開発されたシステムに分かれております。(業務が違いシステム的にも関連はありません) しかし、共通で使えそうな計算ロジックをコーディングしたDDLがC言語のシステムの方にあり、JAVA側でそれを使いまわしできないか?と言うことを言われました。 ネットで調べた所、JNIという技術を用いて可能かも?とは思ったものの、ネットの内容を見ると、JNIの説明の所に載っているC言語のソースにはJNI用に組まれたような(JAVAで用いる事を想定されて作られているかのような)ロジックがあるため、 結局既存のDDLは使えなく、JAVA用に作成しなおさないといけないのかな? とも思いました。 そこで質問ですが、もともとC言語のシステム内で使うことを想定されたDDLをJAVA側のシステムで使う場合、JAVA用に再作成せずに使うことは可能なのでしょうか? 初歩的な質問で申し訳ありませんが、知っていたら教えて頂きます様、宜しくお願い致します。

専門家に質問してみよう