日々プログラムを書く仕事をしていると、「なんかこのコードは読みにくいな」と理解に時間がかかるコードもあれば、「あー、こういうことね!」とすぐに内容がわかるものもあります。
それは単純に自分が知らないプログラミング言語や業務知識を必要とするものだから時間がかかるのか、はたまた以前に自分が書いたコードと似ているからもしくは簡単な処理しかしていないからなのでしょうか。

本書は「コードを読む」という、あまり焦点があてられてこなかったプログラミングの領域に、認知科学からアプローチする内容になっています。

3つの混乱

コードを読むときによく理解できない原因として、知識不足、情報不足、処理能力不足が挙げられています。

知識不足はそのプログラミング言語の知識がなく構文がわからないというようなときです。また、その言語自体はよく知っているが、処理内容が別の場所に書いてあり内容がよくわからないといった場合は情報不足に当てはまります。処理能力不足はfor文でループさせながら変数の値を変化させる場合などに、頭の中で変数の値を考えながらコードを読む必要があり頭がパンクしてしまうといった場合です。

混乱の原因

これら3つの混乱を引き起こす認知プロセスを考えると、次のようになるそうです。

  • 知識不足 = 長期記憶の問題
  • 情報不足 = 短期記憶の問題
  • 処理能力不足 = ワーキングメモリの問題

長期記憶は何年も前の情報など長い期間保持された記憶のことで、短期記憶は情報を一時的に記憶しておくところになります。ワーキングメモリは実際に思考をする場所です。PCに例えると次のような感じになります。

  • 長期記憶 = HDD
  • 短期記憶 = RAM
  • ワーキングメモリ = プロセッサ

なにか思考をする際はこれら3つを連携して使う必要があります。情報は短期記憶に入り、長期記憶から関連する情報を出してきて、ワーキングメモリで思考するといった形です。
こういった認知プロセスがコードを読むうえでどう作用するのか、そして読みやすいコードとはどういったものなのかといったことが説明されています。

コードを読む以外にも

読みやすいコードを考えることは、読みやすいコードの書き方に繋がります。このあたりはリーダブルコードを読んだことがある方なら納得されるのではないでしょうか。

また、仕事におけるプログラミングでは複数人での共同作業が欠かせません。読みやすいコードにはどんな特性があるのか、新規参画者やプログラミング未経験者へのオンボーディング(受け入れ)はどういう考えで対応すればよいのかということにも、上記の認知プロセスをもって説明がなされていました。

まとめ

「プログラマー脳」というタイトルから、なんとなく難しいイメージをもって読み始めましたが、自分が経験したことがある事象についてこういう説明ができるのかと納得できる部分もありました。
読みにくいコードだなと感じる前にはこういうことが脳で起こっているのかも、と少し興味深くなりました。