それで、私は読んでいますが、Boostライブラリは実際にはよく使われているようです(ただし、私のショップではありません). どうしてこれなの?そして何がそれをとても素晴らしいものにしていますか?
11 に答える
ブーストは、次の理由で非常に広く使用されています。
- オープンソースであり、査読済みです。
- STL が見逃していた、プラットフォームに依存しない幅広い機能を提供します。
- これは STL を置き換えるものではなく、補完するものです。
- Boost 開発者の多くは、C++ 標準委員会に参加しています。実際、Boost の多くの部分は次期 C++ 標準ライブラリに含まれると考えられています。
- それはうまく文書化されています。
- そのライセンスにより、オープンソースおよびクローズドソース プロジェクトに含めることができます。
- その機能は通常、相互に依存していないため、必要な部分のみをリンクできます。【リュック・エルミットのコメント】
ホームページから:
「...世界で最も高く評価され、専門的に設計されたC++ライブラリプロジェクトの1つです。」—ハーブサッターとアンドレイアレキサンドレスク、C++コーディング標準
「アイテム55:ブーストをよく理解してください。」— Scott Meyers、Effective C ++、第3版。
「ほとんどのプログラマーにとって明らかな解決策は、必要なサービスに依存しないエレガントで効率的なプラットフォームを提供するライブラリを使用することです。例はBOOSTです...」— Bjarne Stroustrup、抽象化、ライブラリ、およびC++での効率
それで、それは広く使われ、受け入れられているライブラリの範囲ですが、なぜあなたはそれを必要とするのでしょうか?
必要な場合:
- 正規表現
- 関数バインディング
- ラムダ関数
- ユニットテスト
- スマートポインタ
- コピー不可、オプション
- シリアル化
- 一般的な日付
- ポータブルファイルシステム
- 循環バッファ
- config utils
- 汎用画像ライブラリ
- TR1
- スレッド
- uBLAS
それらは標準ライブラリに多くの欠けているものを追加するため、それらのいくつかは標準に含まれるようになります。
ブーストの人々は嘘をついていません:
組織が Boost を使用する必要があるのはなぜですか?
一言で言えば、生産性。Boost のような高品質のライブラリを使用すると、初期開発が加速され、バグが少なくなり、車輪の再発明が減り、長期的なメンテナンス コストが削減されます。また、Boost ライブラリはデファクトまたはデジュールの標準になる傾向があるため、多くのプログラマーは既にそれらに精通しています。
Boost ライブラリのうち 10 個は C++ 標準ライブラリの TR1 に含まれているため、後で完全に標準化される予定です。TR2 のパイプラインには、さらに多くの Boost ライブラリがあります。Boost ライブラリを使用すると、組織は新しいテクノロジを採用する際に有利なスタートを切ることができます。
多くの組織は、Adobe Acrobat Reader 7.0 など、Boost で実装されたプログラムを既に使用しています。
いくつかの Boost クラスは非常に便利です (shared_ptr) が、Boost の特性と概念に少しおかしくなったと思います。コンパイル時間と巨大なバイナリ サイズは、テンプレートを多用するコードの場合と同様に、Boost ではまったく正気ではありません。バランスが必要です。Boostがそれを見つけたかどうかはわかりません。
BOOST は、多くの C++ プロジェクトに共通するニーズを満たすライブラリのコレクションです。一般に、BOOST 実装コードの読みやすさやコンパイル時間よりも、正確性、再利用性、移植性、実行時のパフォーマンス、およびスペース効率を優先します。それらは完全な高レベルの機能要件 (アプリケーション フレームワークなど) をカバーしない傾向があり、代わりに (ありがたいことに) アプリケーションの設計を指示したり支配したりすることなく、より自由に組み合わせることができるビルディング ブロックを提供します。
BOOST の使用を検討する重要な理由は次のとおりです。
- ほとんどのライブラリは十分にテストされ、設計されています。通常、同じ問題領域で自作のソリューションを使用する人々と比較して、一部の優秀なプログラマーによって適度に健全なレビューが得られ、広範な実世界のフィードバックを収集するのに十分広く使用されています。
- それはすでに書かれており、あなたの解決策はおそらくそうではありません
- それはかなり移植性があります(ただし、ライブラリごとに異なります)
- C++ コミュニティのより多くの人々が、あなたのコードを支援する上で有利なスタートを切るでしょう。
- BOOST は、多くの場合、C++ 標準を導入するための証明の場であるため、BOOST を使用しない将来の標準と互換性があるようにコードを書き直す作業が少なくなります。
- コミュニティの要求により、コンパイラ ベンダーは、BOOST の使用に関する正確性の問題をテストして対応する可能性が高くなります。
- ブースト ライブラリに精通していると、他のプロジェクトで同様の作業を行うのに役立ちます。おそらく他の企業では、現在記述しているコードが再利用できない可能性があります。
ライブラリについては、http ://www.boost.org/doc/libs/ で 1 行または 2 行で説明されています。
C++ プログラミングへのより現代的なアプローチを可能にするライブラリを追加します。
私の経験では、多くの C++ プログラマーは実際には 1990 年代初期の C++ プログラマーであり、ほとんど C++ クラスを作成しており、ジェネリックはあまり使用していません。より現代的なアプローチでは、ジェネリックを使用して、動的言語に似た方法でソフトウェアを一緒に構成しますが、最終的には型チェック/パフォーマンスが得られます。見るのは少し醜いです。しかし、構文の問題を乗り越えれば、それは本当に素晴らしいことです。Boost は、簡単にコンテンツを作成するために必要な多くのツールを提供します。スマート ポインター、関数、ラムダ、バインディングなど。次に、ネットワーク、正規表現などを提供するために C++ を記述するこの新しい方法を利用するブースト ライブラリがあります。
たくさんの for ループを書いたり、関数オブジェクトをハンド ローリングしたり、メモリ管理を行ったりしている場合は、boost を確認する必要があります。
C++ 標準ライブラリはそれほど完全ではないためです。
Kevlin Heneyの関与があるものはすべて注意する必要があります。
Boost は C++ に対するもので、.NET Framework が C# に対するものと似ていますが、規模は小さいかもしれません。
Boost は基本的に、Boost が取得するすべてのピア レビューと使用法に加えて、標準がどうなるかの概要です。
ただし、Boost は外部依存であるため、ほとんどのショップは Boost を使用しません。実際には、外部依存関係を減らすことも非常に重要です。
私はファイルシステム ライブラリを少し使用していますが、boost::shared_ptr はかなり気の利いたものです。他にも効果があると聞きます。