javaやbasicはわかるのですが、C/C++は何度トライしても身につきません。
入門書をいくつかやりましたが、やったときはわかっても何か身につかないのです。
そこで質問ですが、そんな私にお勧めの書籍があったら教えてください。
以下の書籍は除きます。
翔泳社の「独習C」「独習C++」ハーバート・シルト
ブルーバックス「これならわかるC++」小林健太郎
ありがとうございいます。
•入門編
http://item.rakuten.co.jp/book/1119220/
•実践編
http://item.rakuten.co.jp/book/1343573/
個人的には入門編がオススメですが、
理解しやすいようにかなりレベルが少し低い本でもあります。
ありがとうございます。
>javaやbasicはわかるのですが、C/C++は何度トライしても身につきません
をどう解釈したらよいのかわかりません。
基本的な構文(制御構文)は理解できるという前提です。
そうであれば、C/C++で身に付かないというのはポインタの話ということでしょうか?
それならば、下手な入門書はポインタに関して適当に誤魔化しているのでポインタ専門の本を読むことをお勧めします。
定番はこちら。
http://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3C%E8%A8%80%E8%AA%9E-%E...
ちなみにJavaは身についているということは、オブジェクト指向に関しては充分に理解しているということでしょうか?
もし、そうであれば今後はC#やPerlなどオブジェクト指向言語を中心に学び、無理にC/C++を学ぶ必要はないかと思います(ただし、大雑把にでも学ぶことは力になります)。
C++はオブジェクト指向で記述できますが、どうしてもCを理解している前提があり敷居が高いです。
ありがとうございます。ポインタというか、全体的に何か頭に入らないという感じです。向いてないのかな、とか思ったりします。
ありがとうございます。
なぜわからないのか、どうわからないのか書いてないので推測しかできませんが…。
Javaはお使いとのことですので、引っかかりそうなポイントは「ポインター型がわからない」という割と細かいあたりでしょうか?それとも「大規模なことができない」というシステム的なところでしょうか。
もし前者だとすると
ANSI C対応 はじめてのC (Software Technology)
あたりからじっくり攻めるしかないです。または
などで、ベースになっているコンピュータの仕組みから頭に入れるとか。
後者だとすると、それは「0からクラス定義やシステム構築をしようとしている」からではないでしょうか?Javaの場合だとSystemクラスだけでも結構いろいろな機能を持っていて、それを使うだけで自然とプログラムできてしまうところはありますが、教科書にあるC++の例題だとだいたい「動物クラスの下に犬クラスがあって名前がポチで」みたいなのしか出ていないため、実用的なプログラミングからは全然遠いのです。
ですので、Windowsであれば、Microsoftが提供しているクラスを使って練習する方が早いと思います。
プログラムを作ろう!パソコン教科書 Microsoft Visual C++ 2005 Express Edition入門 (マイクロソフト公式解説書―プログラムを作ろう!パソコン教科書)
あたりで、フリーで使えるVisual Studio C++
2005 Express Editionを実際に何か書きながら覚えるのがよいでしょう。
ありがとうございます。わからないというか、変にわかっちゃってるというか。でも何か頭に入らないという感じです。。。漠然としていてすいません。
おすすめ
[rakuten:book:10797394:detail]
『決定版 はじめてのC++』塚越 一雄 (著)技術評論社
のことですよね?ありがとうございます。
質問の回答とは少々ずれることを先にお断りしておきます。
質問者の過去の質問履歴ややり取りなどを確認させていただきました。
その上で私なりのアドバイスなどを書きたいと思います。
仕事でプログラミングに従事されている方かと思いますが、恐らくはある程度の特定の言語ではなく、色々な言語を使って(使わせられて)いるのではないでしょうか?
あるプロジェクトではJavaを、あるプロジェクトではVBを、というように。
もし、そうであるならば、会社の命令であるならば、やらざるを得ないというこの業界の問題でもあるのですが、それが理解を妨げている、と考えられます。
上の人は理解しようと思いませんが、CとC++であっても、JavaとCであっても、全く別のプログラミング言語です。
料理の世界で言うならば、日本料理とフランス料理のように全くジャンルの違う世界といっても過言ではありません。
ですが、この業界は当然のごとく日本料理の専門家にフランス料理を作れと指示します。
確かに「同じ料理だ」と言う点は間違いありません。
基本的な技術は料理のジャンルには依存するものではないでしょう。
しかし、それぞれのジャンルでは特徴があり重視するものも異なり目指す方向も異なります。
これはプログラミングにも言えることです。
ある程度のロジックを書くことは、どんな言語でも共通する技術です。
料理で言えばプロではなく家庭料理を作れる人という感じでしょうか?
しかし、プロとなるのであれば、言語は絞って勉強するべきです。
どの言語を選択するかは、会社の方針や自分の好みなどから選択してください(一番得意な言語でもOKです)。
そして、その言語ならば任せろというレベルになることが重要です。
すると、ちょっと勉強しただけでも他の言語が理解できるようになります。
日本料理人であってもフランス料理の勉強をすれば、それなりの料理を作れるでしょう。
もちろん、専門家には適いませんが、料理の幅を広げるという意味では有効だというのも同じです。
話がバラバラになってきたので纏めます。
一言で言えば、無理に他の言語を勉強する必要はないのでは?ということです。
もし、業務命令で暫くは不慣れな言語を使わなくてはならないならば今は必要な技術だけを習得しておき、それ以上は深く関わらなくても構わないと思います。
ありがとうございます。このような回答がくるとは予想していませんでした。(^_^;
仕事でプログラミングに従事しております。まあやらされているという感覚はなく、むしろ多くの言語に触れるのはラッキーだなと感じていましたが。
かなり考えましたが、結局おっしゃるのは、いろいろ手を伸ばさずに一つに絞りなさいということでしょうか?正直これは、あたっていると思いました。私はいろいろやってみるのが好きなので、けっこう手を伸ばしていますが中途半端に終わっているものもけっこうあります。一番知っているのが一番長くやっているJAVAですが、まあ過去の質問を見ていただくと、この程度では、と思われるのも無理はないかもしれません。でもこんな私でも、C/C++でやりたいことがあり、いつか習得したいと思っています。そのためによい本があれば、ものにならないかな、などと考えている所存です。何を言ってるかわからなくなりましたが、機会があればまたご回答ください。よろしくお願いします。
個人的に定番だと思っている本がまだ挙がっていないので回答します。
エキスパートCプログラミング
http://www.amazon.co.jp/%E3%82%A8%E3%82%AD%E3%82%B9%E3%83%91%E3%...
Effective C++
http://www.amazon.co.jp/Effective-%E3%80%90%E6%94%B9%E8%A8%82%E7...
Effective STL
http://www.amazon.co.jp/Effective-STL%E2%80%95STL%E3%82%92%E5%8A...
これらは基本的な文法を解説するというより、実際にプログラミングを行う上でのノウハウに関する本で、何らかの処理を行ないたいときどのように書くべきか、C/C++における作法、などについて書かれています。エキスパートCプログラミングは読み物としてもおもしろいですし、 Effective C++ は C++ でプログラミングするなら必読ではないかと思います。(Effective STLは、STLを使うなら一度目を通しておくといいかな、という所でしょうか。)
何か一つでもプログラミング言語を知っている状態で新しい言語を勉強する場合、ポイントになるのはその言語特有の作法などを手早く把握することでしょう。そのために、初期の段階で上記の本に目を通しておくのは効率的だと思います。Javaなどとの違いも意識して読めば、C/C++の勘所などについて理解が深まるかと。
私自身は最初に
でざっと概要を把握して、あとは実際にプログラムを書いたり他人の書いた(フリーソフトなどの)ソースを読んだりして勉強しました。
ありがとうございます。
http://www.sbcr.jp/books/hayashi/
「新訂 新C言語入門 ビギナー編」などはいかがでしょうか?
「○○をやりたいけど、どうもうまくできない。」
なんて説明があると、何を勧めたらよいか考えやすいですね。
ありがとうございます。
個人的に好きな本です。全く実践的ではないのですが、Cの謎が少し解けた気分になれました。
cg121さんとは違うかも知れませんが、私もC/C++については身につかないな~と思っていた時期がありました。何でも出来すぎるから、返って何だか全体がつかめないような。C言語の哲学の「プログラマを信頼する」(やりたいこと妨げない)というのが全てを表している気がします。
私は、UMLとJAVAをやってから C++ に戻ったら、OO的にしか使わないようになり、C言語としては使えなくなりました。
難しく考えずに、cg121さんも自分の好きなように理解すれば良いんではないかと思います。C/C++は自由度がウリですから。
ありがとうございます。入りやすそうな本ですね。まずここからはじめてみようかなと思います。
ありがとうございます。