• ベストアンサー

C++を始めるにあたって

これからC++を勉強したいのですが、 ・Macの Xcode ・Winの Microsoft Visual C++ ・Winの Borland C++Builder これらは、何がどう違うのでしょうか。 家ではMac、大学ではWindowsを使っています。 初歩的な質問かもしれませんが、よろしくお願いします。

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

  • ベストアンサー
  • KoHal
  • ベストアンサー率60% (110/181)
回答No.5

質問の趣旨に即して回答します。 まず用語の整理。 1.プログラミング言語  人間がプログラムを記述するために考案された言語。  C/C++のほかにもPascalとかJavaとか色々あります。  それぞれの言語が特徴を持ち、得意な分野、想定された用途が異なります。 2.コンパイラ  プログラミング言語で記述されたプログラムはソースコードと呼ばれます。  このままではコンピュータで実行することは出来ません。  ソースコードはCPUが理解できるマシン語(またはそれに準じる中間言語)に翻訳する必要があるのです。その翻訳するプログラムがコンパイラ。翻訳することがコンパイル。  ま、実際にはコンパイルの前後にプリプロセッサとかリンカが仕事をするのですがそれはとりあえず気にしないことにしましょう。 3.ライブラリ  プログラミングするとき、一から十まで全て自分で書くのは大変ですし不可能です。  実際的にはすでに用意されたプログラムの部品を利用して、それを組合せて新たにプログラムを作ります。  そのプログラムの部品がライブラリ。  C++には規格で定められた、C++でプログラミングする時には何時でも何処でも使える(はずの、例外もありますわね)「標準ライブラリ」と、そうではないライブラリとあります。  後者は有志が製作し無償で配布されているものもあれば、企業が作製し有償で販売されているものもあります。 4.開発環境  プログラミングするのに必要なコンパイラ他のソフトに、あれば便利な色々なソフトと、(これが重要)プログラミングを手軽にしてくれる豊富なライブラリをまとめてパッケージにしたもの。 フリーのものもありますが、大抵は有償、しかも高い(笑。 学生さんならアカデミーパックがあるので御買い得。 さて、漸く本題。 A. Macの Xcode B. Winの Microsoft Visual C++ C. Winの Borland C++Builder どれも開発環境です。A.はMacのアプリケーションを作製するための、B.C.はWindowsのそれです。 どれもC++という同じ言語をサポートしてますので、ソースコードを記述する文法は共通なんですが、使用するライブラリが決定的に違います。 それぞれの開発環境でアプリケーションを開発しようとすればそれぞれのライブラリの使い方を覚えなアカンので、この違いは入門者にとっては無視できません。 まぁ、A.とB.C.でライブラリが違うのは仕方ないんで諦めるしかないんですが、B.とC.で違うのはめんどくさいですね。 しかし、これからC++を学ぶのであれば、まず言語そのものと標準ライブラリを学ぶことをお薦めします。 それをせずに、いきなり開発環境とそのライブラリに突撃すると勉強が大変ですし、他の環境へ移行するときに余計な苦労をすることになります。 MacとWinという2つの環境で勉強するならなおのこと、まずはどちらでも共通して使える標準的な言語機能を勉強して、それからどちらかのアプリケーション開発に乗り出したらと思います。どの開発環境を使うかはそのときに考えれば良いです。 なお、言語と標準ライブラリを学ぶならコンパイラだけあれば勉強は出来ます。コンパイラだけならフリーで配布されているものもあります。

guccho
質問者

お礼

標準ライブラリしか使わなければ、同じソースコードをWinでもMacでもコンパイル出来るということでしょうか。 あと、ライブラリというとMicrosoftで言えばMFCとかいうアレですか。 Win32っていうのは…。 とにかく、それぞれライブラリが違うんですね。 詳しい説明を有り難うございました。

その他の回答 (12)

  • dynamics
  • ベストアンサー率0% (0/2)
回答No.13

>何がどう違うのでしょうか ( Microsoft Visual C++ / Borland C++Builder ) 大雑把な違いは、 ・ソフトを作る労力 ( VC++ >> C++ Builder ) ・商品価格 ( VC++ > C++ Builder ) だと思います。 ※ Xcodeは、残念乍知りません。

guccho
質問者

お礼

>ソフトを作る労力 ( VC++ >> C++ Builder ) そうなんですか。理由がよく分かりませんが。 有り難うございました。

  • suseimei
  • ベストアンサー率35% (17/48)
回答No.12

No11アドバイスに補足いたします。この種のアドバイスはいろいろあり、統一されるようなことはないのが現状です。ときには、激論になってしまう悲劇もあるようですが、参考のためにコメントします。 >質問者さんが、C++はこれから勉強するけれども、他のプログラミング言語 > の経験があり、そういったことが既に分かっているのであれば、何の問題 > もないと思います。 まさにおっしゃるとおりです。学習を始める前提知識といえるものですが、前提知識を身に付けるのは大変なことだと思います。jactaさんが指摘されているように、GUI環境と一口に言っても、いろいろな機能を提供しています。おそらく、初めてプログラミングを開始される方は、それらの機能を理解できず、挫折してしまうでしょう。この当たりは、前提知識の内容に依存すると思います。 Java設計者のJames Gosling氏は、"Javaを覚えるのは午後の一時で十分"と述べていますが、それには前提知識があります。それは、"C++言語をよく理解していること"です。この場合、"よく理解している"という意味ですから、注意が必要です。私もよい結論は見い出せないのですが、次のような学習ステップはどうでしょうか。 1. 経験者に参考図書を選んでもらう 2. 参考書とコマンドラインコンパイラで型や演算、代入などの概念を学ぶ 3. 無料のGUI開発ツールを使う 2から3への移行にどの程度の時間を要するかは学習者の前提知識と意欲にかかっている、と思います。参考書の選択時は、先輩の助言を受けるべきだと思います。海外のフォーラムの発言などにチラッと目を通してみると、世界的な規模で見ても、良書といわれる参考書は本当に少ないようです。 jactaさんと私のやり取りが質問者の参考になれば幸いです。jactaさん、ご協力ありがとうございました。

guccho
質問者

お礼

大学では、Visual C++を使ってはいますが、用意されたソースコードを書き換えるだけで、その実体は知りません。 良書を見つけて、コマンドコンパイラで勉強して、GUI開発ツールの機能に触れる。これで行きたいと思います。 有り難うございました。

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

質問者さんへのアドバイスにもなるので、少しだけ#10のsuseimeiの回答に反応します。 GUI環境は、分かっている人が使う分にはよいのですが、あまりよく分かっていない人が最初からGUI環境に頼ってしまうと、大切なことがわからないままになってしまう危険性があります。 例えば、環境変数の設定などで最初につまづく方が多いのですが、そういったことがわからなくてもすぐ使えるようにGUI環境(というか統合開発環境)を安易に使い、本来なら最初の段階で(多少苦労してでも)マスターすべきことをやらずに先に進んでしまったために、後からいろいろ問題が起こります。 もし、質問者さんが、C++はこれから勉強するけれども、他のプログラミング言語の経験があり、そういったことが既に分かっているのであれば、何の問題もないと思います。

guccho
質問者

お礼

ご回答有り難うございます。 家では、コマンドラインコンパイラを使って、コマンドラインプログラムを作りながら学習。大学では、Visual C++を使ってやってみようと思います。

  • suseimei
  • ベストアンサー率35% (17/48)
回答No.10

次の回答の補足をさせてください。 > 純粋にC++を学習したいのであれば、コマンドラインコンパイラを使って、 > コマンドラインプログラムを作りながら学習するのが一番です。 この回答に大賛成です。ただし、GUI環境というのは、コマンドラインコンパイラを効率的に使用するソフトウェアに過ぎないことも忘れないでください。GUI環境は、GUIを通して効率的にコマンドラインコンパイラに引数を渡せます。また、直接コマンドラインコンパイラをGUIから操作することもできます。つまり、GUIを使うこととコマンドラインコンパイラを使うことは矛盾しません。

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

純粋にC++を学習したいのであれば、コマンドラインコンパイラを使って、コマンドラインプログラムを作りながら学習するのが一番です。 ところで、C++には標準規格があるわけですが、規格に完全に合致している処理系というものを私は知りません。 私が知る限り、もっとも規格に忠実なのはComeau C/C++です。他のものは、どうしても規格準拠度が低くなります。 現実の問題として、いろいろな処理系に触れ、C++のどの程度の機能であれば、移植性に問題が出ないかを体得できれば、それは非常に有用なスキルになります。 ANSI C++とかISO C++とかに完全準拠と謳いながらも、exportや国際文字名を使ったとたんに化けの皮がはがれる処理系が非常に多いのが現状です。

  • suseimei
  • ベストアンサー率35% (17/48)
回答No.8

> これからC++を勉強したいのですが、 C++は、国際標準言語であり、特定のベンダーの所有物ではありません。しかし、 開発効率や操作性などを考え、Microsoftをはじめとする各ソフトウェアベンダーは独自の製品を出しています。 最近になり、一部機能(MFCやATLなどの固有資産へのアクセス)制限を設定した無料版を各ベンダーが公開するようになりました。MicrosoftはVC++2005 Express Editionという名称の永久無料版GUIベースの開発環境を公開しています。その最大の特徴は、"限りなく標準仕様に準拠する"ことといわれています。 Windowsの操作に慣れているようでしたら、VC++2005 Express Editionを使用し、効率的にC++を学習するのも一つの選択肢です。C++にはそれにふさわしい学習方法があります。いろいろ悩みながら頑張ってください。詳細については、参考URLなどを参照されるとよいでしょう。

参考URL:
http://www.ttoyota.com/php/myvcee.php
  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.7

一応、マイクロソフトを擁護するわけではないですが、 http://www.forest.impress.co.jp/article/2005/12/16/visualstudioex.html ですから、こちらも一般プログラマは無料で使えますよ。

参考URL:
http://www.microsoft.com/japan/msdn/vstudio/express/
guccho
質問者

お礼

ありがとうございます。 Windowsを購入した際は参考にさせていただきます。

回答No.6

No.5さんに同意します。まずは標準ライブラリから やるべきです。いきなり開発環境に依存するコードを 書くようになったら、後で仕様が変わったときにもう その技術は他で使えないですから。 そういう意味では当分はフリーのBorlandだけでも良い のではと思ったりもします。

guccho
質問者

お礼

>そういう意味では当分はフリーのBorlandだけでも良いのではと思ったりもします。 確かMac用な無いですよね。 gccとかいうコンパイラ(?)があったのでメモ帳でも使って標準ライブラリからやってみます。

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

> これらは、何がどう違うのでしょうか。 それぞれコンパイラが異なるので、いろいろと異なる癖を持っています。また、サポートするライブラリや、ツール類も異なるので、使用方法はまったく違うと考えた方がよいでしょう。 > 家ではMac、大学ではWindowsを使っています。 これは悪くないと思います。 特に学習段階では、いろいろな開発環境(と実行環境)に触れておくのはよい勉強になります。 ずっと同じ環境しか使ったことがないと、間違いなく変な癖が付きますから。

回答No.3

ずばりMACは論外では? 今の主流は空しくもWindowsのVisial C++.netなので。 言語自体を覚えるならどれでも良いのでしょうが、 機能も覚えたいのならVC++しかないでしょう。