最近、ソースコードリーディングが瞑想の一つの手段として使えるんじゃないかと思っている。
ここでは、「ソースコードリーディングは座禅に似ている」と書いてある。
もちろん、改修目的での、目的を持ったソースコードを読むの時は違うかもしれないが、例えば、趣味でソースコードを眺める。勉強でソースコードを眺める時は、だんだん瞑想に近い状態に変えていくことが可能かもしれない。
もちろん、「改修フェーズでのソースコード読み」が必要なように、「趣味や勉強でソースコードを眺めること」も必要である。両者は両輪のようになっていて、片方がなくなると、意味がなくなる。
自然言語の場合は、表している意味が誰の目にも明確である。だが、ソースコードの場合は、ソースコードのその部分がなんの意味を持つのか、全体的な構造を頭に入れないと知ることはできない。
言い換えれば、一部分に集中しすぎても行けないし、全体に発散しすぎてもいけない、ある部分に、あまりにも意味を求めすぎると苦しくなるし、全く意味を求めないとこれも逆に苦しくなる。成果を焦るとダメだし、成果を求めなくてもダメだ。
明確に意味がわかっていることは稀なので、曖昧さに耐えないとけない。
今に集中しないと、ソースコードを読むことはできない。
ロジックの流れを感じないといけないし、それは、川の流れを見るようなものだと思う。
読者にはクリスチャンやイスラム教徒もいるかもしれないが、個人的には、ソースコードを読んで理解する、ことが、仏教的な修行になるんじゃないかと思っている。
もちろん科学的な根拠なんてないし、誰かえらい人が研究してほしいなと思う。
バンデューラという、認知行動療法のえらい人は、1977年に著した論文の中で以下のように述べています。
「人は単に刺激に反応しているのではない。刺激を解釈しているのである。刺激が特定の行動の生じやすさに影響するのは、その予期機能によってである。刺激と反応が同時に生じたことによって、自動的に結合したためではない」
つまり、ソースコードリーディングが辛くなるのは、それに対する「反応」があんまり正しくないものだったりする。つまり、ソースコードリーディングに対する「正しい反応」を身につけることによって、ソースコードリーディングができるようになるのではということだ。
あと、僕自身の持っている仮説として、「人間が何かを眺めていると、自分では何も考えていないように見えても、処理はちゃんと進んでいる」というものがある。言い換えれば、「僕自身が(あるいはあなたが)ソースコードを眺めている時は、自分では何も考えが進んでいないように見えても、脳は解釈するための処理を進めている」というものである。睡眠中に脳内でソースコードの処理が進んでいるのかもしれない。
言い換えれば、最初は眺めているだけでいい、わけわからなくていい、毎日読むこと。睡眠はちゃんと取ること。飯食うこと。歯を磨くこと。読書百遍義自ら見る。そういう戦略で僕は読んでいる。
この戦略は、おそらくソースコード読み特有の戦略だ。日本語、英語などの自然言語では違う戦略だ。僕の今書いている文章を日本人で理解できないことは稀だろう。それは、日本語が人に明示的に意味を伝えるための言語だからだ。でも、Linxuカーネルが、ほとんどのC言語プログラマーに理解できるであろうか。
だが、コンピュータ言語は、それがプログラマーにとってどういう意味を持つか、コンピュータ内でどう動くかが、明確な言語で書かれておらず、その構造自体に意味があったりする。
その構造を把握する必要があるんじゃないだろうか。
多分、ソースコード読みと、自然言語読みにおいての違いは、「単位時間当たりに取得できる意味の量」という側面もあると思う。
ソースコード読みの場合は、構造の情報はいっぱい入ってくるけど、意味は自分で見出さなくてはいけない。逆にこういう状況は、一度意味を取得できたら、感動するし、忘れないんだと思う。
その取得した、「意味」は、あなたが発見したものだ。そういう意味で、僕はソースコード読みの方が快適に勉強できる。