• ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

C言語……元々UNIXを開発する為に作られた。OS開発言語。俗に「高級アセンブリ」等と呼ばれる。開発当時のレベルでは「プラットフォーム間の差異を吸収する」移植性の高い言語だった。 これは元々UNIX自体が特定の「動作可能/保証するプラットフォームを持たなかった」為である。「移植性の高いOS」を作るための「移植性の高い言語」が開発目的の一つだった。 Algol等の「構造型プログラミング」の考え方を基盤としている。そして元々日常ユースは想定されていないし、「大きくて複雑なプログラム」を書く為のモノでもなかった。 UNIXの開発思想は「一つの目的の為の小さなプログラム」の集合体だった筈だが別のプラットフォームで大きくて複雑なプログラムを書く事に使われ初め当初の使用目的と大きく乖離していった。一つの背景に、貧弱なマシンでスピードを稼ぐには「C言語しか選択肢が無い」と言う状況が続いた為と思われる。 なお、C言語のコンパイラの最適化は他の言語を上回るケースが多く、現在ではOSの他に、Lisp、Perl、Python、Ruby等の「言語を書く為の言語」として使われるケースが多い。元々、プログラミング言語はアセンブリ言語で組み立てられるケースが多かったが、現時点その分野も前述の特徴の為、C言語に置き換わってる。 C++…基本的にはC言語にSimulaと言う言語の特徴を付け加えたモノ。最初はObjective CとかC with Classes等と呼ばれた。ただし、ここで言う「オブジェクト指向」は元々オブジェクト指向、と名乗ったSmalltalkの概念とは(被る分もあるものの)大幅に異なる。 Squeak(Smalltalk): http://squeakland.jp/ また、厳密には「オブジェクト指向」を表す定義も存在しない。ただし、C++がポピュラーになるにつれて「C++型の」オブジェクト指向が受け入れられた。 C++は必ずしも「より良いC」は意味しない。元々のデザイナーであるStroustrupによる冗談も存在する。 http://hp.vector.co.jp/authors/VA000092/jokes/strup.html VB……本家BASICとはかなりかけ離れたMicrosoftのプロプリエタリ言語。ただし、「Windowsで動くソフトを作る」分には最強の能力を発揮する、と思われる。また、BASICとしては最高、との評もある。 「VBのオブジェクト指向は本格的ではない」等と言った批判もあるが、前述のように元々「オブジェクト指向」自体の定義が曖昧な為、割に見当違いの批判だと思われる。 ただし、C言語やC++みたいに移植性は念頭に置いてない。また、本家BASICともコードの互換性はほぼ無い。 Java……一言で言うと改良版C++。開発者のジェームス・ゴスリングもそう述べている。提供元はSun Microsystems。 あまりに低レベル(アセンブリに近い)なC言語特有の操作(具体的にはポインタ)を止め、メモリ管理をガベージ・コレクション(ゴミ集め)に任せてる。これでプログラマがメモリ管理に頭を悩ます事が無くなった。 また、登場した70年代と違い、C言語の「移植性の利点」が薄れてきた事もあり、もう一段階上のレベルでの移植性を達成するように作られている。かいつまんで言うと、OS上の「Java仮想マシン」で動く言語、と言う構図になっている。言い換えると「コンピュータ上で動くコンピュータ」で動くアプリケーションが作れる、と言うのが特徴。プラットフォームの差はその「仮想マシン」で吸収される。 従って、CやC++等と違い、Javaのソースはネイティブコードにはコンパイルされないで仮想マシン上で動く中間コードへとコンパイルされる。 移植性はピカイチだが、反面、Java製のアプリは「コンピュータ上で動くコンピュータ」上で動く為、スピードの面で言うとCやC++で作成されたアプリに劣る、と言う欠点も持ち合わせている(ただし、色々なエミュレータなんかを見ても分かるように、近年はハードウェアの進歩により、そこまでスピードは問題では無くなって来た)。

その他の回答 (2)

noname#58606
noname#58606
回答No.3

上記の言語は、ほとんど知らないDelphiユーザーなのですが。 メーカーで言語の指定がある場合もあると、親戚のプログラマーが言ってましたよ。 きっと自社でチェックしたいのでしょう。 で、当時の人たちがやめてしまうと、「なぜ?この言語で?」って事になるのかと。 >どの言語でも大抵の事はできる は、私もそう思います。 昔は、処理速度で分けられていましたが、高スペックのおかげで、気にならなくなったと思います。 最近は、”習得のしやすさ”、”動作環境(どのOSで動くようにするか)”、”開発効率”で、特長づけた方がいいと思います。 OSとか、ドライバーとか、特殊なソフトなら話しは別ですが。

  • gon987
  • ベストアンサー率16% (53/313)
回答No.2

>移植性はピカイチだが、反面、Java製のアプリは「コンピュータ上で動くコンピュータ」上で動く為、スピードの面で言うとCやC++で作成されたアプリに劣る、と言う欠点も持ち合わせている(ただし、色々なエミュレータなんかを見ても分かるように、近年はハードウェアの進歩により、そこまでスピードは問題では無くなって来た)。 GUIのみ各OSにネイティブ化するSWT Javaのプログラム自体をJavaVMのコードではなくて各OS用にネイティブコンパイルできるgcj

関連するQ&A

  • 各言語の特徴

    いろんな言語の特徴が知りたいです。 C:処理速度がはやい VB:開発効率がいい VC++:ネットワークに強い JAVA:ネットワークに強い? Delphi: COBOL: 他たくさん知りたいですσ(^^) 教えてください、お願いします(^^)

  • VBとC言語

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

  • C#の特徴、利点など

    こんばんは!!僕は今C#でデーターベースプログラミングをしています(初心者です)。 卒業研究でなんとなくC#を選んでので、「なぜC#を選んだの??」って聞かれると.....です。 そこで、  1.C#の特徴  2.他の言語と比べたときの利点    (VB6.0,VB.net,C++.netとの比較) を教えてください。 お願いします!!!

  • VBとCとJAVA

    VBとCとJAVA  今日は,質問させていただきます. どうぞよろしくお願いいたします.  VB.NETが好きでずっとコーディングしておりますが, 使ってもらう友人に毎回.NET Frameworkをインストールしてもらうのが手間でございます... 他の言語も触ってみたいのでございますが,CとJAVAのことをぜんぜん知りません... そこで, 1.VB.NETのように,コントロールを配置したりして  アプリケーション開発できるツールってCやJAVAにもあるのでしょうか? 2.それがもしあれば,それで作成したEXEファイルを使用する時に  .NETのようにPCに何かインストールする必要はないのでしょうか?? 3.VBを始める前から,ネット上でよくVBは独特の癖があって  扱いにくい,といったようなといったようなご意見を見かけます.  VB.NETと他のアプリ開発ツールとの比較(長所や短所などでも)を  簡単にでもお教えいただけないでしょうか.  もしお詳しい方がいらっしゃいましたら, どうぞよろしくお願いいたします.

  • Cで作られたDDLをJAVAで

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

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

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

  • JavaからCへ

    僕は今までJavaを勉強していたのですが、 つい最近になって、C言語に手をつけ始めました。 Javaを知っていればC言語は結構とっつきやすいのではないかと思って始めたのですが、Javaに慣れすぎたせいか、C言語の文法がどうもしっくりきません。 特に関数あたりが・・・・。 C言語の関数って、Javaでいうところのメソッドですよね? 僕はそのように解釈しているのですが、あまり自信がないので、ご存知の方がいましたらどなたか教えてください。 あと、Javaを学習した人のためのC言語の本、もしくはC言語を学んだ人のためのJavaの本がありましたら教えてください。

    • ベストアンサー
    • Java
  • c言語やjavaのソースを読みたいのですが

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

  • 子らから主流になる言語・・・。

    こんばんわ、今までVBAでプログラムを勉強していましたが、 そろそろ本格的な言語を学ぼうかな、なんて思っています。 そこで質問ですが、将来的には、システム的なこと、Webアプリケーション、Windowsアプリケーションなどを開発したいと思っています。 どのような言語が最適だと思いますか?自分的にはDelphi,C++,C#,Javaの 4言語で結構迷っています。 あと、最近雑誌などを見ると、JavaとC#を比較した記事を頻繁に見ます。 結局どちらがいいのでしょう。(たとえば開発のしやすさや言語の覚えやすさなど。) 次は何を覚えたらいいでしょうか?お願いします。

  • VB.NETからC言語への乗りかえについて。

    プログラミング未経験者のものです。 これから、新たにプログラム言語を習得したいと考えています。 そこで、数ある言語の中から、選択に迷ったのですが、奥も深くて比較的入り口も入りやすいというVB.NETからはじめようかとも考えました。 しかし、将来的には、高い仕様を具えるC/C++言語を習得してみたいとも考えています。 この場合、VBからCに移行するというのは、かなりたいへんなことなのでしょうか。よく聞く話なのですが、どれかひとつの言語を習得すれば、プログラムの考え方はどれも似ているので、他の言語を学ぶときにもそれほどの障壁はないという話も聞きますが、ほんとうでしょうか。実際には、かなり、文法上の相違があって、覚えるのはそうとうたいへんなのではないでしょうか。 まあ、英語を習得したあと、スペイン語を習得するほど困難ではないかもしれませんが。 また、多少本を読んで独学しているものの、演算子、条件判断、繰り返し、配列、ファイルの入出力など、基本的な作り方なども知ったのですが、プログラミングの難しさってどういうところにありますか。 たいていの人は難しくて脱落してしまうのでしょうか。 年齢的にも30代で、仕事をしながらですので、時間的なゆとりもあまりありません。 ずっとVBだけでいいのならともかく、後々、CやC++もマスターしてみたいと思っていますので、それなら、最初からCをやったほうがいいのでしょうか。 でも、VBはVBでフォームも簡単に描けますし、コントロールを貼り付けるという操作はたいへんわかりやすく、初心者がプログラミングの楽しさを味わうのにはうってつけの言語だとも思います。 ただ、VBにあまりどっぷりつかっても、Cを一から勉強する際、Cの文法に違和感を感じしてしまい、挫折してしまうかもしれません。 それならいっそのこと、初めからCをやったほうがいいのかなとも思うわけです。 また、このふたつの言語の特徴をいいますと、どのようなことがいえるでしょうか。機能的なこととか、将来性とか、いろんな角度からでも結構です。 VB.NETはOSや、ネットワークに強いとも聞いています。 でも、Cは、ポインタなどもありますし、CPU・ハードを直接操作できる強みもあるようですね。ハードに関与する場面というのがどれほどあるのかはよくわかりませんが。 どなたか、もしアドバイスを頂けましたらありがたく感謝致します。

専門家に質問してみよう