- ベストアンサー
挫折しないプログラム勉強法
いつもお世話になっております。 プログラムの勉強をしているのですが、どの本を読んでも一定の難しさのところで挫折してしまいます・・。 こんなことではいけないと思い何度も読み返してみるのですが、やっぱり分からず、言葉を調べてもやっぱりピンと来ないし、分かりやすい説明を求めて別の本をやってみる。というのを繰り返しています。 自分には出来ないのかと悲しくなってしまうときもあります。。 そこで、皆さんはどうしても理解できんって時はどうしているか伺いたいのです。勉強のコツというより、継続のコツを教えて頂ければと思います。進むスピードはゆっくりでもいいのですが、とにかく嫌にならない方法があれば知りたいと思っています。 現在Objective-Cという言語を学んでいて(Macしかもっていないため)そんなに難しい言語ではないらしいので、これをマスターしたいと思っています。いろいろ試行錯誤しながら4ヶ月(うち1~2ヶ月は前段階としてC言語)勉強しましたが、まだボタンを押すとハローワールドが表示されるアプリが作れるレベルです。それより難しいアプリになると、どうしても何かいてあるか分からなくなるのです。 アプリを作ったりの演習をせずにC言語を徹底的に勉強した方がいいのかな、とも考えています。 長くなってしまいもうしわけありません。 アドバイスいただけると嬉しいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
★挫折しないプログラム勉強法 ・次の方法を参考にして下さい。 (1)本などを買うときに著者が異なる本を買います。 これにより同じ内容でも別の表現で解説されているので理解しやすくなります。 (2)本、ネットのプログラミングに関する内容を読むだけでなく実際にサンプルを 作成して試す手間を掛けます。できればコピー&ペーストではなく自分の指で 入力していきます。時間は掛かりますが実感があり実行時の感動から挫折しないはず。 (3)本、ネットのサンプルをいろいろと変更して動作を試すことです。(エラーも含む) (4)ちょっとしたツールを作ってみます。 特に目標がなければ Vector さんへ行き自分でも作れそうなフリーソフトか、 使いたいと思うフリーソフトを元に本、ネットを駆使してツールを作成します。 (5)私のお勧めソフトは『時計』です。 最初はただのデジタル時計。 次にアラーム機能を追加。 次にタイマー機能を追加。 次にストップウォッチ機能を追加。 次にカウントダウン機能を追加。 次にカレンダー機能を追加。 次にスケジュール機能を追加。 次にCPUモニター機能を追加。 次に電電モニター機能を追加。 その他いろいろと機能追加してきます。 追加していくうちに全体の構造を見直す必要が出てきますがこれもお勉強の一環です。 こんな感じです。 その他: >コードというよりは、説明してある概念がよくわからないことが多いです。 >確かに正確には動くけど、なんでこうなるのか分からない・・というような。 ↑ これは Windows の GUI の仕組み(概念)が理解していないからです。 会社では VB を学んでいるようですが VB も VC 系でも概念は同じです。 つまり Windows OS での GUI プログラムは WM_XXXXX メッセージを処理する プロシージャが一番重要です。このプロシージャがどのように呼ばれるのかの 概念をまず理解します。この概念が理解できないと >でも、むしろコマンドライン上で動くプログラムを組んでいたときの方が >楽しく感じていました。 ↑ コマンドラインの方が楽となります。 コマンドライン型と GUI 型は全く別の概念を持つ必要があります。 >何をやっても消化不良になってしまうので面白くないのかも。。 ↑ 消化不良になってしまうのはメッセージ・ループやそのメッセージ処理の仕組みを 完全に理解していないからです。本、ネットでメッセージ・ループとその仕組みを 検索してそこから勉強して下さい。あと VC 系は C 言語+Win32 API と C++ 言語と MFC とか、C++/CLI 言語とかいろいろのタイプで開発できます。 VC 系が初めてなら C 言語+Win32 API での学習をお勧めします。 この方法ならメッセージの仕組みや VB でも使える知識と経験が身に付いて来ます。 >何となく自分ではC言語系の技術も覚えておきたいというのがあって勉強しています。 ↑ 知っておいて損はしませんが C 言語系はポインタがあります。 VB にはない概念です。 このポインタを使いこなせるかどうかで C 言語系での GUI を理解できるかどうかが 分かれると思います。理由はプロシージャ関数は wParam、lParam でいろいろなデータを ポインタとして受け取ったりしますので。構造体(共用体)やポインタの基礎知識が 必須です。 >家のパソコンがマックってのもネックになっています(ちょっと後悔しています・・ ↑ Mac 環境で Windows のプログラミングは出来ますか? Mac は使ったことがありませんが Windows のプログラミングはやはり Windows の環境が 使えるパソコンを中古でも良いので用意した方がいい気がします。 本、ネットの記事を読むだけでは何時までたっても『消化不良』のままです。 ・以上。参考に。
その他の回答 (5)
- jacta
- ベストアンサー率26% (845/3158)
Objective-Cを使ってCocoaのプログラミングをマスターしたいのに、WindowsやC++/CLIの話をしてみてもほとんど無意味ですね。 Cocoaフレームワークを理解するためにはObjective-Cの理解が必須でしょうし、Objective-Cの理解にはCの理解が必須だと思います。C++とは異なり、Objective-Cに関する資料の大多数はCを習得していることが大前提になっているでしょうから。 仕組みは分からなくても、とりあえず動くものを作りたいのであれば、どんどん先に進むのもよいでしょう。会社でVisualBasicを学ぶときも、おそらくそうしているのではないでしょうか。 そうではなく、コンピュータに対する理解を深めたいからC言語系の勉強をしたいのですよね。それなら、足場からしっかり固めることをお勧めします。
- zwi
- ベストアンサー率56% (730/1282)
ただ目的もなくプログラムを勉強するのは無理があると思います。 目的を作って、それに向かって勉強していくのが良いんじゃないでしょうか。 目的となるアプリも最初は簡単な物を目標にしてステップアップしていく感じで目的を変えていくのが良いと思いますよ。 [目的の例] ・簡単な電卓 ・簡単なメモ帳 ・簡単なお絵かきソフト あと自分の趣味というか得意の分野に関係したプログラムも良いかもしれません。数学が得意なら数学的な図形表示のプログラムを作るとか。音楽関係なら、音に関係したソフトとか。
お礼
そうですね、確かに目的がないと辛いというのは痛感しました。 しっかりとした動機づけをできるようにしたいです。 回答ありがとうございました。
- popesyu
- ベストアンサー率36% (1782/4883)
ハローワールドなんかを作ることが目的ではないでしょ。何か目的があれば嫌でも覚えます。 必要は発明の母とは良く言ったもので、私の場合は必要に迫られたからというのもありますが。まぁ一番大きいのは不精モノだからというのがあります。ちょっとした繰り返し作業を行うことを一々手作業で行うことが我慢ならないため、バッチやマクロから始めて、それでは実現できない壁にぶち当たれたばネットや書籍で勉強しての繰り返しです。そうこうしているうちに周りからこれ出来ないか、あれをやってくれと頼まれて・・・となって便利屋的に扱われていますが、その状況には全く不満もなく、逆に自分から提案することも多々あります。私のレベルはあくまでも日曜プログラマレベルのものでしかありませんが、常に何かを勉強し続ける動機ははっきりと自覚しています。 本格的なプロのプログラマーを目指しているのであれば、それはそれで勉強する意欲もわいてくるでしょうが、質問者さんの場合は、一体何が動機になっているのでしょうか。それが無いのであれば、そもそも勉強する必要すらないと思いますが。
お礼
そうですね、目的を持てば勉強ははかどるとはいろいろなところで読むのですが、必要に迫られる状況に持ってくのが苦手なのもあるかもしれません。 自分自身は中途で未経験プログラマになったばかりで、会社ではVBを学ばせてもらっているのですが、何となく自分ではC言語系の技術も覚えておきたいというのがあって勉強しています。 家のパソコンがマックってのもネックになっています(ちょっと後悔しています・・
- jacta
- ベストアンサー率26% (845/3158)
> まだボタンを押すとハローワールドが表示されるアプリが作れるレベルです。 ということは、GUIのプログラムを作っているのですね。 言語そのものを十分に理解しないうちに、いきなりGUIを扱おうとすると、どうしても消化不良を起こしてしまいます。 まずは、コマンドライン上で動作するプログラムで、しっかり言語そのものを習得し、その上でGUIやネットワークに手を出した方がよいと思います。 > アプリを作ったりの演習をせずにC言語を徹底的に勉強した方がいいのかな、とも考えています。 C++とは異なり、Objecttive-Cの場合は、やはりCを徹底的に勉強した方がよいと思います。
お礼
解答ありがとうございます。 はい、GUIのアプリを作って勉強しています。 でも、むしろコマンドライン上で動くプログラムを組んでいたときの方が楽しく感じていました。 おっしゃるとおり、何をやっても消化不良になってしまうので面白くないのかも。。 出直すつもりでC言語の基礎からもっかいしっかり勉強してみようと思います!
デバッガを使いながら自分のソースを1行づつ実行してみては
お礼
回答ありがとうございます。 コードというよりは、説明してある概念がよくわからないことが多いです。 確かに正確には動くけど、なんでこうなるのか分からない・・というような。
お礼
凄く丁寧にご回答いただきましたありがとうございます。 そうですね、概念的なものがつかめないのはやはり力不足な証拠なのだと思います。 やっぱりC言語と、コンピューターそのものの知識を焦らずに地道に蓄えて行く事をしっかりやろうかと思います。 この業界に未経験から入った(大学まで全く違う分野)ため、一刻も早く一人前になろうと(むしろ周りを蹴落としてやろうと)勝手に暴走していた部分があると思いました。浅い理解でどんどん進んでもいい事ないですね。 ところで、機能を少しずつ足して行くというアイデア(?)は素晴らしいですね! コマンドラインの勉強の息抜きに、GUIでそれこそハローワールドから計算結果してみたり、ボタン増やしてみたり、いろいろ足してみたい機能を先行させる形で勉強してみようと思います。 時計も、少し慣れたら絶対に試してみます。 やる気が出ました!アドバイスありがとうございます!