C++ Bibliotheken im Umfang wie Java?
-
hi,
hab mich jetzt seit einiger Zeit mit C++ beschäftigt und wollte mal fragen ob es andere Sachen wie die STL gibt? Etwas das vom Umfang her irgendwie in die richtung Java oder .NET geht.
Die STL hat zwar das eine oder andere, aber im Vergleich zu Java und .NET fehtl da doch noch so eingies. Gibts daher nicht sowas, das halt kostenlost ist, und so einen ganzen Sack von fertigen Sachen mitsich bringt?
-
boost ACE?
-
Sag was du willst, und wir sagen dir was du nehmen kannst. Denn es gibt viel.
Zu vorderst Boost. Dann ist Qt sehr umfangreich. wxWidgets auch.
Also was geht dir genau ab?
-
Es gibt noch Boost (http://www.boost.org) als "Quasi-Standard" und das bringt einige Dinge mit, die man wirklich gut brauchen kann. Aber auch mit Boost hat man lange nicht den Umfang von .NET oder Java. Für GUI-Programmierung kann man z.B. Qt nehmen (http://qt.nokia.com).
Insgesamt ist C++, was die Unterstützung durch Standard-Bibliotheken angeht, seit Jarhzehnten erstaunlich Realitäts-resistent. Für meinen Geschmack jedenfalls.
Stefan.
-
DStefan schrieb:
Insgesamt ist C++, was die Unterstützung durch Standard-Bibliotheken angeht, seit Jarhzehnten erstaunlich Realitäts-resistent. Für meinen Geschmack jedenfalls.
-
DStefan schrieb:
Insgesamt ist C++, was die Unterstützung durch Standard-Bibliotheken angeht, seit Jarhzehnten erstaunlich Realitäts-resistent. Für meinen Geschmack jedenfalls.
So viele Jahrzehnte könnens eigentlich nicht sein, zumal der erste C++-Standard erst etwas mehr als eines auf dem buckel hat
Man könnte auch genau umgekehrt argumentieren: Im Vergleich zu C++ sind andere Sprach-Standards gradezu überladen mit Bibliotheken. Wozu eine GUI-Bibliothek in den Standard einer Sprache aufnehmen, wenn von den darin entwickelten Anwendungen bei weitem nicht jede eine GUI hat/braucht? Und wozu sich auf eine einzelne GUI-Bibliothek festlegen, wenn es mehrere GUI-Bibliotheken gibt, die für verschiedene Anwendungsgebiete gut zu verwenden sind? Zugegeben, es gibt Dinge, die so gut wie immer gebraucht werden, z.B. Threads, aber die kommen im nächsten Standard.
-
DStefan schrieb:
Insgesamt ist C++, was die Unterstützung durch Standard-Bibliotheken angeht, seit Jarhzehnten erstaunlich Realitäts-resistent. Für meinen Geschmack jedenfalls.
Was willst du uns damit sagen? Dass dem C++ Standard Komitee nicht bewusst ist, dass die C++ Standard Library einige zusätzliche Features bräuchte, und dies der einzige Grund ist, warum es diese Features noch nicht gibt?
Ja, klar, natürlich.
-
naja gegen so eine kleine schlanke GUI in der Standart-Bibliothek hätte ich auch nichts. Das was mich bei den anderen immer gestört hat war das sie so umfangreich waren und der Kompilierungsvorgang dadurch so kompliziert wurde. Man könnte es ja so machen das die Bibliotheken nur bei bedarf hinzugelinkt (automatisch wie bei der Winapi) werden, sodass man keine performance- oder speichereinbussen hat (mit ein oder 2 s). Aber Java hat wirklich ganz schön viel, was leider den nachteil hat das man immer wieder mal in die Dokumentation reingucken muss.
-
hustbaer schrieb:
DStefan schrieb:
Insgesamt ist C++, was die Unterstützung durch Standard-Bibliotheken angeht, seit Jarhzehnten erstaunlich Realitäts-resistent. Für meinen Geschmack jedenfalls.
Was willst du uns damit sagen? Dass dem C++ Standard Komitee nicht bewusst ist, dass die C++ Standard Library einige zusätzliche Features bräuchte, und dies der einzige Grund ist, warum es diese Features noch nicht gibt?
Ja, klar, natürlich.
Ich bin mir nicht sicher, ob ich verstehe, was du mir jetzt sagen willst
Was ich sagen wollte ist, dass aus meiner Sicht die Sprachenlandschaft ein Markt ist. Und ich habe den Eindruck, dass Standard-C++ sich massiv am Markt vorbei orientiert. Eine GUI-Lib ist etwas, dass sehr viele Leute brauchen. Ebenso Threads, IPC, Netzwerk, Verschlüsselung usw. Das wird massiv gebraucht, und es würde den Leuten helfen, wenn es hierfür standardisierte Libs gäbe.
Statt sich daran zu orientieren, benötigt das Standardkommitee sagen und schreiben zehn Jahre, um sich auf einen neuen Standard zu einigen. Um dann doch wieder einen Standard auf den Weg zu bringen, der für den Markt absolut kein Grund für den Einsatz von C++ ist.
Die meisten Leute müssen GUIs (undsoweiter) programmieren. Und mit C++ müssen sie sich erst einmal für ihre Arbeit die passenden Bibliotheken der Fremdhersteller zusammensuchen. Mit Java ist das nicht so. Da nimmst du in den meisten Fällen dein Standard-Java und machst deine Software. Punkt!
Das nervt mich. Und mehr wollte ich eigentlich gar nicht sagen
Stefan.
-
aber zumindest die netzwerk bibliothek ist doch zu 99,9999% portabel. Wenn du die richtigen header nimmst, das WSAStartup wegnimmst und den Datentyp SOCKET durch int ersetzt hast du ein linux programm
-
Für den Markt? Wer bitte macht denn C++ für "den Markt"? Wer will damit Geld verdienen? Microsoft? Die verweisen für sowas auf DotNet. Borland? Die haben ihre VCL.
Ich frage mich ernsthaft, was du mit "für den Markt" meinst.
-
mad_martin schrieb:
Für den Markt? Wer bitte macht denn C++ für "den Markt"? Wer will damit Geld verdienen? Microsoft? Die verweisen für sowas auf DotNet. Borland? Die haben ihre VCL.
Ich frage mich ernsthaft, was du mit "für den Markt" meinst.
Es gibt mehr Märkte als die, auf denen man Geld verdient. Und ich habe in meinem Beitrag auch überhaupt nicht vom Geldverdienen gesprochen.
Sondern von Nachfrage nach bestimmten Eigenschaften (im weitesten Sinne) von Programmiersprachen, sowie dem Maß, in dem C++ Standard-Libs diese Nachfrage meines Erachtens befriedigen/berücksichtigen.
Ich dachte wirklich, ich hätte mich klar genug ausgedrückt...
Stefan.
-
DStefan schrieb:
Ich dachte wirklich, ich hätte mich klar genug ausgedrückt...
Hattest du, keine Sorge ^^
bb
-
DStefan schrieb:
mad_martin schrieb:
Für den Markt? Wer bitte macht denn C++ für "den Markt"? Wer will damit Geld verdienen? Microsoft? Die verweisen für sowas auf DotNet. Borland? Die haben ihre VCL.
Ich frage mich ernsthaft, was du mit "für den Markt" meinst.
Es gibt mehr Märkte als die, auf denen man Geld verdient. Und ich habe in meinem Beitrag auch überhaupt nicht vom Geldverdienen gesprochen.
Sondern von Nachfrage nach bestimmten Eigenschaften (im weitesten Sinne) von Programmiersprachen, sowie dem Maß, in dem C++ Standard-Libs diese Nachfrage meines Erachtens befriedigen/berücksichtigen.
Ich dachte wirklich, ich hätte mich klar genug ausgedrückt...
Stefan.
Dann wäre es aber sinnvoller diese Bibliotheken als getrennte ISO Standards zu definieren, so können Compiler-Hersteller diese Bibliotheken implementieren, wenn sie wollen. Dazu dann in den Standard aufnehmen wie ein Programm per Präprozessor feststellen kann ob die gewünschte Bibliothek vorhanden ist.
-
pumuckl schrieb:
Wozu eine GUI-Bibliothek in den Standard einer Sprache aufnehmen, wenn von den darin entwickelten Anwendungen bei weitem nicht jede eine GUI hat/braucht?
Wozu Sprachmittel wie goto in eine Sprache aufnehmen, wenn bei weitem nicht jede Anwendung diese braucht? Ist doch egal wenn ein paar Anwendungen die Klassen nicht nutzen, dann werden sie eben nicht dazu gelinkt. Es ist halt einfach ein Graus in C++, dass ich für jeden Standardmist verschiedene Bibliotheken brauch (und mich um die Installation beim Kunden kümmern muss).
-
nullArgument schrieb:
Wozu Sprachmittel wie goto in eine Sprache aufnehmen, wenn bei weitem nicht jede Anwendung diese braucht? Ist doch egal wenn ein paar Anwendungen die Klassen nicht nutzen, dann werden sie eben nicht dazu gelinkt.
Es besteht ein kleiner Unterschied zwischen
goto
und einem GUI-Framework. Erstens bestehtgoto
hauptsächlich aufgrund der Kompatibilität zu C, wirklich oft angewandt wird es in modernem C++ nicht (das gilt für einige Sprachmittel). Zweitens ist es ein Sprach- und kein Bibliotheksfeature. Erstere kann man nicht oder nur kompliziert nachrüsten, während Bibliotheken auch nachträglich programmiert werden können.Davon abgesehen hat C++ nicht den Anspruch, eine Standardbibliothek mit so vielen Features anzubieten. Leider basieren viele Vergleiche von Programmiersprachen auf oberflächlichem Feature-Abzählen. Welchen Sinn hat es, wenn sich C++ wie C# oder Java entwickelt? Dafür gibt es ja diese Sprachen. Die Stärken von C++ liegen woanders, und in diese Richtung bewegt sich auch der neue Standard. Meiner Meinung nach ist das hauptsächlich die Programmiersprache selbst. Genauer gesagt meine ich Konzepte, die einem einen effektiven Einsatz der Sprache ermöglichen - ohne sich dabei auf ein spezifisches Anwendungsgebiet wie GUI oder lineare Algebra zu beschränken. Zum Beispiel Templates, die können überall eingesetzt werden. Oder RValue-Referenzen, um ein Feature von C++0x zu nennen.
Natürlich wäre es nützlich, man hätte in C++ eine standardisierte GUI. Ich selber würde das auch sehr schätzen. Aber ganz so einfach ist das nicht umzusetzen, allein schon der Standardisierungsprozess. Man sieht ja, wie lange es mit C++0x dauert. Und das liegt nicht an der Unfähigkeit der Entwickler, sondern daran, dass C++ um viele Technologien erweitert wird, die noch nicht so stark erforscht wird und deshalb genau abgewägt werden (Concepts wurden beispielsweise vorläufig entfernt, weil man nichts überstürzen will, aber endlich mal ein neuer Standard herauskommen soll). Bei all dem ist es wohl kein triviales Unterfangen, etwas derart Plattformabhängiges wie GUI in den Standard aufzunehmen. Alleine schon der Gedanke, wie die einzelnen Bestandteile (z.B. Widgets) vom Standard genau definiert werden sollen, damit auch verschiedene Implementierungen zum ungefähr gleichen Ergebnis führen, macht mir etwas zu schaffen.
-
GUI im Standard, LOL. Der std::string ist schon grottig genug, so dass jede Lib nen anderen verwendet.
-
lololer schrieb:
GUI im Standard, LOL. Der std::string ist schon grottig genug, so dass jede Lib nen anderen verwendet.
Falsch. Der std::string mag nicht der Weisheit letzter Schluß sein, das eigentliche Problem ist aber eher das die UI-Frameworks ÄLTER als std::string sind.
-
lololer schrieb:
...std::string ist schon grottig genug, so dass jede Lib nen anderen verwendet.
DAS ist ja mal eine sehr exotische Lesart.
Ich bin wahrlich nicht der Meinung, dass std::string optimal (oder nur "gut") definiert ist - aber die "Alternativen", die mir bislang begegnet sind
- haben dieselben Schwächen,
- zusätzlich neue und
- sind oftmals älter und deutlich stärker an "char*"-Handling orientiert.Es wird schon einen Grund haben, warum sich keine dieser ach so tollen Alternativen wirklich als "Quasistandard" durchgesetzt haben... :p
Gruß
Simon2.
-
Also zB über den QString kann ich nicht meckern. Wesentlich angenehmer zu benutzen als std::string und hat natürlich eine ganze latte mehr an features.