• 締切済み

サンプルコードの丸暗記学習について

 PHPのプログラミングを勉強しはじめて1年ほどが経ち、公開されているコードなどを弄りながら、アプリケーションを作成しています。  友人から「書籍などに書かれているサンプルコードを丸暗記すると良い」と言われた通り、書籍を購入し、サンプルコードを片っ端から丸暗記し、実際に書きだすという方法で学習しています。  幸い記憶力は良い方で、100行程度のコードであれば、一度読めば全て暗記でき、同じ通りにプログラムを書く事も出来ます。  しかし「プログラムは丸暗記するものではない」といった意見や、「暗記でどうにかなる世界ではない」といった意見も耳にします。  このままサンプルコードの丸暗記で学習を進めて良いものか、PHPに限らず、プログラミングの学習方法として、丸暗記学習によるメリット、デメリットを教えて下さい。  よろしくお願いします。

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.6

>100行程度のコードであれば、一度読めば全て暗記でき、同じ通りにプログラムを書く事も出来ます すばらしい記憶力ですが、「そこに変数を一個追加する時どうする」といったことを考えるところがほんとのプログラミング(ing動詞が重要)と思いますので、全く同じに書き出すのではなく、すこしずついろんなところを変更してみる、ひとつずつ機能を追加してみるということをたくさんやってみて下さい。変更の結果で、どこが元と違うのかを検討していけば応用力になっていくと思います。 また、同じ暗記するなら、その構文にどういう意味があるのか、どういう時使うのか、解説の方を丸暗記する方がよっぽど意味がありそうですけど? ということで、丸暗記対象には、phpマニュアルの「言語リファレンス」の章をお薦めします。 特に、演算子の優先順位とか、型の比較表や相互変換は、暗記力で覚えていると、条件式を書ときなど、すごく役立ちます。 http://php.s3.to/man/langref.html

参考URL:
http://php.s3.to/man/langref.html
  • masa582
  • ベストアンサー率18% (48/255)
回答No.5

暗記がなぜ一般的にPHPに限らず批判されるかというと応用が利かないと思うからです。だから応用力を養う訓練を同時にする必要があるでしょうね。現在が基礎的な段階ならある程度の暗記は当然必要でしょうね。そもそも知識があっての応用ですので。

tocread
質問者

お礼

ありがとうございます。 基礎的な学習と、応用力を養う訓練を同時にする必要がありそうですね。こ ちらでお話を伺わなかったら、恐らく数百行のコードを必死に覚えていた事 と思います。現に書籍に書かれていた中規模の掲示板のコードを丸暗記する 予定でした。 基礎を軽んじず、かといって応用力を疎かにする事なく、バランスを持って 訓練していきたいと思います。

noname#246547
noname#246547
回答No.4

そのすばらしい記憶力で、書籍の目次を覚えておくことをお勧めします。 内容まで覚える必要は無いです。 目次を覚えておけば何か困難にぶつかった時に、「あの書籍の目次に解決方法となりそうなことがあったなぁ」とすぐ書籍を見直すことができ、解決の糸口を発見できると思います。 そして自然にプログラミングに慣れることでしょう。 >丸暗記学習によるメリット、デメリットを教えて下さい メリットは資格試験などの勉強方法としては有効では? デメリットは応用がきかなくなる。 書籍に書いてあることはただの基本だけです。 仕事とは、「5%の基本と90%の応用と5%のひらめき」で成り立っています。 丸暗記しても仕事で必要な5%の部分でしかありません。 時間と労力の無駄です。 >「プログラムは丸暗記するものではない」 アルゴリズムのパターンは覚えておいても損は無いでしょう。

tocread
質問者

お礼

ありがとうございます。 書籍の目次を覚えるという発想はありませんでした。非常に興味深いで す。記憶にも限界がありますし、仰るように、時間と労力の無駄かもしれ ません。インデックスを頭の中に入れておけば、必要な時に、必要な書籍 の、必要な項目からさっと調べる…。まるで検索エンジンですね。本格的 に丸暗記学習を始める前にお話を伺えて良かったです。 アルゴリズムのパターンは覚えておき、あとは実践で応用、閃きを養って いきながら、プログラミングに慣れていきたいと思います。

回答No.3

私の場合は、記憶力がそれほど良くないので100行でも暗記は出来ません。 ただ、どの辺にそのコードがあるのかは把握しています。 でも、その日の閃きによって、100行のコードが、50行になったりします。 最初は、動作の確認で丸暗記で構わないと思いますが、その処理は一つのやり方ではなく、プログラマーによって様々だと思います? 最近は、ようやく各処理を部品として使うようになり、効率も上がってきました。

tocread
質問者

お礼

ありがとうございます。 学生の頃、英語の学習で1ストーリーを丸暗記という学習方法をとっていま したので、学習=丸暗記という癖がついているようです。文章や映像の記憶 力はあっても、肝心の「応用力」「閃き」に乏しく、これで良いのだろうか と思い始めています。 ですが応用の必要の無い、決まった処理の場合、自分でも驚くほどのスピー ド・正確性でコードを書く事が出来るので、この時ばかりは暗記しておいて よかったと感じるのですが…。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

メリットとしては美しいコードを元に学習すれば、自力でコードを書く 場合も自然に美しいコードになるということ。 ただ参考書といえども、とんでもない書き方をしているものもあるので それが質問者さんの基礎になってしまうとかなりきびしいですね。 暗記する=考えてコードを書くではないので、問題解決力はそれほど つかないですね。もちろん「こういう場合はこういうコードを書いた なぁ」というケーススタディは必ず役に立つので、なにもやらないよりは 暗記だけでもしておいたほうがいいのでしょうけど、経験のない 問題は極端に解決がしづらくなります。 数学の問題集を答えを見ながらやる・・・という感じですかねぇ。 自分で解いた気になっても身についていないので、似たような問題 なら解けるでしょうけど、ちょっと応用がはいると、とたんに ギブアップになるような・・。

tocread
質問者

お礼

ありがとうございます。 暗記対象によって身につく書き方が変わる、というのは、言われてみれば 確かにその通りですね。 美しいコード、とんでもない書き方をしているコードを見分けるスキルも まだ持っておらず、とりあえず購入した書籍を暗記しているのですが、 これが美しいコードなのかどうか、判断出来ていません。 これからいろんな書籍を読んで、美しいコードとは何たるかを模索してい きたいと思います。 いずれにせよ、自分で考えてコードを書いているわけではないので、 仰るとおり、少し応用したものを試そうとすると、途端にギブアップの状 態です。いろんなコードを暗記して、場面によって頭の中の引き出しから 引っ張ってくる、というイメージがあったのですが、なかなか難しいですね。

  • tompink
  • ベストアンサー率50% (6/12)
回答No.1

私は比較的規模が大きいシステムを作ったことがありますが,プログラムを暗記したことはありません。すべてよく使いそうなものをサブルーチンや,オブジェクト指向のやり方で初期の段階で作っておき,それを一部にまとめておき,使いたいときにそこから読み込むというやり方をとっています。 ただし,最低限のコマンドは暗記しなければ意見ませんが。

tocread
質問者

お礼

ありがとうございます。専門家の方のお話は大変ためになります。 なるほど、現場では別にまとめておいて、それを利用していくという方法をとられているのですか。やはり暗記のメリットは無いのでしょうか。

関連するQ&A

専門家に質問してみよう