2013.04.02 Tuesday

プログラミング勉強日報:2013-04-02

0

    本日のプログラミングの勉強に関する個人的な日報です。

    思ったこと

    サンプルコードを実際に入力することが何故大切なのかを肌で感じた。

    「サンプルコードを勉強する時は必ず実際に入力しましょう!」
    という文言を、「巷」のテキストで見かけますよね?

    ところで、
    実は、何年か前まで、巷を「みなと」と読んでいました。
    「きっと古来より港には最新の情報が集まるんだ!貿易の関係で!
    そして、港でよく耳にする情報はHOTな話題で流行ってたんだ!
    転じてよく耳にする話題を【港→巷】で云々と言うようになったんだ!」
    って思ってました。

    さて、サンプルを写経するのはなぜ重要なのでしょうか。

    わたしのような、
    プログラミング初心者には理由がいまいち分からないのです。

    でも実際に入力してみれば、
    なるほど!面倒くさい写経も、
    実行するとしないとでは大違い!!

    って実感できます。

    プログラムを写すってのは要は実体験ですよね。
    小学校の勉強で言えば、社会科見学で工場へ赴くのと似ていると思います。
    いわゆる体験学習ですね。

    わたしは営業をやっていたので、
    ちょっと営業に例えて話したいと思います。

    営業職に就く前、不安で不安で、超売れる魔法のウルトラ営業テクニック、
    みたいな本を読んでふむふむとなるほどと思ったものです。
    しかし、実際にテレアポをしてみると、
    ぜんぜん、本に書いているようにうまくいきません。

    毎日100回電話して、毎日2,3件商談に行って、
    しどろもどろになって.....
    そんな体験を体で覚えていくと、
    自然と営業成績を安定する方法が分かってきます。

    同様に、プログラミングもソースコードを写経して、
    なぜか写してるだけなのにバグが出て、
    本にのっている実行結果の通りになるまで、
    四苦八苦することもしばしばです。

    その四苦八苦のデバックが慣れない営業のしどろもどろな商談にそっくりです。

    「百聞は一見に如かず」

    という言葉の通り、

    ワオキツネザルってこんな動物だよ!

    みたいなテキストを読んでも結局、
    ほとんど分からない。

    ワオキツネザルを動物園に見に出かけて初めて、
    なるほどこういう動物なのか!!
    と体験学習するわけですよね??

    もう一点。

    既存のサンプルコードの改造も大変良い体験学習になります。

    ちょっと変えただけで、あら不思議、バグりまくる。

    どうやったら、ほんのちょびっとの改造ができるんでい!と。

    長い時は日をまたいでコードと格闘し、
    夢にコードが出てくることもしばしば。

    結局、使ってる言語の細かい仕様の知識が無いばかりに、
    どう見ても、これで動くよねー?
    ってソースが動かない。とか。

    なぜ、プログラミングの入力の話で初学者は???となるケースが出てくるのか。

    よく考えたら、中高と英語、数学、物理に世界史/日本史と、

    紙に書く機会が多かった。

    あるいは、何度も黙読/音読して覚えてマスターする機会しかなかった。

    そういう経緯が原因だと思うのです。

    勉強ってのは、「読む!」「ノートに書く!」「暗記する!」「理解する!」

    そういうもんだと思っていた歴史が長い。

    「コンピューターに入力してみる!」ってのはちょっと発想の外なんじゃないかなと。

    ソースコードを読んで理解するのと、
    実際に、実機に入力して体験するのとでは、
    本当に全く異なることなんですね。

    噂にしか聞いたことはありませんが、
    昔はベーマガという雑誌を買ってきて、
    BASICのソースを写経して、
    ゲームへの興味から改造することが、
    まるで遊びのような時代があったそうな。
    ファミリーベーシックっていうファミコンで作れる、
    BASICの開発環境があったという伝説も耳にしたことがあります。
    羨ましい!!
    わたしも、BASICで遊ぶ小中高時代を過ごしてみたかった...

    話は戻って、

    サンプルの写経と改造をたしなむようになって、
    よくその重要性と本質的な意味が分かりました。

    大学で実験物理でもやっていれば、
    そういうことも肌で感じ取れていたのでしょうが、
    あいにく社会科学系の勉強をしていたわたしには、
    ただちに合点がいくことではありませんでした。

    実際に写経し改造する中で、

    だから、テストが大切なのか!
    だから、内部の挙動を知るのが大切なのか!
    だから、グローバル変数はうざいのか!
    だから、オブジェクト指向開発の知識がモダンって言われるのか!
    だから、モジュール化が大切なのか!
    だから、スパゲッティプログラムを書いちゃだめなのか!
    だから、変数名を付けるのに激しい修行が必要なのか!
    だから、可読性が大事なのか!

    と体験的知識を得られつつあるという実感があります。

    そういう経験的理解を得ると、動けばいい!!というのはこの観点から見ると、
    ちょっとナンセンスな考えだと思います。

    蛇足〜〜〜〜〜(・q・)

    確かに、ライブラリやフレームワークを使えば、
    なんだが知らんが簡単に実装できちゃった!?
    これでいいでしょ?

    という局面も無くはないのでしょう。

    しかし数学の勉強でも、公式を覚えるのではなく、
    公式(定義とか定理)を証明できるようにした上で、
    使いなさいよと。

    よく言われますよね?

    多分それと同じでブラックボックスだらけのコードを
    書いてなんとか動かしていると、
    きっと楽しくないし、美しい!!という感動もなかなか得られないかと思います。

    長い長い独り言でした。

    JUGEMテーマ:IT資格について


    JUGEMテーマ:プログラミング





    ● Profile ●
    スポンサードリンク

    姉妹ブログ2よろしくっす♪

    rurucafe




























    ● ●
    Selected Entries
    Categories
            
    Others
    Mobile
    qrcode
    Powered by
    30days Album
    無料ブログ作成サービス JUGEM