Warum Boost?

#1

Hallo Leute,
Während ich mit C++ gearbeitet habe, bin ich in diversen immer wieder auf Boost gestolpert. Trotzdem habe ich für mein Projekt keinen Anwendungszweck gefunden. Daher frage ich, hat euch Boost schon mal viel Tipparbeit erspart?

#2

Naja… was heißt “Tipparbeit”. Was macht man, wenn man prüfen will, ob zwei Strings case-insensitively gleich sind? Ja, das kann man selbst schreiben, oder man nimmt boost::iequals. Aber wenn es nur darum ginge, wäre das wirklich ein schwaches Argument.

Es ist durch C++11 schon deutlich weniger kritisch geworden. Vieles, was vorher in boost war, ist jetzt in den C+±Standard eingeflossen. Da ist einiges dabei, was wirklich als “syntaktischer Zucker” bezeichnet werden könnte, z.B. BOOST_FOREACH aka “range-based for loop”, oder boost::function aka std::function - was man ja auch immer anders (d.h. über normale for-loops und funktoren) schreiben könnte.

Aber insgesamt gibt es viele libraries in boost, die für spezielle Anwendungsfelder schon sehr praktisch sind. Einiges davon geht über “praktisch” hinaus in Richtung “unentbehrlich”…

  • boost::atomic
  • boost::chrono
  • boost::asio für sockets & co

    und die baut man eben nicht mal schnell selbst mit ein paar Zeilen nach.

Dann gibt es natürlich noch viele “dicke Brocken”, wie z.B. boost::graph: Man könnte vielleicht jede einzelne Klasse oder jede einzelne Funktion davon selbst bauen. Aber … dass es sowas als “Gesamtpaket” gibt, ist schon nicht verkehrt…

Daneben gibt (gab) es natürlich Libraries, die gar nicht notwendig sein sollten, und nur darauf abzielten, ein Mindestmaß an Benutzbarkeit in die Sprache zu bringen. Die Killerfeatures von boost (vor C++11) waren in dieser Hinsicht IMHO ganz klar

  • boost::shared_ptr (jetzt aka std::shared_ptr)
  • boost::thread (jetzt aka std::thread)

(Oder kurz: Java, 1995 (!!!))

(…und wenn man beim boost::filesystem::path dann mal eine URL unterbringen will, merkt man recht schnell, dass sie trotz allem noch nicht so ganz im 21. Jahrhundert angekommen sind… :rolleyes: )

#3

[QUOTE=Marco13]Naja… was heißt “Tipparbeit”. Was macht man, wenn man prüfen will, ob zwei Strings case-insensitively gleich sind? Ja, das kann man selbst schreiben, oder man nimmt boost::iequals. Aber wenn es nur darum ginge, wäre das wirklich ein schwaches Argument.
[/QUOTE]

Edit: Argument steht, habe den Inhalt meines Posts gelöscht.