Frage

Boost sein soll die Standard-Nicht-Standard C ++ Bibliothek, die alle C ++ Benutzer verwenden können. Ist es vernünftig, für ein Open-Source-C ++ Projekt es verfügbar ist, anzunehmen, oder ist es eine große Abhängigkeit zu weit?

War es hilfreich?

Lösung

Im Grunde Ihre Frage läuft darauf hinaus, „ist es sinnvoll [freie Bibliothek xyz] zu haben, als eine Abhängigkeit für ein C ++ Open-Source-Projekt.“

Nun betrachten Sie das folgende Zitat von Stroustrup und die Antwort ist wirklich ein Kinderspiel:

  

Ohne eine gute Bibliothek, die meist interessanten Aufgaben sind schwer zu tun, in   C ++; aber eine gute Bibliothek gegeben, kann fast jede Aufgabe leicht gemacht werden

Unter der Annahme, dass dies richtig ist (und in meiner Erfahrung ist es), dann ein einigermaßen große C ++ Projekt zu schreiben ohne Abhängigkeiten sind geradezu unvernünftig.

Die Entwicklung dieses Argument weiter, die eine C ++ Abhängigkeit (abgesehen von Systembibliotheken), die vernünftigerweise auf einem (Entwickler) erwartet werden kann Client-System sind die Boost-Bibliotheken. I weiß , dass sie nicht, aber es ist keine unvernünftige Vermutung für eine Software zu machen.

Wenn eine Software nicht einmal auf Boost-verlassen kann, kann sie nicht verlassen jeder Bibliothek.

Andere Tipps

Hier finden Sie aktuelle http://www.boost.org/doc/tools.html . Insbesondere die bcp Dienstprogramm würde nützlich sein, wenn Sie möchten, dass Ihre Boost-Abhängigkeiten in Ihr Projekt einbinden. Ein Auszug aus der Website:

„Das Dienstprogramm Bcp ist ein Werkzeug für die Untergruppen von Boost-Extraktion, ist es nützlich für die Boost-Autoren, die ihre Bibliothek verteilen mögen getrennt von Boost, und für Boost-Anwender, die eine Teilmenge der Erhöhung mit ihrer Anwendung verteilen mögen.

bcp können auch auf dem Bericht Teile davon abhängt Steigern Sie Ihren Code ist, und welche Lizenzen von diesen Abhängigkeiten verwendet werden.“

Natürlich könnte dies einige Nachteile -. Aber zumindest sollte man sich bewusst auf die Möglichkeit, dies zu tun

Früher habe ich sehr vorsichtig sein, um Abhängigkeiten zu Einführung von Systemen, aber jetzt finde ich, dass Abhängigkeiten sind keine große Sache. Moderne Betriebssysteme kommen mit Paket-Manager, die oft Abhängigkeiten automatisch auflösen können oder zumindest machen es sehr einfach für Administratoren zu installieren, was benötigt wird. Zum Beispiel Boost ist unter Gentoo-Porto als dev-libs / Boost und unter FreeBSD Ports devel / Boost zur Verfügung.

Moderne Open-Source-Software baut eine Menge auf anderen Systemen. In einer aktuelle Studie , durch Tracking die Abhängigkeiten der FreeBSD-Pakete, haben wir festgestellt, dass die 12.357 Ports Pakete in unserem FreeBSD 4.11-System, insgesamt 21.135 Bibliotheksabhängigkeiten hatten; das heißt, sie benötigt eine Bibliothek, die von den 52-Bibliotheken, die Teil des Basissystems sind, zu kompilieren, um. Die Bibliotheksabhängigkeiten 688 verschiedenen Bibliotheken enthalten, während die Anzahl der verschiedenen externen Bibliotheken, die von einem einzigen Projekt zwischen 1 und 38, mit einem Modus-Wert von 2. Außerdem verwendet, 5.117 Projekte mindestens eine externe Bibliothek und 405 Projekte 10 verwendet variiert verwendet oder mehr .

Am Ende die Antwort auf Ihre Frage wird von einem Kosten-Nutzen-Analyse kommen. Ist der Vorteil wieder mit einer reifen, weit verbreitet, überprüft und getestet Bibliothek wie Boost und größer als die niedrig und sinkende Kosten für eine Abhängigkeit? Für jede nicht-triviale Nutzung von Einrichtungen des Boost-die Antwort ist, dass Sie weitermachen sollen und Boost-verwenden.

Es hängt davon ab. Wenn Sie eine Header-Datei nur definierte Klassenvorlage in Boost - dann ja voran gehen und es verwenden, da es nicht in jedem Boost-Shared Library nicht saugen, wie die gesamte Code während der Kompilierung ohne externe Abhängigkeiten erzeugt wird. Versionierung Probleme sind ein Schmerz für jeden gemeinsamen c ++ Bibliothek und Boost ist nicht immun gegen diese, so dass, wenn Sie das Problem vermeiden können insgesamt ist es eine gute Sache ist.

KDE hängt auch von kurbeln.

Es hängt jedoch vor allem auf Ihre Ziele, und noch mehr auf Ihre Zielgruppe, anstatt den Umfang des Projekts. zum Beispiel TinyJSON (sehr kleines Projekt), ist fast 100% Boost, aber das ist in Ordnung, weil die API bietet es bei Boost-Programmierer Boost-artig und gezielte ist die JSON-Bindungen müssen. Doch viele andere JSON-Bibliotheken nicht-Boost verwenden, weil sie andere Zielgruppen ausrichten.

Auf der anderen Seite ich nicht-Boost bei der Arbeit verwenden können, und ich kenne viele andere Entwickler (in ihren Tagesjobs) sind im selben Boot. Also ich denke, man könnte sagen, wenn Ihr Ziel ist Open Source, und eine Gruppe, die Boost-nutzt, gehen Sie voran. Wenn Sie Unternehmen interessiert sein könnte Sie es zu überdenken und Copy-Paste nur die notwendigen Teile von Boost (und sich verpflichten, ihre Unterstützung) für Ihr Projekt zu arbeiten.

  • Edit: Der Grund, warum wir es nicht bei der Arbeit verwenden können, weil unsere Software hat tragbar zu sein, um etwa 7 verschiedene Plattformen und über 4 Compiler. Damit wir können nicht Boost verwenden, weil es nicht hat nachgewiesen worden, mit kompatibel zu sein alle unsere Ziele, so der Grund, a technisch. (Wir sind gut mit der Open Source und Boost-Lizenz Teil, wie wir verwenden Schub für andere Dinge mal)

Die Vorteile von boost, wenn C ++ zu schreiben Code, der sie deutlich die zusätzliche Komplexität der Verteilung des Open-Source-Code aufwiegen.

Ich arbeite an Programmierer Notepad und der Code nimmt eine Abhängigkeit von Schub für Test, intelligente Zeiger und Python Integration . Es gibt aufgrund der Anforderung, ein paar Beschwerden, aber die meisten werden nur mit ihm auskommen, wenn sie auf dem Code arbeiten möchten. Unter der Boost-Abhängigkeit eine Entscheidung war, habe ich nie bereut.

Um die Komplexität etwas weniger für die anderen zu machen, schließe ich für Boost-Python vorgefertigten Bibliotheken versioniert, so dass alles, was sie brauchen, ist zu tun, bieten Schub in ihre Einfügeverzeichnisse.

Ich würde sagen, ja. Sowohl Mandriva ( Red Hat basiert) und Ubuntu ( Debian basierend) Pakete für die Boost-libriaries haben.

Ich denke, die umfangreiche Funktionalität, die Erhöhung bereitstellt und, wie Sie sagen, es ist die Standard-Nicht-Standard C ++ Bibliothek es als Abhängigkeit rechtfertigt.

Leider ja, für ubuntu sind sie leicht verfügbar, aber für RHEL 4 und 5 Ich habe fast immer am Ende sie von tarballs machen. Sie sind große Bibliotheken, nur wirklich große ... wie eine Schiene Spike zu verwenden, wenn manchmal alles, was Sie wirklich brauchen ein Reißzweck ist.

Es hängt alles von der Art und Weise Sie gehen Boost zu verwenden. Wie Diomidis gesagt, wenn Sie einige nicht-triviale Einrichtungen von Boost verwenden werden, gehen Sie einfach weiter. Bibliotheken ist kein Verbrechen.

nur

Natürlich gibt es viele Menschen, die nicht-Boost verwenden möchten, weil die Einführung neuer Abhängigkeiten hat immer einige Nachteile und zusätzliche Sorgen, aber in einem Open-Source-Projekt ... meiner Meinung nach ist es auch in Ordnung, wenn sie Sie verwenden wollen, dass sie lernen oder verbessern sie Ihre Fähigkeiten auf sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top