• 締切済み

C++入門書を紹介してください

次のようなC++の入門書を教えてください。 ・高校生でも理解できる丁寧な説明 ・Cの知識がなくてもわかる ・オブジェクト指向についてわかりやすく説明している ・C++そのものの機能をあまねく説明している ・ライブラリは使い方の簡単な説明で十分 カーニハンとリッチーが書いたCの入門書のようなもので、大学の教科書よりは読みやすいものを探しています。 どうかよろしくお願い致します。

みんなの回答

  • agehage
  • ベストアンサー率22% (2752/12072)
回答No.2

私も#1さんと同じで、お勧めが難しい そもそも論で、「こんなことを自分で調べない人はプログラマにはなれない」と思ってます 「自分で調べられないわけじゃないけど、無駄な時間を使いたくないから間違いない選択をしたい」という考えも「始めない理由探し」になっているので向いてない人だと思う 学科の課題とかを乗り切りたいなら素直に教科書で良いと思う 自力で初めて、行き詰まっていると感じてるなら、私が20年以上前に読んだ「初めてのC++」、これとは別にオライリーの「C++プログラミング入門」となるでしょうか オブジェクト指向プログラミングについては、初学ならそれしか覚えないので、気にしないくていいような 手続き型の知識が既にあるなら、クラスをゆっくり学べば良いかと思います これは改めて、悩んだ日が来たらまた相談してください ただ独学でプログラミングしたいなら今ならC#がいいと思うけど。

soni6667
質問者

補足

#1さんにも書きましたが、田舎の書店にはプログラミングの入門書がほとんどなく、手に取って良い本を探すことができません。ECサイトでは中身を見て選ぶことができません。時間が惜しいから自分で調べていないのではありません。ECサイトで10冊以上も購入して調べるのにはお金がかかりすぎるのです。東京や大阪に住んでいる人にはこのことがわからないのでしょう。 「初めてのC++」とオライリーの「C++プログラミング入門」を薦めていただいたことには感謝します。 ただ「初めてのC++」という本は検索しても出てきませんし、20年以上前だと記述方法が変わっていると思われます(#1さんに書いたソースコードを参照) C#はUnityを使うために独学で勉強しました。C#は記述方法がCとあまり変わらないので簡単に理解できました。むしろ難しいのはUnityです。 C#をお薦めされる理由は、現在ではC++を仕事で使うことがほとんどないということなのでしょうか?

回答No.1

う〜ん、ごめん。 ザーッと要件読んでみたけど「そんな本存在しないんじゃない?」ってのが正直な感想。 いや、C++って全然専門じゃないんだけど、貴方が要求してるような本の要件って「実在したら間違いなく有名な本になってる」筈なんだよ。C知らなくてもK&Rは聞いた事がある、みたいにさ。 ところが、そんな本の名前って聞いた事がない。 と言うことはそんな本は存在してない、って事だ。 まず、 ・高校生でも理解できる丁寧な説明 高校生の知的レベルをどう想定してるか知らないけど、C++入門、って時点でフツーは高校生前提ってのが崩れてる。 ・Cの知識がなくてもわかる これがそもそもあり得ない想定じゃないか。 Better Cで元々誕生した以上、Cの知識がある程度必要なんじゃないか。 ・オブジェクト指向についてわかりやすく説明している 「オブジェクト指向」と言う概念と「オブジェクト指向言語」は必ずしも同一じゃない。 あり得るのは「××言語で言うオブジェクト指向と言う実装」であって、一般論ではない。 つまり、C++のオブジェクト指向の「機能を使う方法」は学べても、それで一般的な「オブジェクト指向」が分かった事にはならない(良く勘違いされてるが)。 よって、前提として「オブジェクト指向をわかりやすく」解説するのと「C++のオブジェクト指向と言う機能をわかりやすく」解説するのは次元の違う話で、後者を理解するには前者を知らなきゃならないけど、通常そこまで細かい事はやらず、後者の「機能説明」だけで、あとは自分で色々やってください、になるんじゃないか。 そもそも、オブジェクト指向の「概念」にツッコむにはSmalltalkやEiffel(※)辺りを学んだ方が確実だろうし、それはC++の範疇を超える。 ・C++そのものの機能をあまねく説明している これも無理ゲーに思える。 そもそもC++の仕様ってデカくね? 「Cっぽい部分」だけの想定なのか。Templateまで合わせるとシャレにならん気がする。 ちなみに、意外とC++マニアは「Cっぽい部分」じゃなくって関数型プログラミングっぽいTemplateの方を好んでる印象。 ・ライブラリは使い方の簡単な説明で十分 この「ライブラリ」も何を指してるんだか意味不明だし、「機能をあまねく説明」と相反してない? と言うわけで、殆ど「不可能」な要求に見えるんだよな(笑)。 そんな本があっても、一冊10,000ページとか(笑)、電話帳もビックリ、って厚さの本になるんじゃなかろうか(笑)。 > カーニハンとリッチーが書いたCの入門書のようなもの だったらビャーネ・ストロヴストルップ(オリジナルのC++の作者)が書いた本を当たってみたらいいんじゃないかしらん。 https://www.amazon.co.jp/s/ref=dp_byline_sr_book_1?ie=UTF8&field-author=%E3%83%93%E3%83%A3%E3%83%BC%E3%83%8D%E3%83%BB%E3%82%B9%E3%83%88%E3%83%A9%E3%82%A6%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97&text=%E3%83%93%E3%83%A3%E3%83%BC%E3%83%8D%E3%83%BB%E3%82%B9%E3%83%88%E3%83%A9%E3%82%A6%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97&sort=relevancerank&search-alias=books-jp 本屋で確かめてみるべきかも。 ※: Eiffel: https://www.eiffel.org 知る人ぞ知る、超マイナー言語(笑)。 ただし、「マジメにオブジェクト指向をやりたい」と考える人にはマストな言語で、この言語を使ったオブジェクト指向解説の決定版、と言うのに次の本がある。 オブジェクト指向入門 第2版 原則・コンセプト: https://www.shoeisha.co.jp/book/detail/9784798111117 オブジェクト指向入門 第2版 方法論・実践: https://www.shoeisha.co.jp/book/detail/9784798111124 上記の本でEiffelが用いられていて、マジメなオブジェクト指向信者はこれを使って学ぶのがスタンダード「らしい」。僕はOOP(オブジェクト指向)信者じゃないんでよう知らんが(笑)。 いずれにせよ、繰り返すが、「とある言語の機能としてのオブジェクト指向の紹介」と「オブジェクト指向についての説明」ってのは全く別。後者は「どうやってモデルとしてのオブジェクト指向を使って色んな事柄をデザインしていくのか」と言う事だろうけど、それを「言語の解説」と一緒くたには、フツーは出来ないと思うし、誤解が蔓延するだけ、だとは思う。 加えると、それをマトモにやろうとしたら、一冊にまとめるには本の体裁にならないので、やっぱ別冊でそれはそれとして勉強するしかないんじゃないか。 そして、それくらい「オブジェクト指向」ってアイディアは実はホンマ、C++と関係なく、分かりづらいんだよ。

soni6667
質問者

補足

こちらは田舎で書店にプログラミングの入門書がほとんど無いので質問しました。ECサイトには多数の入門書がありますが、内容を読んで選ぶことができないので、どれを買えばよいのか判断できないのです。 K&Rと同等のクォリティーの本を探しているわけではなく、K&Rのように定番となっている本があれば紹介して欲しいのです。 プログラミング言語は丁寧な説明があれば高校生でも理解できます。私は高校生のときBASIC、COBOL、FORTRANを使えましたし、Z80のハンドアセンブルと逆ハンドアセンブルを趣味でしていました。 CとC++は記述方法が違うので、Cの知識があることを前提にすることは無駄です。 【Cのコード】 #include <stdio.h> int main() { printf("Hello world!\n"); return 0; } 【C++のコード】 #include <iostream> int main() { std::cout << "Hello world!" << std::endl; return 0; } CもC++も仕様は大きくないはずです。ライブラリを含めた仕様のことをおっしゃっているのではないですか。 stdio.hもiostreamも無い素の機能はとても小さいはずです。だからC++の素の仕様とiostreamの重要な機能だけ説明している本を紹介していただければ十分です。ライブラリの使い方はincludeして使うことと、自分でソースコードを分けて書いたときに、どう風にパッケージ化してincludeすればいいのかの説明だけでいいです。 ビャーネ・ストロヴストルップの日本語版は9,680円もして受講者のテキストに使うには高額すぎます。 お願いしているのはC++の入門書です。オブジェクト指向の解説書ではありません。CではなくC++を学んで、プログラミングの実践の中でオブジェクト指向を身に着けるということです。ほとんどの職業プログラマーはこの方法でオブジェクト指向の理解を深めています。

関連するQ&A