どうすれば物事を習得することができるのか

 

2chのスレッド「プログラム挫折経験ある人、どうやって克服した?」より。

これはプログラミングを題材にしているだが、学び全般に言える気がするのが、「習得方法は、人によって異なる」ということ。

このスレでも

  • 先ず概念をしっかり理解する。その後、やっと実践に入る。
  • とにかく先ず手を動かし、実践する。写経する。そうすると、次第に概念も理解できるようになる。
  • 中間。概念の理解が必要であれば、概念を理解。手を動かす必要があれば、手を動かす。
  •  

    などあるようだが、これは一概にどの手法が優れている、というものではないだろう。人によってベターなやり方は異なるので、自分の性格や特性を見極めて、勉強方法を選択することが肝要である。

    私の場合は、完全に「先ず手を動かす」タイプ。概念から入ると、眠くてしょうがない。

    昔、バーバラ・ミントの「考える技術・書く技術」を読んだ時も、訳本は眠くて眠くて死にそうだったが、ワークブックの方は、楽しみながら読むことができた。

    以下、相当古いスレッドの情報だが、今読んでもなるほどと思わせられる。

    136 :デフォルトの名無しさん:2006/09/29(金) 15:46:23
    オブジェクト指向の理解からはじめなさい
    専門書を10冊は読め、プログラミングなんてその後だ

    137 :デフォルトの名無しさん:2006/09/29(金) 17:11:11
    > 専門書を10冊は読め、プログラミングなんてその後だ
    俺は逆だった。
    テキストや入門サイトとかに掲載されているサンプルを打ち込んで、
    いわば「体で覚える」こと。とにかく徹底的に実践してから、ある
    程度覚えたらその技術的な背景や詳細を専門書で身につけた。
    ちなみに俺は今Haskellを「体で」覚えている最中だ。
    まあ言語の習得は人によって向き不向きがあるから>>136の方が向いている人もいるんだろうが。

    138 :デフォルトの名無しさん:2006/09/29(金) 17:41:05
    >>137
    その「体で覚える」ってのは、具体的にどういうのでしょうか?
    手を動かして実際に手で打ち込むのは分かるのですが、
    サンプル通りに一切の変更もなくそのまま、ってことですか?

    139 :デフォルトの名無しさん:2006/09/29(金) 22:37:12
    まず予習。打ち込む前にサンプルを読む。一行一行意味を確認しながら丁寧に読むこと。
    理解できない場所は、俺の経験上いくら考えても埒があかないからとりあえずとばす。
    次に実践。コピペとか横着せずに自分の手で打ち込む。
    ただ機械的に丸写しするのではなく意味を意識しながら打ち込むこと。
    慣れないうちは、忘れてしまっても見直したときにわかるよう逐一コメントを
    付け加えておくのもいい。完成したら動かしてみて、ささやかな充実感を味わおう。
    デバッガがあれば復習もできる。
    たいていのデバッガにはプログラムを一行だけ実行したあと一時停止する
    ステップ実行という機能がある。プログラムの動作を一行ずつリアルタイムで
    追うことができるので、予習や実践の段階でわからなかった箇所も理解できる
    ようになることもある。おおいに学習の助けになるはずだ。

    140 :デフォルトの名無しさん:2006/09/29(金) 22:44:42
    確かに体使った後に、参考書とか見て確認したりすると
    理解度が高い木がするな。

    141 :デフォルトの名無しさん:2006/09/29(金) 23:20:02
    >>139
    それは体育会系のようで、すばらしい!
    汗かいた後に飲む、牛乳はうまい!

    143 :デフォルトの名無しさん:2006/09/30(土) 03:13:00
    確かに、既にある言語をマスターしていて、その言語で新しい分野の
    プログラミングに挑戦したいという場合はコピペでも全然構わないと思う。
    それは言語の習得が目的ではないから。
    でも新しい言語に挑戦するときは自分の手で打ち込むべき。
    サンプルコードと未完成のコードを適当なスパンをおいて交互に目で追い
    ながら打ち込むので、より狭い範囲に視野をとどめることができる。文法上の
    細かい事項は、読んだだけでは見落としがちだからね。
    俺の実際の経験としていくつか例を挙げると、C言語のenumの区切り文字は
    セミコロン(;)ではなくコンマ(,)だったことを見落としてた。structは
    セミコロンのくせに。元々JavaやっててC++に挑戦したとき、クラスの定義の
    最後にセミコロンが必要なことに気づかなかった。などなど。
    > むしろ、コードを少しずつ書き換えて、実行の様子の違いを比較することに時間を使うべし。
    書くの忘れてた。実践の一環にはこれも必要だね。

    394 :デフォルトの名無しさん:2007/06/02(土) 04:31:49
    >>391
    なんかアプローチ間違ってる様に見える
    分厚い本を読んで苦行の様に勉強してプログラム書ける様になった香具師は、
    プログラマ全体からみたら少ない方じゃねーかな?
    つーかそれじゃ、プログラミングという行為が楽しくならんだろ?
    上でも出てたけどさ、プログラム組める香具師は好きでやってることがおおいのさ
    俺だって自分でこんなツールが欲しいと思って、試行錯誤でコード書き始めたのが最初だし、
    何かやりたいことを見つけて、そこから調べて学んで行くと、ものになりやすいと思うよ