C ++ Boost kitaplıklarını kullanmanın avantajları nelerdir? [kapalı]


123

Bu yüzden, baştan sona okudum ve görünen o ki, Boost kitaplıkları pratikte çok kullanılıyor (benim dükkanımda değil). Bu neden? ve onu bu kadar harika yapan nedir?


10
Nitpick: Bu bir kısaltma değil, dolayısıyla BOOST değil, Boost (veya boost). Tabii ki bağırmıyorsanız;)
Niklas

10
@Niklas Önişlemci makrolarından herhangi birini kullandığınızda da BOOST = P
KitsuneYMG

@KitsuneYMG Sorunun yine de düzenlendiğini görüyorum, ancak OP'nin önişlemci kodunu düzenlemek için soru alanını kullanmadığına eminim;)
Niklas

3
@Nikias Ben sadece zeki biriyim = P. Bir adamın hobileri olmalı.
KitsuneYMG

C ++ Boost olmadan saçmalık :)
TriCore

Yanıtlar:


135

Boost çok yaygın bir şekilde kullanılmaktadır çünkü:

  • Açık kaynaklıdır ve hakem tarafından incelenmiştir.
  • STL'nin kaçırdığı geniş bir platform bağımsız işlevsellik yelpazesi sağlar .
  • Bir ikame olmaktan çok STL'nin tamamlayıcısıdır.
  • Boost geliştiricilerinin çoğu C ++ standart komitesindedir. Aslında, Boost'un birçok bölümünün bir sonraki C ++ standart kitaplığına dahil edildiği düşünülmektedir.
  • Güzel bir şekilde belgelenmiştir.
  • Onun lisans açık kaynak ve kapalı kaynak projelerine dahil edilmesini sağlar.
  • Özellikleri genellikle birbirine bağlı değildir , bu nedenle yalnızca ihtiyaç duyduğunuz parçaları bağlayabilirsiniz. [ Luc Hermitte'nin yorumu]

5
Ayrıca, boost alt kitaplıklarının birbirinden bağımsız olarak kullanılabileceğini de söyleyebiliriz (birkaç çekirdek kitaplık dışında). Örneğin boost.ublas kullanmak zorunda olmamız boost.shared_ptr kullandığımız için değil.
Luc Hermitte

Ansiklopedi girdilerine benzeyen cevaplar görmeyi seviyorum. Büyük miktarda malzeme elde etmeyi çok kolaylaştırır. +1
Tyler Smith

Görünüşe göre her kütüphane MPL'ye bağlı ...
Viktor Sehr

Boost, bir kez yazmaya, platformlar arası geliştirmeye ve kullanım doğru mu?
FilBot3

Ticari kullanım için ücretsiz mi?
Mayur

39

Ana sayfadan:

"... dünyadaki en saygın ve ustalıkla tasarlanmış C ++ kütüphane projelerinden biri." - Herb Sutter ve Andrei Alexandrescu, C ++ Kodlama Standartları

"Madde 55: Kendinizi Boost ile tanıştırın." - Scott Meyers, Etkili C ++, 3. Baskı.

"Çoğu programcı için bariz çözüm, ihtiyaç duyulan hizmetlerden bağımsız, zarif ve verimli bir platform sağlayan bir kitaplık kullanmaktır. Örnekler BOOST ..." - Bjarne Stroustrup, Soyutlama, kitaplıklar ve C ++ 'da verimlilik

Öyleyse, yaygın olarak kullanılan ve kabul edilen bir dizi kitaplıktır, ancak neden buna ihtiyacınız olsun?

Eğer ihtiyacın varsa:

  • regex
  • işlev bağlama
  • lambda fonksiyonları
  • birim testleri
  • akıllı işaretçiler
  • kopyalanamaz, isteğe bağlı
  • seri hale getirme
  • genel tarihler
  • taşınabilir dosya sistemi
  • dairesel tamponlar
  • araçları yapılandır
  • genel görüntü kitaplığı
  • TR1
  • İş Parçacığı
  • uBLAS

ve daha Kod C ++, bir göz varsa Boost .


23

Standart kitaplığa birçok eksik şey ekledikleri için, o kadar ki bazıları standarda dahil ediliyor.

Boost insanlar yalan söylemiyor:

Bir kuruluş neden Boost kullanmalıdır?

Tek kelimeyle Verimlilik. Boost gibi yüksek kaliteli kitaplıkların kullanımı, ilk geliştirmeyi hızlandırır, daha az hataya neden olur, tekerleğin yeniden icat edilmesini azaltır ve uzun vadeli bakım maliyetlerini azaltır. Ve Boost kitaplıkları fiili veya de jure standartlar haline gelme eğiliminde olduğundan, birçok programcı bunlara aşinadır.

Boost kitaplıklarından on tanesi C ++ Standart Kitaplığı'nın TR1'ine dahil edilmiştir ve bu nedenle daha sonraki tam standardizasyon için planlanmıştır. TR2 için daha fazla Boost kitaplığı var. Boost kitaplıklarını kullanmak, bir kuruluşa yeni teknolojileri benimseme konusunda bir başlangıç ​​sağlar.

Birçok kuruluş, Adobe Acrobat Reader 7.0 gibi Boost ile uygulanan programları zaten kullanıyor.


16

Birkaç Boost sınıfı çok kullanışlıdır (shared_ptr), ancak Boost'taki özellikler ve kavramlarla biraz çıldırdıklarını düşünüyorum. Derleme süreleri ve büyük ikili boyutlar, şablon ağırlıklı herhangi bir kodda olduğu gibi, Boost ile tamamen çılgın. Bir denge olmalı. Boost'un bulup bulmadığından emin değilim.


10
Boost'un bir kitaplık değil, çok sayıda olduğunu unutuyorsunuz. Ek olarak, büyük boyutu dengelemeniz ve işlevselliğe göre derlemeniz gerekir. Özellikler ve kavramlar, gelişimde çok yardımcı olur. Derleme zamanı, gerçekten de ödeyeceğiniz küçük bir bedeldir.
Konrad Rudolph

8

C ++ programlamaya daha modern bir yaklaşım sağlayan kitaplıklar ekler.

Tecrübelerime göre, birçok C ++ programcısı gerçekten 1990'ların başındaki C ++ programcılarıdır, hemen hemen C ++ sınıfları yazarlar, çok fazla jenerik kullanımı değildir. Daha modern yaklaşım, yazılımı daha dinamik diller gibi bir şekilde bir araya getirmek için jenerikleri kullanır, ancak yine de sonunda yazım denetimi / performansı elde edersiniz. Bakması biraz çirkin. Ancak sözdizimi sorunlarını bir kez aştığınızda, gerçekten oldukça güzel. Boost, öğeleri kolayca oluşturmak için ihtiyacınız olan birçok aracı sağlar. akıllı işaretçiler, işlevler, lambdalar, bağlamalar, vb. Daha sonra, ağ oluşturma, regex, vb. Gibi şeyler sağlamak için C ++ yazmanın bu daha yeni yöntemini kullanan artırma kitaplıkları vardır.

Çok sayıda döngü yazıyorsanız veya işlev nesnelerini elle çeviriyorsanız veya bellek yönetimi yapıyorsanız, kesinlikle artırmayı kontrol etmelisiniz.


8

BOOST, birçok C ++ projesinde ortak olan ihtiyaçları karşılayan bir kütüphane koleksiyonudur. Genellikle, doğruluk, yeniden kullanılabilirlik, taşınabilirlik, çalışma zamanı performansı ve alan verimliliğine BOOST uygulama kodunun okunabilirliğine göre öncelik verirler veya bazen zamanları derlerler. Eksiksiz üst düzey işlevsel gereksinimleri (örneğin uygulama çerçeveleri) kapsamama eğilimindedirler ve bunun yerine (neyse ki) uygulama tasarımını dikte etmeden veya baskın olmadan daha özgürce birleştirilebilen yapı taşları sunarlar.

BOOST'u kullanmayı düşünmenin önemli nedenleri şunları içerir:

  • çoğu kütüphane oldukça iyi test edilmiş ve tasarlanmıştır: aynı sorun alanında evde-demleme çözümlerine sahip kişilerle karşılaştırıldığında genellikle bazı mükemmel programcılar tarafından makul derecede sağlam bir inceleme alırlar ve kapsamlı gerçek dünya geri bildirimi toplamak için yeterince yaygın olarak kullanılır
  • zaten yazılmış ve muhtemelen çözümün değil
  • oldukça taşınabilir (ancak bu kitaplığa göre değişir)
  • C ++ topluluğundaki daha fazla kişi, kodunuz konusunda size yardımcı olmak için bir avantaja sahip olacak
  • BOOST, genellikle C ++ Standardına giriş için kanıtlayıcı bir zemindir, bu nedenle kodunuzu gelecekteki Standartlar ile uyumlu olacak şekilde yeniden yazmak için daha az işiniz olur sans BOOST
  • topluluk talebi nedeniyle, derleyici satıcılarının BOOST kullanımıyla ilgili doğruluk sorunlarını test etme ve bunlara tepki verme olasılığı daha yüksektir
  • Arttırılmış kitaplıklara aşinalık, başka projelerde, muhtemelen şu anda yazabileceğiniz kodun yeniden kullanılamayacağı başka şirketlerde benzer işler yapmanıza yardımcı olacaktır.

Kütüphaneler burada bir veya iki satırda açıklanmaktadır: http://www.boost.org/doc/libs/ .




3

Temelde Standardın ne olacağının özetini artırın, Boost'un sağladığı tüm meslektaş incelemeleri ve kullanımının yanı sıra, bağımlılıklarınız için oldukça iyi bir anlaşma elde ettiğinizden oldukça emin olabilirsiniz.

Ancak çoğu mağaza Boost'u kullanmaz, çünkü bu bir Dış Bağımlılıktır. Ve gerçekte Dış bağımlılıkları azaltmak da çok önemlidir.


3

Yükseltme, C ++ için .NET Framework'ün C # için olduğu gibidir, ancak daha küçük bir ölçekte olabilir.


2

Dosya sistemi kitaplığından biraz çıkıyorum ve boost :: shared_ptr oldukça şık. Başka şeyler de yaptığını duydum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.