プログラムの学習・理解には、「必然性を感じる心」が大切

  • 投稿 : 2015-08-05
そんなふわっとした「抽象化」という言葉ですが、わからないときは逆の言葉の意味を考えて見るといいでしょう。「抽象的」の反対は「具体的」ですね。つまり、「抽象化」というのは「具体的じゃない状態にする」ということだと思えばいいでしょう。まだちんぷんかんぷんですね。例で考えてみましょう
プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

上記の引用先の文章は、僕からしたら違和感ありまくりなんですけど・・・。

まあ、なんか違うとおもうけど、分かったつもりにさせて、前に進むことが出来るという意味では素晴らしいのかもしれないなぁと思う。ただこの方法論は、他人から与えられた方法論だったらすぐにつまずくと思う。つまり、毎回そういうわかったつもりにさせてくれる人が必要って言う話。


必然性(理由)を感じる心

こうしたほうが便利でしょう?
こうしたほうが読みやすいでしょう?
こうしたほうがシンプルにかけるでしょう?
こうしたほうが安全でしょう?
こうしたほうが無難でしょう?

「そういう感覚」=「必然性」は、プログラム経験がある程度必要なんですね。だから学習したことを本当に理解できるまでには時間が必要なことが多いわけです。

で、本当に理解できたかなぁ?と思う瞬間と言うのはあるわけですが、多くの人はそこまでで十分なのでそこで終わりです。ただしこの時点では理解したことを言語化できていないので、人に伝える・教えるという部分に関しては無理があるのは事実かと思います。

哲学みたいなものは、クソ

「こうあるべきだから、こう書くべき」

この路線の人たちのいうことは、プログラムの学習をする上では個人的には害になると思うので、あまり話を聞かない方がよいかなぁと思う。

プログラミングは、芸術であり、数学でありとかなんか美化したようなわけのわからないことを言いだす人たちにも、初学者は近づかない方がよいと思う。

とりあえずは、目の前のプログラミングという道具をそれなりに便利に使えることを、初学者は目指すべきだとは思う。
習うより、慣れろみたいな路線も、そういう路線だと思う。

思考ロジックは、パターン化されるので

一回理解して習得してしまうと、必然性関係なく、その方法論でプログラミングするようになるかとは思う。
必然性ないからと言って、わざわざ別の書き方するほうが、面倒で非効率的だと感じるようになるからである。

ただそれだけなんだけど、そういうのを「統一された美しさ」という風に感じてしまうこともあろうとおもう。

やり方を覚えるのは、理由や理屈ではない

理由や理屈をしらないといけないという強迫観念のようなものがあって、理解を妨げているというのは多々あると思う。

抽象化でもなんでもいいんだけど、こういう手法「やり方」がありますというのを、数学の公式のようにただ覚えて、適用できるものには適用していけばよいだけなんですね。

ここで数学の公式の意味を知ろうと頑張ると、初学者は数学でいう練習問題を解かずに違う方法の学習をすることになり、結局前には進まないって言う結果になるかと思います。

あと、数学でいう練習問題を解くという部分も大切です。実際にプログラミングして使ってみるという経験がこの練習問題なんです。

分からないというのは、何が分からないのか?!

分からない、分からないと思いだけ強くて、実際に使ってみるというのをしないと、ますます分からなくなると思います。

で、実際に「分からない」と思っているものは何か?というのも大事なことだと思います。

プログラミング手法というのは、手法っていう名前の通りに
実は、機械的に適用できるようなものがほとんどなんですね

だから、分からなくてもとりあえず適用してみましょうか?っていうので問題ないわけです。

「適用の仕方が分からない=やり方」が分からないのなら、そのやり方を勉強すればいいわけです。
やり方は手法(手順)であって、概念ではないので、理解は難しくないはずです。

概念の理解は重要だけど・・・

いきなり概念を理解できる人は、当記事であれこれ言ってるようなことでは悩まないんですね。
いわゆる天才タイプ。

「世界はこうあるのが当たり前で、それが美しい」とかいう感覚の人。
つまり、天才タイプには、初学者は近づかない方がよい。

それはともかく、多くの人は概念をいきなり理解できないので、経験と時間をつかって概念を取得していくわけです。

そうして得られたものなので、天才タイプが感じる世界観とは別物になることが多いとは思う。

スポンサーリンク

タグ#IT