Jakie są zalety korzystania z bibliotek C ++ Boost? [Zamknięte]

123

Czytałem więc i wydaje się, że biblioteki Boost są bardzo często używane w praktyce (chociaż nie w moim sklepie). Dlaczego to? i co sprawia, że ​​jest tak wspaniały?

jdt141
źródło
10
Nitpick: To nie jest akronim, więc jest to Boost (lub boost), a nie BOOST. Chyba że krzyczysz oczywiście;)
Niklas
10
@Niklas Działa również BOOST, gdy używasz któregokolwiek z makr preprocesora = P
KitsuneYMG
@KitsuneYMG Widzę, że pytanie i tak zostało zmienione, ale jestem prawie pewien, że OP nie używał pola pytania do edycji kodu preprocesora;)
Niklas
3
@Nikias Jestem po prostu mądrym dupkiem = P. Facet musi mieć hobby.
KitsuneYMG
C ++ to bzdura bez Boost :)
TriCore

Odpowiedzi:

135

Boost jest używany tak często, ponieważ:

  • Jest open source i recenzowany.
  • Zapewnia szeroki zakres funkcji niezależnych od platformy, których brakowało w STL.
  • Jest raczej uzupełnieniem STL niż zamiennikiem.
  • Wielu programistów Boost jest w komitecie standardowym C ++. W rzeczywistości wiele części Boost jest uważanych za dołączone do następnej biblioteki standardowej C ++.
  • Jest to ładnie udokumentowane.
  • Jego licencja umożliwia włączenie do projektów typu open source i open source.
  • Jego funkcje zwykle nie są od siebie zależne, więc możesz łączyć tylko te części, których potrzebujesz. [ Komentarz Luc Hermitte ]
czarne skrzydło
źródło
5
Ponadto możemy również powiedzieć, że biblioteki podrzędne boost mogą być używane niezależnie od siebie (z wyjątkiem kilku podstawowych bibliotek). Nie dlatego, że używamy boost.shared_ptr, musimy na przykład użyć boost.ublas.
Luc Hermitte
Uwielbiam widzieć odpowiedzi, które wyglądają jak wpisy w encyklopedii. To sprawia, że ​​tak łatwo jest uzyskać dużą ilość materiału. +1
Tyler Smith
Choć wydaje się, że każda biblioteka jest zależna od MPL ...
Viktor Sehr
Boost pozwala na jednorazowy zapis, czy programowanie i użytkowanie na wielu platformach jest prawidłowe?
FilBot3
Czy jest darmowy do użytku komercyjnego?
Mayur
39

Ze strony głównej:

„... jeden z najbardziej cenionych i profesjonalnie zaprojektowanych projektów bibliotek C ++ na świecie”. - Herb Sutter i Andrei Alexandrescu, C ++ Coding Standards

„Punkt 55: Zapoznaj się z Boost”. - Scott Meyers, Effective C ++, 3rd Ed.

„Oczywistym rozwiązaniem dla większości programistów jest użycie biblioteki, która zapewnia elegancką i wydajną platformę niezależną od potrzebnych usług. Przykłady to BOOST ...” - Bjarne Stroustrup, Abstrakcja, biblioteki i wydajność w C ++

Jest to więc szereg powszechnie używanych i akceptowanych bibliotek, ale dlaczego miałbyś tego potrzebować?

Jeśli potrzebujesz:

  • wyrażenie regularne
  • powiązanie funkcji
  • funkcje lambda
  • testy jednostkowe
  • inteligentne wskazówki
  • nie do kopiowania, opcjonalne
  • serializacja
  • ogólne daty
  • przenośny system plików
  • koliste bufory
  • config utils
  • ogólna biblioteka obrazów
  • TR1
  • wątki
  • uBLAS

i nie tylko, kiedy programujesz w C ++, spójrz na Boost .

Sébastien RoccaSerra
źródło
23

Ponieważ dodają wiele brakujących rzeczy do standardowej biblioteki, tak bardzo, że niektóre z nich są włączane do standardu.

Boost ludzie nie kłamią:

Dlaczego organizacja powinna używać Boost?

Jednym słowem, produktywność. Korzystanie z wysokiej jakości bibliotek, takich jak Boost, przyspiesza początkowy rozwój, skutkuje mniejszą liczbą błędów, ogranicza konieczność ponownego wynalezienia koła i obniża długoterminowe koszty utrzymania. A ponieważ biblioteki Boost stają się de facto lub de iure standardami, wielu programistów już je zna.

Dziesięć bibliotek Boost jest uwzględnionych w TR1 biblioteki standardowej C ++, a więc ma zostać później poddana pełnej standaryzacji. Więcej bibliotek Boost jest w przygotowaniu dla TR2. Korzystanie z bibliotek Boost daje organizacji przewagę we wdrażaniu nowych technologii.

Wiele organizacji korzysta już z programów zaimplementowanych w Boost, takich jak Adobe Acrobat Reader 7.0.

Vinko Vrsalovic
źródło
16

Kilka klas Boost jest bardzo przydatnych (shared_ptr), ale myślę, że trochę oszaleli z cechami i koncepcjami w Boost. Czasy kompilacji i ogromne rozmiary plików binarnych są całkowicie szalone dzięki Boost, tak jak ma to miejsce w przypadku każdego kodu zawierającego szablony. Musi być równowaga. Nie jestem pewien, czy Boost go znalazł.


źródło
10
Zapominasz, że Boost to nie jedna biblioteka, ale wiele. Dodatkowo musisz zrównoważyć duży rozmiar i czas kompilacji z funkcjonalnością. Cechy i koncepcje są bardzo pomocne w rozwoju. Czas kompilacji to naprawdę niewielka cena, jaką trzeba za to zapłacić.
Konrad Rudolph
8

Dodaje biblioteki, które pozwalają na bardziej nowoczesne podejście do programowania w C ++.

Z mojego doświadczenia wynika, że ​​wielu programistów C ++ to tak naprawdę programiści C ++ z początku lat 90., którzy w zasadzie piszą klasy w C ++, a nie używają zbyt wielu typów ogólnych. Bardziej nowoczesne podejście wykorzystuje typy generyczne do wspólnego komponowania oprogramowania w sposób bardziej podobny do języków dynamicznych, ale na końcu nadal uzyskuje się kontrolę typu / wydajność. To trochę brzydkie. Ale kiedy już uporasz się z problemami składniowymi, to naprawdę jest całkiem fajne. Boost zapewnia wiele narzędzi potrzebnych do łatwego komponowania. inteligentne wskaźniki, funkcje, lambdy, powiązania itp. Są też biblioteki boost, które wykorzystują ten nowszy sposób pisania C ++, aby zapewnić takie rzeczy, jak sieć, regex itp.

jeśli piszesz dużo pętli for, ręcznie przewijasz obiekty funkcyjne lub zarządzasz pamięcią, zdecydowanie powinieneś sprawdzić boost out.

Keith Nicholas
źródło
8

BOOST to zbiór bibliotek spełniających potrzeby wspólne dla wielu projektów C ++. Ogólnie rzecz biorąc, przedkładają poprawność, możliwość ponownego użycia, przenośność, wydajność w czasie wykonywania i oszczędność miejsca w stosunku do czytelności kodu implementacji BOOST lub czasami czasu kompilacji. Zwykle nie obejmują pełnych, wysokopoziomowych wymagań funkcjonalnych (np. Frameworki aplikacji), a zamiast tego (na szczęście) oferują bloki konstrukcyjne, które można dowolnie łączyć bez narzucania lub zdominowania projektu aplikacji.

Oto ważne powody, dla których warto rozważyć użycie BOOST:

  • większość bibliotek jest dość dobrze przetestowana i zaprojektowana: generalnie otrzymują rozsądną recenzję od znakomitych programistów, w porównaniu z osobami z rozwiązaniami do gotowania w domu w tej samej przestrzeni problemowej i są wystarczająco szeroko stosowane, aby zebrać obszerne opinie z rzeczywistego świata
  • jest już napisane, a Twoje rozwiązanie prawdopodobnie nie jest
  • jest dość przenośny (ale to zależy od biblioteki)
  • więcej osób w społeczności C ++ będzie miało przewagę, pomagając w tworzeniu kodu
  • BOOST jest często poligonem doświadczalnym do wprowadzenia do Standardu C ++, więc będziesz miał mniej pracy przy przepisywaniu kodu, aby był zgodny z przyszłymi standardami bez BOOST
  • ze względu na zapotrzebowanie społeczności, dostawcy kompilatorów są bardziej skłonni do testowania i reagowania na problemy z poprawnością przy użyciu BOOST
  • znajomość bibliotek boost pomoże Ci wykonać podobną pracę nad innymi projektami, prawdopodobnie w innych firmach, gdzie kod, który możesz teraz napisać, może nie być dostępny do ponownego wykorzystania

Biblioteki są opisane w jednej lub dwóch liniach tutaj: http://www.boost.org/doc/libs/ .

Tony Delroy
źródło
6

Ponieważ biblioteka standardowa C ++ nie jest kompletna .

Hans Sjunnesson
źródło
3

Zwiększ w zasadzie streszczenie tego, czym stanie się Standard, poza wszystkimi recenzjami i używaniem, które zapewnia Boost, możesz być całkiem pewien, że dostaniesz całkiem niezłą ofertę dla swoich zależności.

Jednak większość sklepów nie używa Boost, ponieważ jest to zależność zewnętrzna. W rzeczywistości zmniejszenie zależności zewnętrznych jest również bardzo ważne.

Robert Gould
źródło
3

Boost jest do C ++ podobnie jak .NET Framework do C #, ale może na mniejszą skalę.

macbirdie
źródło
2

Używam trochę zamkniętej biblioteki systemu plików, a boost :: shared_ptr jest całkiem sprytny. Słyszałem, że robi też inne rzeczy.

Terry G. Lorber
źródło