ぐるぐるとまだ回る君の影 どこにも行けずに春が来る
社会人になって一年が経過した。
同時に、プログラマになって一年だ。
今自分の職業について思っていることを徒然に書いてみる。
プログラマはナチュラリスト
予定表を作るためにはナチュラリストである必要がある。
といっても、別に山や野原に出る必要はない。
あるプログラムの振る舞いを決めるうえで、「何が自然か」ということを知っていなければならない、ということだ。
これはたとえば、数列が与えられたとき、そのルールを見抜く(自ら設定する)ような力だ。
有限数列が与えられて、自分の好きな数値をそのあとにもう一項加えてよいのなら、どうするだろうか。
自分の誕生日を入れる?
それとも、好きな人の誕生日だろうか?
しかし、プログラマなら、次の項は何が自然かを必死になって考えるはずだ。
プログラマはアルゴリズムアプリケータか、アルゴリズムエンジニア
プログラマが作る予定表は誰でも意味が分かるように書かれている必要があるので、必然的に何らかのアルゴリズムがそこには記述されることになる。
もし幸いにも予定表の目指している「目的」と同じモノに向かって既に歩いた人がいるなら、プログラマはその人のレガシーを用いて予定表を作る。
その場合はプログラマはアルゴリズムアプリケータだ。
しかしさらに幸いなことに、人類にとっての大きな一歩を踏み出すことを余儀なくされるのであれば、プログラマはアルゴリズムエンジニアだ。
プログラマはトランスレータ
プログラマが作り上げる予定表は、残念ながら最終的には「誰か」に渡さなければならない。
そうしないとだれもその予定表の存在を認識できない。
認識できないものは存在しないので、そうするしかないのだ(プラグマティズムですよ)。
実のところプログラマはまず最初に、内言語で予定表を作り上げる。
ここをああして、あれをこうして、そこでそうすれば、目的地にたどり着きそう…。
それから、この内言語を外言語に翻訳するのだ。
外言語はプログラミング言語が一般的だが、フローチャートだったりUMLだったりすることもある。
もしかしたら、自然言語かもしれないし、ハードウェア的な実装かもしれない。
このとき、プログラマはトランスレータだ。