プログラミングに関するノウハウは大きく 3つにわかれると思う。 (またもや強引な分類)
- 1. 普遍的なノウハウ
- アルゴリズム, データ構造, オブジェクト指向, ツールボックスアプローチ, λ計算, etc.
- 2. システムのノウハウ
- 言語処理系, 計算機アーキテクチャ, OS, ネットワーク, etc.
- 3. 雑多なノウハウ
- 恣意的なAPI, 恣意的な言語仕様, 各種ソフトウェアの設定, 各種コマンドラインオプション, ソフトウェアのインストール作業, 各種システムの仕様の違い, 「最新技術」, etc.
プログラミングをする上では 3種類のノウハウすべてが多かれ少な かれ必要なのだけど、僕のような人は、ついつい 3番目の雑多なノ ウハウばかりが増えていってしまう。日々のネットサーフィンで得 られるノウハウは大抵これである。
雑多なノウハウというのは、「たまたまそうなっている」だけであっ て、時代が変わるとほとんど意味のないものになってしまう。せい ぜい昔話の種になるくらいである。
とはいえ、3 の経験的なノウハウから 2の理解を深めて 1の知識へ と結びつけるという流れもなくはない気がする。
p.s.
知人からいくつかのコメントをもらった。
- 問題は 3の海に溺れてしまうことだ
- 大学では 1や 2の「奥義」を教えられるが、中国拳法と 同じで、いきなり奥義を教えられても何もできない
- 2を 3で実践しようとしたら変な実装ではまった