Bearbeiten Zurückkehren zu dieser Frage nach ein paar Jahren
Nachdem ich immer mehr Boost-Bibliotheken verwendet habe, dachte ich, ich würde diese Frage aktualisieren, um ein solides Argument dafür zu liefern, warum Sie Boost verwenden sollten, wenn die Beschreibung des Produkts mit Ihrer gewünschten Funktionalität übereinstimmt. Dies wird auch Neinsager überzeugen. Laden Sie openSSL herunter und versuchen Sie, damit eine Client- und eine Serveranwendung zu erstellen. Versuchen Sie nun, dies auf jeder Plattform zu ermöglichen. Laden Sie dann boost :: asio :: ssl herunter und verwenden Sie es, um dieselbe Anwendung zu erstellen. Wenn Sie nicht überzeugt sind, dass Boost der richtige Ort ist, um nach sauberem, gut optimiertem, von Fachleuten geprüften, plattformübergreifenden Code zu suchen, werden Sie in dieser einfachen Übung konvertiert.
Tl; dr version:
Meiner Meinung nach gibt es nicht viele kleine und mittelständische Entwicklungsunternehmen, die Boost einsetzen, da es sich um eine massive und mächtige wilde Bestie handelt, die nicht einfach zu zähmen ist und Sie im Grunde genommen auf sich allein gestellt sind, wenn Sie versuchen zu lernen, wie um es zu benutzen. Die Dokumentation fehlt in einigen Punkten (siehe lange Version) und "die Community" um das Projekt herum scheint entweder zu fehlen, verstreut oder inaktiv (im Vergleich zu anderen Projekten).
Sehr langwierige Version:
Mir ist klar, dass es bereits eine akzeptierte Antwort gibt, aber als jemand, der Boost in fast jedem Projekt verwendet, dachte ich, ich würde eine Antwort posten.
Ich erinnere mich, als ich zum ersten Mal in Boost herumstocherte und ehrlich gesagt keine Ahnung hatte, was los war. Boost ist überhaupt nicht gut dokumentiert. Die Leute sind sich vielleicht nicht einig darüber, dass ich mir sicher bin, dass es Unmengen von Codebeispielen und Kommentaren und dergleichen gibt, aber es ist alles sehr kalt und vage und auch schwierig zu navigieren.
Außerdem scheint es schwierig zu sein, einen Ort zu finden, an dem Sie das Gefühl haben, die "Community" rund um das Projekt gefunden zu haben. Tatsächlich scheint die Gemeinschaft nicht existent oder nomadisch zu sein. Leider wurde sogar ihre Mailingliste von so vielen Blutegelstellen durchsucht, dass Sie dieses Kaninchenloch hinunterfahren und immer wieder dorthin zurückkehren können, wo Sie angefangen haben.
Diese beiden Faktoren machen das Erlernen der Verwendung von Boost-Bibliotheken zu einer ziemlich entmutigenden Aufgabe. Auch wenn die technischen Details für die Verwendung von boost nicht allzu komplex sind, handelt es sich um eine riesige Sammlung von Bibliotheken, mit denen Sie nur ein paar Codefragmente und verstreute Teile der Mailingliste aus den dunkelsten Ecken des Internets anzeigen können ... Nun, Sie haben die Idee.
Ich fing an, Boost um Version 1.45 herum zu basteln, und erst in Version 1.52 / 1.53 fühle ich mich wohl genug, um es in der Produktion zu verwenden. Es gibt so viele Dinge, an die Sie sich gewöhnen und die Sie sich merken müssen, auch einfache Dinge wie das Konfigurieren von boost und das Speichern dieser Konfiguration, da die Art und Weise, wie die Bibliotheken erstellt werden und funktionieren, je nach Ihren Vorlieben während der Kompilierung aufgrund der anpassbaren Dinge stark variieren kann sind.
Allerdings , keinen Fehler machen , wenn Sie Schub ausüben können, haben Sie eine mächtige Waffe gewonnen zum schnellen Aufbau solide, plattformübergreifende Programme. Nehmen Sie boost::asio
zum Beispiel. Sie können einen immens leistungsstarken, skalierbaren und plattformübergreifenden asynchronen Webserver in nur ein paar hundert Zeilen schreiben. Ich habe im Laufe der Jahre mehrere Clients, Server, Proxys usw. mit jeweils nur ein paar hundert Codezeilen geschrieben, die mir bisher nicht gelungen sind, und kann sie innerhalb von Minuten von Plattform zu Plattform portieren.
Wie andere bereits betont haben, sind größere Unternehmen in der Regel mit Legacy-Dingen beschäftigt oder rollen gerne ihre eigenen, was ich völlig verstehe. Es gibt auch dieses wirklich dumme Ding, von dem ich gehört habe und auf das ich gestoßen bin, wo Entwickler und / oder Projektmanager die Verwendung von Boost verbieten, weil es "zu groß" ist. Ich vermute, dass sie glauben, dass Boost eine einzige Bibliothek ist, oder sie haben noch nie von BCP gehört .
Was das WARUM betrifft, wähle ich Boost
Ich würde sagen, ich benutze es, weil es, wie Sie in Ihrer Frage implizieren, "die" C ++ - Bibliothek ist. Boost wird in der C ++ - Welt als das Schweizer Taschenmesser für Dinge angesehen, die Sie irgendwann brauchen werden. Die Idee ist also, dass es bei Bedarf eine leistungsstarke und tragbare Version von Boost geben sollte. Große Unternehmen tragen dazu bei , sehr gut ausgebildete Menschen mit beeindruckenden Lebensläufen beizutragen und sie zu pflegen , und wenn ein neuer Standard für C ++ entwickelt wird, versuchen die Menschen in der Regel zu fördern, welche Teile davon ISO-standardisiertes C ++ werden sollten.
Wenn ich also Funktionen hinzufügen möchte, für die es wahrscheinlich eine vorhandene Bibliothek gibt, werde ich zunächst nach Boost suchen, nur weil ich ziemlich sicher bin, dass sie optimiert und portabel sind und für die sie unterstützt und gewartet werden Eine sehr lange Zeit und Fehler werden gefunden und behoben. In der Open-Source-Welt können diese Qualitäten sehr schwer zu bekommen sein.