Boost C++ Libraries は本当に便利なのか?
Boost C++ Libraries について、ちょっと愚痴をいってみたくなったので、好き放題書いてみたいと思います。
C++プログラマにとって、いまや Boost C++ Libraries は無くてはならない存在になりました。ところが、いや、だからこそ、いろいろ嫌なところも見えてきます。Boost C++ Libraries がさまざまな便利な機能を提供してくれていることは疑いの余地はありませんが、仕様がまったく安定しないことが大きな問題なのです。もうひとつは、各ディストリビューションがライブラリファイルに好き勝手な名前を付けるために、Makefile の互換性をとるのが非常に難しい点が挙げられます。もしかすると、私が知らないだけで画期的な方法があるのかもしれませんが...。
成果物をバイナリでしか頒布しない場合なら問題はないでしょう。しかし、ソースコードで頒布しなければならない場合には、これらは大問題です。Boost C++ Libraries に依存したライブラリはどうしているのか不思議になります。これも多分私が知らないだけでしょうが...。
最も安易にこうした問題を回避するには、Boost C++ Libraries のバージョンを固定してしまうしかないと思います。普通なら、バージョン〇〇以上のように指定するわけですが、〇〇と××と△△のバージョンだけ対応というように、曖昧さをなくさなければなりません。
そのように Boost C++ Libraries バージョンを固定してもまだ問題があります。数年が経過するとコンパイラの側のバージョンが上がってしまい、古いバージョンの Boost C++ Libraries ではコンパイルできなくなってしまうのです。結局、コンパイラのバージョンまで固定せざるを得なくなってしまいます。
別の解決策としては、仕様がコロコロ変わるような機能には手を出さず、比較的枯れた機能だけを使う(しかも、ヘッダをインクルードするだけで使えるものに限定する)というものです。しかし、それであれば TR1 だけを使うほうがましになってしまいます。古いコンパイラを切り捨てて比較的新しいコンパイラ(Visual C++ 2008 SP1 以上とか GCC 4.0 以上)だけを使うようにすれば、それもよいかもしれません。その場合、Boost C++ Libraries は不要になります。しかし、TR1 も暫定的なものであり、C++0x が一般的になれば、使えなくなったとしても不思議ではありません。だとすれば、これに依存し続けるのも不安が残ります。
C++0x はといえば、まだ正式な標準規格ではない以上、どうなるかわからないということもありますが、そもそも各処理系の対応状況もまちまちですので、やはり移植性に問題があります。
こんなわけでなかなかよい解決策が見つからないのですが、場合によっては車輪の再開発もやむを得ないのかもしれません。
この記事のトラックバックURL:
続・Boost C++ Libraries は本当に便利なのか?
from 株式会社きじねこ on 2010-07-27 (火) 00:28前回の記事に短時間でそこそこのアクセスがあったようですので、もう少し補足してみたいと思います。単なる愚痴なので、補足するのもおかしな話なのですが...
