プログラミングを始めてみたいのですが
C言語か、C++をやってみようと思います。
この二つはどういうところが違うんでしょうか?
オススメの書籍等あったら、教えてください
回答(6件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
オススメの書籍というよりも、その言語を「習得しました」と人様に対して言えるようになるために、読んでおかなければならない書籍を挙げるならば、こんな感じでしょうか。
〔Cの場合〕
1)ブライアン・カーニハン、デニス・リッチー「プログラミング言語C」
これだけです。
〔C++の場合〕
1)Bjarne Stroustrup「The C++ Programming Language: Special Edition (3rd Edition) 」
日本語訳:Bjarne Stroustrup(ビャーネ・ストルブストルップ(デンマーク人))
「プログラミング言語C++」(日本語版は、訳が酷かったらしく、絶版)
2)スコット・メイヤーズ「Effective C++」
3)スコット・メイヤーズ「More Effective C++」
4)ハーブ・サッター「Exceptional C++」
5)ハーブ・サッター「More Exceptional C++」
6)アンドレイ・アレキサンドレスク「Modern C++ Design」
7)ハーブ・サッター、アンドレイ・アレキサンドレスク「C++ Coding Standards」
8)ダブ・ブルカ、デビット・メイヒュ「Efficient C++」
9)ディビッド・マッサー他「STL―標準テンプレートライブラリによるC++プログラミング」
10)スコット・メイヤーズ「Effective STL」
11)Matthew H.Austern「Generic programming―STLによる汎用プログラミング」
これ等の書籍を読まないと、C++を習得したとは言えないと思います。
尚これ等の書籍は、内容が非常に難しいので、いきなり読んでも途中で挫折してしまいます。
私は、これ等の書籍を挫折しないで読めるようになるための勉強をしています。
プログラミングを始めてみたいという動機だけでしたら、C言語の方が敷居が低いので、よろしいのではないかと思います。CはUnixやLinuxのOS開発にも使われております。
No.5ベストアンサー20pt
C++はCの拡張です。
だいたいどんな違いがあるかというと、
・大きな違い
クラス、テンプレート
・少し大きな違い
例外処理
new,deleteなど、メモリ管理の言語レベルでのサポート
・細かな違い
void *の扱い
コードの途中でも変数が宣言できる
//コメント
C++で書いても、限りなくCに近いC++プログラムという書き方もできるので、C++から始めたほうがいいと思います。Cから始めると、「細かな違い」のところで混乱するんじゃないかと思います。
この回答へのお礼
少し自分でも調べてみました
クラスっていうのは、C言語にはなくて、C++にはあるんですね
簡潔にわかりやすい説明ありがとうございます。
No.4ベストアンサー10pt
私もC言語、C++を勉強中の身です。
C++は最近、勉強し始めているところです。
BLK314さんが仰られているように、C言語は手続き型、C++はオブジェクト指向という違いがあるようです。
私も未だ良くは分かっていませんが、「へぇー、そうなんだ~」程度に流しています。今は分からずともやっているうちに恐らく理解が後でついて来ると思います。
cametan42さんが仰られているように、C言語とC++の違いの説明を見たり、聞いたりすると、専門用語が多々出てきますので難しいです。
http://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html
このURL先に手続き型とオブジェクト指向の違いが説明されています。
書籍は、C言語、C++と別なので、サイトを紹介します。
「目指せプログラマー!」
http://www5c.biglobe.ne.jp/~ecb/index.html
「猫でもわかるプログラミング」
http://homepage2.nifty.com/c_lang/
がオススメです。私も良く参考にしております。
書籍はどちらを勉強するか決めてから購入する方が良いかと思います。
どちらを勉強するのがオススメですか?と聞かれれば、C言語をオススメします。
だいたいがどの言語もC言語がベースとなっているようなので、C言語がある程度わかるようになってくれば、C++も勉強しやすくなるのではないか思います。
書籍であれば、
新C言語入門 著者:林晴比古
ビギナー偏からあるので良いかと思います。因みにC++のシリーズもあります。
参考になれば幸いです。
この回答へのお礼
ん~。
やっぱ、C→C++というように段階おいたほうが、
確実なのかもですね
サイトのURLありがとうございます
C++言語は、C言語をベースにオブジェクト指向プログラミングの思想を取り入れたもので基本な互換性はありますが完全互換ではありません。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96% …
C++言語の最大の特徴は、クラスと言うオブジェクト指向プログラミングが出来ることです。同時にC言語的な手続き言語記述が可能なのがやっかいな所と言われています。
オブジェクト指向プログラミングと手続き言語的プログラミングは、プログラムを考える思考プロセスに大きな違いがありC言語で身につけた手続き言語の癖がC++では逆にオブジェクト指向プログラミングを身に付ける時の妨げになるという問題もあります。
なのでCから初めてC++に行くのが良いか、始めからC++が良いのかは良く議論の的になる問題です。仕事で使う場合はCかC++の両方出来る必要が可能性があるのでC言語から入るのが良いかと思いますが、趣味でしたらC++から入っても問題は無いと思います。どちらにしてもプログラマを目指すならCから入ってもC++はぜひ身に付けてください。
とりえず、こちらを見て参考にしてください。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061 …
よく言われるのは
Cは手続き型、C++はオブジェクト指向
ということです。
といっても、これだけでは"?"という感じでしょう。
私はよく
"Cはプログラマーを信頼する。C++はコンパイラを信頼する"
という表現をします。
例えば、ファイル処理でも
Cは
オープン ==> 読み書き==>クローズ
という一群の流れを全部プログラマーの責任で作ります。たとえば、読み取りの途中でエラーが発生したとしても、必ずクローズをしなければなりません。C言語の常識です。
C++では、クローズを後始末処理(デストラクタ)に書いておきます。
すると、デストラクタの処理を呼び出すのはコンパイラがやってくれます。
実際に私が後輩から受けた質問があります
(その後輩はCの知識はありますが、C++の知識はほとんどありません)
"先輩。大変です。先輩の作ったプログラム見ましたけど、ファイル閉じ忘れがたくさんあります。修正が必要なのでは?"
さすが、Cプログラマです。Cプログラミングの常識をよくわきまえています。
私はこう言いました
"コンパイラが閉じる部分を補充してくれる。それを知っているから、わざと閉じてないのさ。”
C++は賢いです
図形には円と三角形と矩形がある。それぞれに描画方法は異なる。
各々の描画方法は.....である
と教えれば
図形を描画せよ
と指示しただけで
C++の環境(コンパイラ、実行モジュール等)が
図形が実際には円なのか三角形なのか矩形なのか判定し
自動的に該当する描画方法で描画します
Cの場合は図形が何なのか正しく判定するのも、
(正しく判定できたとして)
該当する描画方法を正しく選択するのも
すべてプログラマーの責任です。
つまり、C++のほうが高度であると言えます。
ではCは必要ないのか?
そうではありません。
C++の方が高度であると申し上げました。
表現を変えれば"かゆい所に手が届く"といってもよいでしょう。
それは、裏を返せば、”おせっかい"とも言えるのです。
このおせっかいを焼くためにC++は贅沢な環境を要求します。
(Cに比べ)
高速なCPU、より大量のメモリなどです
(コンパイルにも、実行にもです)
現在のPCなどであれば、十分に高速で、大量のメモリを積んでいますので
C++が存分に活躍できますが、
家電等の"マイコン"ではCPUも遅く、メモリも不十分だったりします。
そういう場所では、おせっかいを焼かない分、高速でコンパクトなCが威力を発揮するのです。
結局は、使い分けということです。
書籍ですが
C++でしたら
"C++プライマー"がお勧めです。
Cの知識はほとんど無くても読める本だと思います
Cについては
カーニハン&リッチー『プログラミング言語C』
(俗にK&R C)
ですね。
どちらも、決して"リーズナブル"とは言えないのですが
それだけの価値はあると思います
>この二つはどういうところが違うんでしょうか?
「今からプログラミングを始めてみたい」人に違いを簡単には説明出来ないでしょう。専門用語の嵐になりかねないんで、こう言うのは難問ですよ(笑)。「ある程度プログラミング言語を分かっている」人向け、ですよね。
自分で調べて分からなかったら「流しておく」方が懸命な気もします。
次の説明を見てください。
C言語:
http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E
C++:
http://ja.wikipedia.org/wiki/C%2B%2B
あとは自分で実際に「ちょっとだけでも」触って書いてみた方が確実ですよね。
ただし、お金を払う必要はないんで……。Windowsだったら次のサイトでも参考にしていくつかプログラムを書いてみて「こっちが合う」とか「こっちは止めた」とか感じた方が良い、でしょうね。
猫でもわかるC言語プログラミング:
http://homepage2.nifty.com/c_lang/index_c.html
http://homepage2.nifty.com/c_lang/index_c2.html
猫でもわかるC++プログラミング:
http://homepage2.nifty.com/c_lang/index_cp.html
http://homepage2.nifty.com/c_lang/index_cp2.html
この回答へのお礼
読みやすそうなサイトありがとうございます!
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











