Was sind die Vorteile der Verwendung der C ++ Boost-Bibliotheken? [geschlossen]


122

Also habe ich durchgelesen und es scheint, dass die Boost-Bibliotheken in der Praxis viel genutzt werden (allerdings nicht in meinem Shop). Warum ist das? und was macht es so wunderbar?


10
Nitpick: Es ist kein Akronym, also ist es Boost (oder Boost), nicht BOOST. Es sei denn, Sie schreien natürlich;)
Niklas

10
@ Niklas Es ist auch BOOST, wenn Sie eines der Präprozessor-Makros = P
KitsuneYMG

@ KitsuneYMG Ich sehe, dass die Frage trotzdem bearbeitet wurde, aber ich bin mir ziemlich sicher, dass das OP das Fragenfeld nicht zum Bearbeiten des Präprozessor-Codes verwendet hat;)
Niklas

3
@Nikias Ich bin nur ein kluger Arsch = P. Ein Kerl muss Hobbys haben.
KitsuneYMG

C ++ ist Mist ohne Boost :)
TriCore

Antworten:


134

Boost wird so häufig verwendet, weil:

  • Es ist Open Source und Peer-Review.
  • Es bietet eine breite Palette plattformunabhängiger Funktionen, die STL verpasst hat.
  • Es ist eher eine Ergänzung zu STL als ein Ersatz.
  • Viele der Boost-Entwickler sind im C ++ - Standardkomitee. Tatsächlich wird davon ausgegangen, dass viele Teile von Boost in der nächsten C ++ - Standardbibliothek enthalten sind.
  • Es ist gut dokumentiert.
  • Die Lizenz ermöglicht die Aufnahme in Open-Source- und Closed-Source-Projekte.
  • Die Funktionen sind normalerweise nicht voneinander abhängig, sodass Sie nur die Teile verknüpfen können, die Sie benötigen. [ Luc Hermittes Kommentar]

5
Darüber hinaus können wir auch sagen, dass Boost-Unterbibliotheken unabhängig voneinander verwendet werden können (mit Ausnahme einiger Kernbibliotheken). Nicht weil wir boost.shared_ptr verwenden, müssen wir zum Beispiel boost.ublas verwenden.
Luc Hermitte

Ich mag es, Antworten zu sehen, die wie Enzyklopädieeinträge aussehen. Es macht es so einfach, eine große Menge an Material zu bekommen. +1
Tyler Smith

Obwohl es scheint, dass jede Bibliothek von MPL abhängig ist ...
Viktor Sehr

Boost ermöglicht einmaliges Schreiben, plattformübergreifende Entwicklung und korrekte Nutzung?
FilBot3

Ist es kostenlos für den kommerziellen Gebrauch?
Mayur

39

Von der Homepage:

"... eines der angesehensten und fachmännischsten C ++ - Bibliotheksprojekte der Welt." - Herb Sutter und Andrei Alexandrescu, C ++ Coding Standards

"Punkt 55: Machen Sie sich mit Boost vertraut." - Scott Meyers, Effective C ++, 3. Aufl.

"Die naheliegende Lösung für die meisten Programmierer besteht darin, eine Bibliothek zu verwenden, die eine elegante und effiziente Plattform bietet, die unabhängig von den benötigten Diensten ist. Beispiele sind BOOST ..." - Bjarne Stroustrup, Abstraction, Bibliotheken und Effizienz in C ++

Es handelt sich also um eine Reihe weit verbreiteter und akzeptierter Bibliotheken, aber warum sollten Sie sie benötigen?

Wenn Sie brauchen:

  • Regex
  • Funktionsbindung
  • Lambda-Funktionen
  • Unit-Tests
  • intelligente Zeiger
  • nicht kopierbar, optional
  • Serialisierung
  • generische Daten
  • tragbares Dateisystem
  • kreisförmige Puffer
  • Konfigurations-Utils
  • generische Bildbibliothek
  • TR1
  • Fäden
  • uBLAS

und mehr, wenn Sie in C ++ codieren, werfen Sie einen Blick auf Boost .


23

Da sie der Standardbibliothek viele fehlende Dinge hinzufügen, werden einige von ihnen in den Standard aufgenommen.

Boost Menschen lügen nicht:

Warum sollte eine Organisation Boost verwenden?

Mit einem Wort: Produktivität. Die Verwendung hochwertiger Bibliotheken wie Boost beschleunigt die anfängliche Entwicklung, führt zu weniger Fehlern, reduziert die Neuerfindung des Rads und senkt die langfristigen Wartungskosten. Und da Boost-Bibliotheken in der Regel zu De-facto- oder De-jure-Standards werden, sind viele Programmierer bereits mit ihnen vertraut.

Zehn der Boost-Bibliotheken sind in TR1 der C ++ Standard Library enthalten und sollen daher später vollständig standardisiert werden. Weitere Boost-Bibliotheken für TR2 sind in Vorbereitung. Die Verwendung von Boost-Bibliotheken verschafft einem Unternehmen einen Vorsprung bei der Einführung neuer Technologien.

Viele Unternehmen verwenden bereits mit Boost implementierte Programme wie Adobe Acrobat Reader 7.0.


16

Einige Boost-Klassen sind sehr nützlich (shared_ptr), aber ich denke, sie sind ein bisschen verrückt nach Eigenschaften und Konzepten in Boost. Kompilierungszeiten und riesige Binärgrößen sind bei Boost völlig verrückt, wie es bei jedem vorlagenlastigen Code der Fall ist. Es muss ein Gleichgewicht geben. Ich bin mir nicht sicher, ob Boost es gefunden hat.


10
Sie vergessen, dass Boost nicht eine Bibliothek ist, sondern viele. Außerdem müssen Sie die Größe und die Kompilierungszeit mit der Funktionalität vergleichen. Eigenschaften und Konzepte sind eine große Hilfe bei der Entwicklung. Die Kompilierungszeit ist in der Tat ein geringer Preis.
Konrad Rudolph

8

Es werden Bibliotheken hinzugefügt, die einen moderneren Ansatz für die C ++ - Programmierung ermöglichen.

Nach meiner Erfahrung sind viele C ++ - Programmierer wirklich die C ++ - Programmierer der frühen 90er Jahre, die so ziemlich C ++ - Klassen schreiben und nicht viel von Generika verwenden. Der modernere Ansatz verwendet Generika, um Software so zusammenzustellen, dass sie eher dynamischen Sprachen ähnelt. Am Ende erhalten Sie jedoch immer noch eine Typprüfung / Leistung. Es ist ein bisschen hässlich anzusehen. Aber sobald Sie die Syntaxprobleme überwunden haben, ist es wirklich sehr schön. Boost bietet Ihnen viele Tools, die Sie zum einfachen Erstellen von Inhalten benötigen. intelligente Zeiger, Funktionen, Lambdas, Bindungen usw. Dann gibt es Boost-Bibliotheken, die diese neuere Art des Schreibens von C ++ nutzen, um Dinge wie Netzwerk, Regex usw. usw. bereitzustellen.

Wenn Sie viele for-Schleifen schreiben oder Funktionsobjekte von Hand rollen oder Speicherverwaltung durchführen, sollten Sie auf jeden Fall das Boost-out überprüfen.


8

BOOST ist eine Sammlung von Bibliotheken, die die Anforderungen vieler C ++ - Projekte erfüllen. Im Allgemeinen priorisieren sie Korrektheit, Wiederverwendbarkeit, Portabilität, Laufzeitleistung und Raumeffizienz gegenüber der Lesbarkeit des BOOST-Implementierungscodes oder manchmal Kompilierungszeiten. Sie decken in der Regel nicht die vollständigen funktionalen Anforderungen auf hoher Ebene ab (z. B. Anwendungsframeworks), sondern bieten (dankenswerterweise) Bausteine, die freier kombiniert werden können, ohne das Anwendungsdesign zu diktieren oder zu dominieren.

Die wichtigsten Gründe für die Verwendung von BOOST sind:

  • Die meisten Bibliotheken sind ziemlich gut getestet und gestaltet: Sie werden im Allgemeinen von einigen exzellenten Programmierern einigermaßen fundiert bewertet, verglichen mit Leuten mit hausgemachten Lösungen im selben Problembereich, und sind weit genug verbreitet, um umfassendes Feedback aus der Praxis zu erhalten
  • Es ist bereits geschrieben und Ihre Lösung ist es wahrscheinlich nicht
  • es ist ziemlich portabel (aber das variiert je nach Bibliothek)
  • Mehr Leute in der C ++ - Community haben einen Vorsprung darin, Ihnen bei Ihrem Code zu helfen
  • BOOST ist häufig ein Testfeld für die Einführung in den C ++ - Standard, sodass Sie weniger Arbeit beim Umschreiben Ihres Codes benötigen, um mit zukünftigen Standards ohne BOOST kompatibel zu sein
  • Aufgrund der Community-Nachfrage testen Compiler-Anbieter mit größerer Wahrscheinlichkeit Probleme mit der BOOST-Nutzung und reagieren auf diese
  • Die Vertrautheit mit Boost-Bibliotheken hilft Ihnen dabei, ähnliche Arbeiten an anderen Projekten durchzuführen, möglicherweise in anderen Unternehmen, in denen der Code, den Sie jetzt schreiben, möglicherweise nicht zur Wiederverwendung verfügbar ist

Die Bibliotheken werden hier in ein oder zwei Zeilen beschrieben: http://www.boost.org/doc/libs/ .




3

Boost ist im Grunde die Zusammenfassung dessen, was der Standard werden wird. Abgesehen von all dem Peer Review und der Verwendung, die Boost bietet, können Sie ziemlich sicher sein, dass Sie für Ihre Abhängigkeiten ein gutes Geschäft machen.

Die meisten Geschäfte verwenden Boost jedoch nicht, da es sich um eine externe Abhängigkeit handelt. In der Realität ist es auch sehr wichtig, externe Abhängigkeiten zu reduzieren.


3

Boost ist für C ++ ähnlich wie .NET Framework für C #, aber möglicherweise in kleinerem Maßstab.


2

Ich benutze die Dateisystembibliothek ein wenig beenden, und das boost :: shared_ptr ist ziemlich geschickt. Ich höre, dass es auch andere Dinge tut.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.