バッドノウハウとグッドラッパー

AVRでSDカードアクセスを行うモジュールをCで記述してエンディアンの問題にぶつかる。SDカードのアドレス指定は4バイトビッグエンディアンなのだけど、AVRの整数型はリトルエンディアンになっている。これを扱いやすくするためにlongとchar4バイトの共用体を定義し、変換過程はマクロで隠蔽して、とかいう実装をしている。はなから4バイトビッグエンディアンな演算ライブラリを作ればいい、という考え方もあるけれど、それならアセンブラで作る(というか、PICではそれをやった)。
それはそれとして、この共用体を使った型(?)変換って、バッドノウハウとか言われるんだろうなあとか思うし、エンディアン変換なんて意識しないで済むならそれにこしたことはないなあとも思うのだけど、意識しなければこういう発想の訓練もされないままだろう、とも思う。
たかがエンディアン変換の技法で発想の豊かさとは言わないけれど、でも、トリッキーなコーディングをするには、それを実現できるだけの柔軟な考え方が求められる一面があるのは確かで、その力が創造性のポテンシャルとなる部分もあるのではないかとも思う。
おそらく、バッドノウハウの一番の悪は、それがまさに「ノウハウ」であり、それを暗記することで満足させ、自ら考えることをやめさせてしまったところにあるのではないかと思っている。それはマニュアリズムにも通じることではないかとも思う。