• ベストアンサー

独学でC++

独学でC++を学ぼうと思い、色々C++に関する本を買って勉強中なのですが、全くわかりません。独学で学ぼうというのはやはり無理があるのでしょうか?スクールに通う時間もお金もないので無理なんですが、せっかく始めた分野なので最後までやり遂げたいと思っています。皆さんも始めた当初は私みたいになりましたか?どう続けていいかもよくわからず、悩んでいます。どなたか、アドバイス、勉強法、なんでもいいので教えてください。

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

  • ベストアンサー
  • VirtualT2
  • ベストアンサー率58% (18/31)
回答No.5

私も独学です。(w スクールに通ったりする必要は無いと思いますよと。 とりあえず、何事も始めるに当たっては、最初が肝心です。 しかしながら、コンパイラーとかの準備とかって、よく判らないと思いますです。 とりあえず、フリーのコンパイラー&デバッカ-として ボーランド社の[Borland C++ Compiler 5.5・Turbo Debugger 5.5] >http://www.borland.co.jp/cppbuilder/freecompiler/ そして、C/C++言語を親切丁寧に教えてくれると思われるサイトの一例のような所として (自分の価値観に自信がもてないから~廻りくどい書き方をしてしまって申し訳ないですが…) [ロベールの部屋]さんのHPを紹介しておきます。 >http://www1-1.kcn.ne.jp/~robe/ [猫でもわかるプログラミング]Yasutaka KumeiさんのHPもと、 >http://www.kumei.ne.jp/c_lang/ ここには、先に紹介したコンパイラーの設定方法とか書いてあります。 学ぶにあたっては、 「Windows系の関数とか調べても判らない場合は、判らない事にしておく。」 が、初めからC/C++言語の基本だと思います。 「ハンドル?デバイスコンテキストなにそれ」←OKですよ とりあえず、 初めの関数として、printf関数系をまず何より覚える事。 (sprintf/wprintfとか種類がありますが、殆ど一緒です(ちょっち違うかもしれないけど…汗) ) ウインドなり、コマンドラインに[Hello World]の文字が 表示できたら、そこからが大切です。 printf関数は、結果表示・デバック表示・メッセージ表示色々使えます。 実行結果、実行過程を知る上で最重要なのですすすっ。 先人からのアドバイスとして、 「学ぶに当たって、楽しくないと覚えない」 なので、楽しく学んで欲しいです。 それに、楽しくて理解がサクサク進むようになると、 時間とか忘れて熱中できますですよ。(一番最初の時は大変だけどね) 自分で書いたグラフィックとかが画面で、自分の意図したように動くと楽しくなりますよ。 テキストベースの超簡単なゲームとか住所管理ツールとか作って、改造・改良して弄くり倒したりすると覚えが早いとおもいますよ。 +アドバイス(これも個人的主観ですが…) Q.勉強しててもさっぱりわからなくなった A.「よくわからなくなったら、理解を諦める」     無理に理解しようとしない。     (変な半固定概念的理解が憑いちゃうから)   「別な事例に挑んでみる」     ソコから納得・理解が得られる事もある   「情熱が冷めたので休息期間をおいてみる」     ゲームとかで遊んでみる。     そして、そのゲームもC/C++とかで出来てる事を     考えながら楽しい方向&情熱を心に再燃料投下 ------------------------------------------------ ここまで… さて、仕事への情熱燃料になったかなぁ…と自分に言い聞かせてみるテスト。

その他の回答 (6)

  • betagamma
  • ベストアンサー率34% (195/558)
回答No.7

No.1です。 何を勘違いしたのか、オブジェクト指向と構造化プログラミングを間違えてしまいました。 No.1の構造化プログラミングは、「オブジェクト指向」と読み替えてください。 それでは。

noname#9431
noname#9431
回答No.6

#1~#3の方の意見はどれも参考になりますね。 私もC++を学んでいる途中です。 「全くわからない」ということはないですが、やっぱり他の言語に比べて複雑で難しいと思います。 C++はメチャクチャ強力なプログラミング言語で、まあ何でもできる。(ただそれが問題に対して最も適切な選択かは別として。)それだけに言語体形が広大ですね。 私はBASIC, C, C++, (shell script), Perl,(最近RubyとJAVAもちょっとだけ) の順番で学んでおります。BASICをやっていたことはCの理解を助けましたし、もちろんCの知識はC++の理解の助けになりました。また、オブジェクト指向型のPerlモジュールを使うことによって、オブジェクト指向的な理解も少し深まりました。だから、#1の方が仰るように、オブジェクト指向型プログラミング言語であるJAVAを勉強し、実際既存のclassメソッドを使ったり、またそのclassを継承して自分で新しいclassを作って遊んでみるとC++のオブジェクト指向型プログラミングに関しても理解が深まると思います。 ただ、C++の言語体系は、(何ヶ月もかけて開発されるような)大規模で、処理速度が要求されるようなプログラムを、効率良く保守、拡張してゆくのに最適なように出来ているので、その様な経験をして初めて真に理解できるものだと思っております。 C++の能力を最大限に使いこなすのは私にはまだまだ先の話です。。。

  • guuman
  • ベストアンサー率30% (100/331)
回答No.4

何を勘違いしているのかC/C++言語系は独学が基本ですよ 通常のプログラミング言語は独学している人がメインです

noname#15691
noname#15691
回答No.3

独学は十分可能です。 かくいう私もいくつか言語を使えますが、学校で習ったことは一度もありません。 ただ、プログラミングは実際に実行してみないと実感がわかないので、机上の勉強だけではちょっと辛いです。 今は、どんなOSでもフリーのコンパイラが入手できると思いますので、とにかく動かしてみることをお勧めします。

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

私も最初から独学でC++でしたが別に問題なかったですよ。 独学で大事なのは最初に適切な入門書に出会えるかどうかです。 当たり前ですが、読者がCを知っていることを前提したC++の入門書は読んでも判りませんね。 あと、そもそもC++は他の言語に比べ仕様が膨大なので、気軽に勉強できそうな薄い入門書は全く役に立ちません。 最初からボリュームのあるきちんとした入門書を読むことが大事です。 私が勉強したのはダイテル本ですが、これは今となってはさすがに内容が古い。 最近評判の良さそうな入門書というと、この辺でしょうか?私自身は読んでません。すいません。 http://www.amazon.co.jp/exec/obidos/ASIN/4881357050 http://www.amazon.co.jp/exec/obidos/ASIN/477410843X 一応参考(笑 http://www.amazon.co.jp/exec/obidos/ASIN/489471115X http://www.amazon.co.jp/exec/obidos/ASIN/4894711168 http://www.amazon.co.jp/exec/obidos/ASIN/4894710641 あと、C++の基本概念であるオブジェクト指向の入門書として。これも今としては内容が古いんですが、C++をメインにしたオブジェクト指向の入門書としてはまだまだ読む価値があります。 http://www.amazon.co.jp/exec/obidos/ASIN/4881356194 そして、一通り基本が身についたとあとで、これは必読。 http://www.amazon.co.jp/exec/obidos/ASIN/475611895X 要は腰を据えてきっちり勉強したら独学でC++でも全然問題ないですよ。 ただ、今時C++か?って考えたら、特別 C++に固執する理由がない限りJAVAなどのトレンドな言語を勉強した方が良いのかもしれません。 私自身はC++お薦めしたいですけどね(苦笑

  • betagamma
  • ベストアンサー率34% (195/558)
回答No.1

いえいえいえいえ。独学でも問題ありません。自分も独学です。 ただ、一つ言えることは、C++は、数あるコンピュータ言語の中で、最も文法が複雑で難しい言語であることです。いきなり、C++から勉強するというのは、かなりきついです。 自分は、 BASIC -> C -> C++ -> JAVA というように、やってきました。 まずは、CかJAVAを勉強することを強くおすすめします。 Cの最も難しいところは、「ポインタと配列」の概念です。これは、C言語独特の概念というか、機械語に近い概念で、他の高級言語では、うまく隠されています。この機械語に近い概念を、むき出しにしてしまっているのが、Cなんです。 JAVAの他にも、他のコンピューター言語に最近どんどん取り入れられている、難しいものに、「構造化プログラミング」というのがあります。 これは、一言でいうと、クラスなどの概念を使って、プログラムの再利用をしやすくするものです。 クラス・カプセル化・継承・オブジェクトとインスタンス などなどが、これに当たります。 C++は、Cを拡張した言語で、CプログラムをそのままC++のプログラムと見なせるように作ってある上、構造化プログラミングの上でも複雑な拡張をしています。 つまり、C言語の「ポインタと配列」という難しさに、 「構造化プログラミング」の難しさが加わった、二つの難しさがあるわけです。 今使われている言語の中では、最も複雑な言語といえるのです。 JAVAは、C++から、「ポインタと配列」の難しさをうまく取り除いた言語といえます。ポインタを完全に排除しています。 C言語は、構造化されていないので、「構造化プログラミング」の難しさはありません。クラス・継承・インスタンスとオブジェクト、などといったものとは無縁です。 従って、JAVAとCを別々に勉強した後、C++を勉強することをおすすめします。この二つをやると、ちょうどC++の二つの難しさを、一個ずつ別々に覚えられると思います。 また、両方とも現在もバリバリに使われている言語であるということも、推奨する理由です。 遠回りかもしれませんが、結局C++でも同じ概念が出てくるので、同じ事です。 いきなり、C++をやると、どの言語も覚えられないまま挫折する可能性が高いです。