プログラマー脳

プログラミングのルーティンワークを繰り返すと、それに適した脳の機能が育成されてゆきます。これをプログラマー脳と呼ぶ事にします。
更新日 2016-02-13

概要

プログラマー脳は、プログラムを実際に作成し、少し違った計算結果を求めようと別の値を入れたり、また応用したり、新しいアルゴリズムを 考える時に使われます。言葉に表すのは難しいのですが、例えるなら将棋や囲碁の達人が先の手を読む事を無意識に行うのに近いと思われます。 以下のパターンが考えられます。

知識

これはC言語の基本文法や汎用構文、ライブラリ関数などの利用方法の知識です。プログラム言語には整然とした方向性があって、それを習得 すると初めて使う関数やアルゴリズムも容易に使いこなせるようになります。

応用

知識と同じく、ある種オリジナルのデザインパターンをベースに改良を施した新しいアルゴリズムを設計する事です。試行錯誤が伴いますので、 頭をフル回転します。新しいアルゴリズムを生み出した時の快感は病みつきです。

デバッグ

デバッグには二種類あって、修正個所が特定できる場合とそうでない場合があります。ここで話題になるのは後者で、原因を特定するために ステップ実行をしたり、頭の中でプログラムの動作をトレースして確認したりします。とにかく問題がどの時点で起きるのかを特定するまでに大半の 時間を費やします。

モディファイ

既存のアルゴリズムを改良して、おもに信頼性や速度の向上を図ります。時には無駄に終わりますが、こういう地道な作業こそ勉強になって いるのです。またソースコードのパターンを作って保守性を高める事がメリットになります。

トレーニング

何か特別な方法があるのかもしれませんが、個人的には経験を繰り返し積む以外に無いんじゃないかなと思ってます。実際の試行錯誤こそ 最高のトレーニングです。

反復

繰り返し同じミスを経験する事で、それを効果的に軽減させるある種のパターンが構築されてゆきます。デバッグに伴うモディファイこそ プログラミングの本質かもしれません。独自のデザインパターンを生み出し、それを身にまとってレベルアップをしてゆきます。

新規知識の学習

「プログラマは自分の知ってる事しか知らない」という格言があります。井の中の蛙、視野狭窄。全くその通りで、上記デザインパターンよろしく、 最適化=拘縮という諸刃の面を持っています。よって他人のソースを積極的に読み、そこから新しいアルゴリズムやパターンに影響を受ける事が重要です。 しかしながら、大変な重労働ではあります。

アルゴリズムへのあくなき探求

ゲイツ会長の若き日に「コンピュータは単調すぎる。いかに違った方法で同じ計算を行えるかを考える事が面白い」といった趣旨の言葉を残しています。 まさにプログラマのモチベーションそのものです。結局プログラミングの楽しみはこれ以上でもなく以下でもない。だから時間を忘れて没頭できるのです。
このように考えると、初めてのプログラミングはファミコンのロードランナーでオリジナル面を作成してた時かもしれません。いや、幼少期に初めてやった 積み木遊びこそ真のプログラミングと言えるでしょう。砂遊びで作ったトンネルもしかり。だれもがみなプログラミングの楽しみを知っているのです。 感慨深いですね。

結論

プログラマー脳はプログラミング以外でも有効です。例えば現実の業務の効率化やミスの低減などはデバッグやモディファイであり、常に新しい アルゴリズムを構想する挑戦に他なりません。そしてその重労働に挑戦し解決に至らしめる手法やモチベーションこそ、プログラマー脳の持つ最大の メリットだと思うのです。
デメリットも多いにあります。物事の本質にこだわりすぎたり、メリットデメリットだけを強調して見てしまったり。ムダを楽しめないのも、この種の 人間の悪いクセです。この点は多いに反省すべきですが、もともとの性格までは変われないので、諦めてたりするのですが・・・。
この辺を両立できてる人もいるのでしょうが、羨ましい限りです。