プログラミングとパズル

no extension

昔は「プログラミングは数理パズル」だと思っていた。 今は「プログラミングはクロスワードパズル」だと思っている。

私は数理パズルが好きだ。 数理パズルの面白さは「与えられたルールのみで解くことができる」点にある。 一方, クロスワードパズルのようなタイプは「与えられたルールのみで解く」ことは絶対にできない。 クロスワードパズルを解くためには出題者と回答者の間で暗黙の知識「語彙」を共有していなければならない。 私のような語彙力のない人間にとってはクロスワードパズルはちょっと苦痛なのである。

私は昔, 「プログラミングは数理パズル」だと思っていた。 これは私が組み込み系の仕事を多くしていたことと関係があるかもしれない。 標準ライブラリなどもちろん使えず, ベクタテーブルからごりごり書いてた頃は, ソフトウェア・プログラミングは論理の世界だった。 チップの仕様と回路図と(使用するプログラミング言語の)言語仕様がルールの全て。 そこから問題(=要求)を解いていく(=実装していく)作業は, 数理パズルを解いていく過程によく似ていると思ったものだ。

今はそういう仕事はほとんどなくなった。 組み込みの仕事でさえ開発フレームワークの上で行われる。 「開発フレームワーク」は言わばプログラミングの「語彙」を集約していくシステムだ。 ターゲットや使用する言語について知っているだけではダメで, フレームワーク上で交わされる「語彙」をいかにうまく使いこなすかが鍵になっている。 そういう意味で昔のソフトウェア・エンジニアと今のエンジニアでは要求されるものが異なっている。

そういう変化の中で私は適応して生き残っていけるのだろうか, などと自問する今日この頃。

関連: