STL lover

私はSTLが好きなんですが「実装の集合としてのSTL」が好きなわけではなかったりします.STLの実装なんてベンダ次第でどうにでもなるものだし,最低限のことをやってくれていればどうでも良いと思っています.もちろん,便利に使わせてもらってはいますが.
私が好きなのは「抽象的要求の集合,即ちコンセプトの集合としてのSTL」,平たく言うとSTLの設計が好きなわけです.
プログラミング(広く言うとソフトウェア工学)というものが他の工学と比較して特殊なこととして,あるゴールに対する選択肢の広大さがあると思います.何かプログラム書くと決めた瞬間にクラス階層から変数の名前に至るまで,広大な選択肢の海原へ放り出されるわけです.そのほとんどがどこに転んでも良い選択肢なわけですけれど,そのどこへ転んでも良い選択に際して自分は常に長いものに巻かれる,ということを意識しています.で,STLはその「巻かれるに足る長いもの」なわけです.
スタッククラスでpopするときに値を返すべきか?とか,連想コンテナに対する挿入メソッドの返り値はどうするべきか,とかそういうどうでも良い(どうでも良くないことも多々あるんですが)選択肢をどうするかってときに,「じゃあ,STLはどうしているのか?」と見返してみるのがすごく有効であると思っているのです.
で,何故ここまでSTLに追従しようとするのか?主に3つの理由によっています.

  • 標準である

これは言わずもがなで,これによって将来にわたって互換性・可搬性の観点から非常に有利になると考えます.

  • 学習コストを抑える

自分の設計指針をSTLに追従させることによって名前・事前条件・事後条件・シグネチャなど様々な事項に対する学習コストを一元化する狙いです.

  • 適切なrationaleに基づいている

STLはその道のプロフェッショナル達が設計したものであり,適切なrationaleに基づいたセオリーの塊だと思っています.これを徹底的に学習し,真似ることは非常に有意義だと思っています.
先日,boostのMLで「"empty"より"is_empty"の方が良くない?」「確かに"is_empty"の方が合理的だけど,STLとの一貫性から"empty"を推す」なんて議論があったんですが,こういう議論を生じさせるSTLの影響力こそがSTLの価値なんじゃないかって思ったりするわけです.
また,

150 :デフォルトの名無しさん :04/09/14 16:15:42
STLのコンテナって鼻毛が伸びるほど便利ですね。

151 :デフォルトの名無しさん :04/09/14 17:39:08
鼻毛のほうが便利だけどね。

152 :デフォルトの名無しさん :04/09/14 19:10:39
どういう便利な使い道があるのか教えて

153 :デフォルトの名無しさん :04/09/14 19:28:50
あえて意識して使うまでもないだろ。
日頃からどれだけのたくさんの不純物を
シャットアウトしてくれてると思ってるんだ。
その時点でSTLより上。
てなやりとりを見ていて,「だとすると自分にとってはSTLはまさに不純物(その他の選択肢)をシャットアウトする『鼻毛』だなぁ」なんて思ったりもする次第です. というわけで私は鼻毛 lover・・・間違えた,STL loverです. (´-`).。oO(結局,あんまり実のないこと書いただけかな・・・) #上の文章中の「STL」を「Boost」に変えてもだいたい当てはまります #ありゃ?なんでSTLスレが立ってるんだ?