no think. feel

プログラミングに殺される
ついったーでコレをネタに呟いてた人がいたので。
私は書ける側の人間だから、あんまし説得力ないのかもしれないけど。

どういう勉強をしたのかわからないけど、プログラムなんてどれだけ本読んだって理解できるものじゃないと思う。理解できる人は天才とか呼ばれる類の人だけだろうさ。
多分絵とかと同じで、実技を元に座学というか、実技を補強するための座学というか。
本は確かに読む必要があるんだけど、メインは実技だと思うのよね。
とにかく組め。話はそれからだ。みたいな。

私の経験だけで書いてしまうけど、プログラムを始めたい人は
1.どこかからソースコードを拾ってくる。
2.動かしてみる。
3.一部を改造してみる。
4.改造箇所を広げてみる。
5.最初からなにか作ってみる。

3が重要で、まずメッセージを変えてみるだけでも良いと思う。多分変数か定数に入れてるだけだろうけど、改造を進めていくと、そのうち文字列表示用の関数の存在に気づいたりして、関数ってものがどんなモノかが体感として解ってくる。
関数が見つかったら、感と好奇心で「ここに別の値を入れたらどうなるだろう」って試してみたりするといい。
「こうしたらこうなるんじゃないか?」って予想しながら組むのも大切。予想通りだった時のアハ体験は次に繋がるぜ。

5で作るのは、まずは電卓を作ってみるのが良いんじゃないかと思う。電卓はいろんな基礎が詰まってるから。

最初に本だけで勉強しようとすると、特にオブジェクト指向言語は専門用語が多すぎて挫折しやすいと思う。
だからって非オブジェクト指向言語を勧める訳じゃなくて、専門用語とかはとりあえず無視して、「なんていう名前の機能か解らないけどとにかくこういう動きをする機能」ってことで組んじゃえばいい。用語なんか後で調べりゃいい(知らなくて良いってことじゃない)
先に本読んでも良いけど、後で実際に組んでみて体感してみないと身に付かないってのは、プログラムに限らずなにに対しても同じことだよね。

最初は間違った理解であっても、思ったように動けば良いと思う。
でも理解が不十分だと思った点については、ちゃんとあとで調べることが重要。間違った理解はあとで正せばいい。
間違った理解でなぜ思ったように動いたのかが納得できたときは妙な高揚感があるぜ。


私自身がこんな感じで身につけてきたものだから、他の人でもある程度同じような方法で身につけられるんじゃないかと勝手に思っちゃうんだけどどうだろう。やっぱ人それぞれなのかな。

no think. feel」への4件のフィードバック

  1. 春樹

    >3.一部を改造してみる。
    何このCGI初めて組んだ時の俺。
    どのジャンルにおいても模倣が一番の練習になるってことですかね。

    >最初に本だけで勉強しようとすると、
    立ち読みしたネコでも解るプログラミングだかいう本が初心者にしちゃすげえ高度で笑った記憶が;

    返信
  2. Karz

    だいたい、みんなそーなんじゃないの?
    結局魔改造に魔改造を重ねて無駄に重いクソソースを見直して一から組み直したり

    本は文法を知るためだけのツールな気がする

    返信
  3. uni

    みんなそーなんだ改造から入るんだと思ってたんだけど、桐屋の大学時代の授業の内容とか、世に数多出てる入門書の類とかみてると、そーでもないのかもしれないと。

    >ネコでも解る(ry
    C++を勉強するためにWeb版を読んだけど、書いてあることは優しいのかもしれないけど理解できなかったのよね。
    仕事で組んでみたらすぐに使えるようになったけど。

    >魔改造
    G801にザベにのってたBASICのゲームのソース打ち込んで改造繰り返してたら原型とどめなくなって一からオリジナル組んだりしたのが始まりだったなぁ。

    返信
  4. Karz

    どの分野にも実地から入る人と座学から入る人は居るからね
    国際的に有名な日本人建築家なんかも建築については真っ当な授業受けてなくて、バイトレベルの知識と世界中の建築物を見てきた目を補完する為に通信講座で独学猛勉強したって話し
    でも大勢を占めるのは大学でコテコテの建築学を学んだ人ばかり

    先に組みだした人はどっちかってっと感覚派になるから座学とか本とかは知識を補完するものに過ぎなくて、最初からこれじゃワカンネェだろ、と。

    それにしてもG801だのザベだの歳がバレる話題だ
    G801でぐぐったら取説付のジャンク品が1200円で落札されてて吹いた

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

認証のために問題を解いて下さい * Time limit is exhausted. Please reload CAPTCHA.