
今年最大の技術本を読みました。
技術本って、読むのに時間がかかるし、知らないプログラム言語が出てきた途端に、別次元に転移されてしまうので、
読み進めるのがまあまあしんどいんですよね。
でも、エンジニアとして、学びになる事が多いし、書かれていることって、誰も教えてくれないから、自分で学びにいくしかないという思考で、読み進めています。
というわけで、今回はその読むのに時間がかかった「プログラマー脳」の書籍レビューをしたいと思います。
レビュー
★★★★☆
結論から言うと非常に良いです。
難点があるとすると、翻訳本なので、若干読みずらいです。
書いてある内容をよく読んで理解できると、本当にタメになる事が書かれているので、
理解できるまでがしんどいんですが、一連の流れに乗れるとスラスラ読めます。
・・・が、1回で10ページぐらい読むと、もう脳みそ沸騰状態になります(自分だけ?)。
そして肝心の内容に関しては、
基本的にこの書籍は、プログラムコードを読んで理解する時の脳の仕組みについて書かれています。
プログラム初心者の人や、初めて触るプログラム言語の時に、人は頭の中でどう言う理解をしていて、
熟練者の人とどう違うのかと言う、脳みそメカニズムが書かれているので、なんとなくわかっていても
ちゃんと言語化してくれると理解しやすいし、権威のある教授などがいろいろな実験をした結果が掲載されていました。
この書籍を読んで応用が効くポイントとしては、
会社などの技術組織での、マネジメントや、ペアプロする時の先輩が気にすべきことなどが書かれていたので、これは参考になりましたね。
この書籍から学んだポイント
コード速読法
プログラムというものは、読むことよりも書くことで理解することの方が多いため、
当たり前ですが、そのプログラム言語の理解を深めることこそが、
プログラムを早く読む事ができる方法でもあるわけです。
チャンクの認識
そして、重要になるポイントが、「チャンキング」という、チャンクというひとかたまりのパーツの理解です。
たとえば、jabvascriptで、次の様なコードを見た時に、
for(let i=0; i<10; i++){
console.log(i)
}
多くの人は、次の様にチャンク分解されます。
for
(let
i=0
; i
<10
; i++
){
console.log
(i
)
}
たったの3行のこのコードで、8チャンクの認識が必要になります。
こうして認識していくことを考えると、クソ長いプログラムを読み解くのにどのくらいのチャンク数を理解していかないといけないかを考えると、
そりゃあ、初心者の人は、気が遠くなる感じがするでしょうね。
デザインパターン
プログラムを理解する上で、デザインパターンを理解する事が最も効率的にプログラミング把握できるポイントだと思われます。
それはまるで、将棋の定石を丸暗記するようなもので(これは書籍にはかかれていません)
チャンクのパターンがデザインパターンで似た様な配置になることから、
ちゃんとしたデザインパターンで書かれていると、それを理解するのが容易になりやすい。
チャンクをさらにグルーピングしてグループチャンクの様な構造で理解していく事ができるからでしょう。
プログラム言語の理解法
基本中の基本として、プログラム言語の文法を理解する事が重要です。
これは、英語や中国語のような多言語を学ぶ時の学習法と極めて似ているのがわかります。
そうです、プログラム言語も、言語なんですよね。
言語には、文法があり、ちゃんとし他、ルールが存在することを理解できないと、実際の会話も、相手に話が通じません。
プログラム言語も、コンピュータに情報を伝える事ができなくなります。
当たり前ですが、こういう学習がめんどくさいと感じてしまう人は、向き不向きでいうところの向いていない人なんだと思いますね。
話を戻すと、文法もそうですが、そのプログラム言語の単語や、関数などの基本言語を覚えるという点も極めて重要なようですね。
これは丸暗記してでも覚えた方がいいです。
長期記憶と短期記憶
人の脳には、長期記憶領域と短期記憶領域があり、
その場で覚えたばかりのことは、短期記憶に蓄積され、
それを何度も繰り返すことで、長期記憶に保存される様になります。
ただし、短期記憶も、強烈な脳の刺激(感情や肉体的刺激)がある場合に、長期記憶に保存される場合もありますが、
プログラミングに関しては、繰り返すこと、継続することでの長期記憶化しかほぼありえないかもです。
唯一すぐに長期記憶にする事ができるポイントとしては、心の底から「おもしろい!」と感情を揺さぶる興味を感じた時ですね。
この書籍では、フラッシュカードなどで記憶をする方法などが説明されています。
貯蓄強度と検索強度
貯蓄強度というのは、
特定の情報がどれだけきちんと保持されているかということで、
検索強度というのは、
何かをどれだけ簡単に思い出せるかと言うことです。
一般的には、貯蓄強度は増えていく一方で、人は記憶を完全に消し去ることはできないのだそうです。
なので、それを以下に取り出す事ができるかという検索強度をどのようにレベルアップできるかが、重要みたいですね。
でも、朗報としては、人は特に一生懸命勉強しなくても、検索強度は高まる様ですよ。
それは、能動的に考える様にする事で、記憶の強度はどんどん向上していくようです。
ワーキングメモリ
脳の処理能力のことを
ワーキングメモリと言い、より複雑なプログラムコードを読む時に使われるのがこの領域だそうです。
短期記憶と同じ様な意味で使われることも多いのですが、違いは、短期記憶は、保持をすることで、ワーキングメモリは、情報を処理するということなんですね。
プログラミングの上級者が論理思考になるのは、このワーキングメモリが向上しているためかもしれません。
認知負荷のタイプ
ワーキングメモリを活用するために、認知する必要がありますが、その認知には負荷があり、タイプが存在するようです。
課題内在性負荷 その問題自体がどのくらい複雑か?
課題外在性負荷 その問題の妨げになる外部要因
学習関連負荷 考えたことを長期記憶に保持する際に引き起こされる認知的負荷
これらの負荷に対して理解することで、ワーキングメモリがより使いこなせる様になるようですね。
役割
初めて見るプログラミングを解釈するためには、メモを書いて理解するのが良いようです。
筆者は、以下のようなアイコンを、紙に印刷したプログラムに直接書き込むことで、
理解度を増すのだそうです。
そして実際にこれらをメモ書きしたのがこちら。
なんかかわいくなっていいですね。
割り込み
プログラミングを集中しながら行なっている時に、電話が鳴ったり、声をかけられたりして、集中が途切れてしまうことありますよね。
これは「思考の割り込み」はあまり良いと、誰もが思いますよね。
タスクを途中で中断してしまうこの割り込みは、脳にとってマルチタスクが走り出すため、なるべくならタスクを終了してから意識を向けるようにした方がいいみたいですね。
あとがき
この書籍、あまりにも内容が暑すぎて、読み進めるのがとても遅く、でもどの内容も腑に落ちるというか、自分磨きにとってもいい感覚を覚えました。
プログラマー脳とは、アルゴリズム脳とか、論理思考脳みたいなことを考えていたんですが、
書かれていた内容は泥臭いことも多いし、プログラムがまだよくわからなくてモンモンとしていた昔の自分に当てはめて
より効率的な脳の活用で、プログラミングの学習や仕事の作業を進めるヒントが満載な本でした。
もっと紹介したい内容がたくさんあったんですが、少し前を開けてもう一回読んでみたいと思うのでその時に続きというか、今回紹介しきれなかった事をブログに書いてみようと思います。
0 件のコメント:
コメントを投稿