C++ Bibliotheken im Umfang wie Java?



  • @DStefan
    ich denke unter "dynamischem array" verstehen die meisten ein auf dem heap angelegtes array (new[]) und kein std::vector / std::deque / ....

    Simon



  • theta schrieb:

    @DStefan
    ich denke unter "dynamischem array" verstehen die meisten ein auf dem heap angelegtes array (new[]) und kein std::vector / std::deque / ....

    Simon

    Aber genau das macht std::vector doch. Vielleicht sollte man "verwaltetes dynamisches Array" sagen?

    Stefan.



  • Damit keine Missverständnisse entstehen: Ich habe mich auf die internen Datenstrukturen der Container bezogen. Also

    • dynamisches Array bei std::vector
    • mehrere dynamische Arrays bei std::deque
    • doppelt verkettete Liste bei std::list

    Was die Strings betrifft, so könnte man auch abgesehen von der internen Datenstruktur gewisse Dinge ausprobieren. Wahrscheinlich gibt es einige Optimierungen, was das Kopierverhalten betrifft (ich weiss ja nicht, wie gut COW immer umgesetzt ist). Z.B. sowas wie shared_string . Oder ein String, der noch kompatibler zu C ist und sich zum Beispiel auch in den Speicher schreiben lässt. Man müsste dann halt eine Lösung finden, um die Invarianten sicherstellen (Position der Nullterminierung).

    Dazu habe ich eigentlich nichts Konkretes, das sollten nur mal ein paar spontane, in den Raum geworfene Ideen sein. Ich kann mir vorstellen, dass zumindest das Herumexperimentieren ab und zu recht interessant sein kann... 🙂



  • Nexus schrieb:

    Dazu habe ich eigentlich nichts Konkretes, das sollten nur mal ein paar spontane, in den Raum geworfene Ideen sein. Ich kann mir vorstellen, dass zumindest das Herumexperimentieren ab und zu recht interessant sein kann... 🙂

    Es wird sich verdammt viel ändern, schätze ich. Ein Iterator ist was, was sich wie ein Zeiger anfühlt. Ein String ist was, was sich wie ein container of char anfühlt. Und das ist erst der Anfang, in Wirklichkeit ist es viel einfacher, wenn man die Schwelle überspringt, aber viel komplizierter für uns. Zufällig kommt c++0x zeitgleich mit dem Vulkanausbruch, daß die stl weitgehend verstanden ist und sich überlegene Begriffe auftun(, die noch weitgehend unverstanden sind). Es wird ein ganz fetter Bums kommen. C++ wird keine einheitliche Gemeinde mehr sein (falls sie das jemals war). Es wird viele Neusachen-Ablehner geben, viel mehr als beim alten Standard oder boost, es wird viele Abspringer geben, die "es einfach nicht mehr einsehen".
    Wir werden in interessanten Zeiten leben.



  • volkard schrieb:

    Wir werden in interessanten Zeiten leben.

    Hinzu kommen noch interessante Vorschläge, wie von den Iteratoren abzukehren und sich auf Ranges zu besinnen. Auch dies würde C++ im Kern ein weiteres mal umkrempeln, wenn so die Monopole der funktionalen Sprachen gestürmt werden: Lazy Evaluation und unendliche Datenstrukturen. Ein Ausflug nach Haskell hat mir erst gezeigt, wie einfach man zum Beispiel das Auslesen aus einer Datei machen kann: Als Liste von Zeilen die über Lazy evaluation dynamisch beschafft werden, wenn sie gebraucht werden.

    Mit dem Neuen Standard ist C++ mächtig genug um das ganze Repertoire funktionaler Programmierung einfach und effizient abzubilden. Und ich denke, diese Chance sollte man nutzen.



  • volkard schrieb:

    Es wird sich verdammt viel ändern, schätze ich. Ein Iterator ist was, was sich wie ein Zeiger anfühlt. Ein String ist was, was sich wie ein container of char anfühlt. Und das ist erst der Anfang, in Wirklichkeit ist es viel einfacher, wenn man die Schwelle überspringt, aber viel komplizierter für uns. Zufällig kommt c++0x zeitgleich mit dem Vulkanausbruch, daß die stl weitgehend verstanden ist und sich überlegene Begriffe auftun(, die noch weitgehend unverstanden sind). Es wird ein ganz fetter Bums kommen. C++ wird keine einheitliche Gemeinde mehr sein (falls sie das jemals war). Es wird viele Neusachen-Ablehner geben, viel mehr als beim alten Standard oder boost, es wird viele Abspringer geben, die "es einfach nicht mehr einsehen".
    Wir werden in interessanten Zeiten leben.

    Das sehe ich ähnlich. Und ich befürchte, dass die Anzahl der Ablehner, vor allem im kommerziellen Bereich, ziemlich groß sein wird. C++, inklusive der Standard-Bibliotheken, drängt sich eigentlich in keinem relevanten Bereich der Programmier-Szene wirklich auf als die Sprache der Wahl. Und daran wird sich - leider - auch mit dem neuen Standard vermutlich nichts ändern.

    Versteht mich nicht falsch: Ich liebe C++. Aus vielen Gründen. Aber ich bin der Meinung, dass sich Standard-C++ leider in die völlig falsche Richtung bewegt. Die Sprache wird in Zukunft mehr und mehr an Relevant einbüßen. Fürchte ich.

    Stefan.



  • otze schrieb:

    Ein Ausflug nach Haskell hat mir erst gezeigt, wie einfach man zum Beispiel das Auslesen aus einer Datei machen kann: Als Liste von Zeilen die über Lazy evaluation dynamisch beschafft werden, wenn sie gebraucht werden.
    Mit dem Neuen Standard ist C++ mächtig genug um das ganze Repertoire funktionaler Programmierung einfach und effizient abzubilden. Und ich denke, diese Chance sollte man nutzen.

    "Als Liste von Zeilen die über Lazy evaluation dynamisch beschafft werden, wenn sie gebraucht werden." konnten wir mit ranges schon seit 10 Jahren, nur wußten wir es vor heuer nicht, es ist zum heulen.
    foreach (mit häßlichen dreistufigen for-makros) konnten wir schon seit zehn jahren, nur wußten wir es vor heuer nicht, es ist zum heulen.



  • @DStefan
    Wieso meinst du, dass kein Bedarf da ist?

    Also es gibt ja gewissen Bedarf an solchen Techniken. Microsoft, Adobe und wahrscheinlich viele andere benutzen ja die Loki Bibliothek, welche ein paar solche Techniken benutzt, wie sie mit C++0x kommen..

    btw.
    Mir ist was komisches aufgefallen. Warum sind die news auf der Loki page älter, als die von 2007?!

    "Neu":
    http://loki-lib.sourceforge.net/index.php?n=Main.News

    "Alt":
    http://web.archive.org/web/20071021090321/http://loki-lib.sourceforge.net/index.php?n=Main.News



  • drakon schrieb:

    btw.
    Mir ist was komisches aufgefallen. Warum sind die news auf der Loki page älter, als die von 2007?!

    "Neu":
    http://loki-lib.sourceforge.net/index.php?n=Main.News

    "Alt":
    http://web.archive.org/web/20071021090321/http://loki-lib.sourceforge.net/index.php?n=Main.News

    Weil er zu einem großen Wurf ausholt. Und gedacht hatte, das schon längst geworfen zu haben, aber MIST, es dauert doch ein Momentchen länger.
    ?



  • drakon schrieb:

    @DStefan
    Wieso meinst du, dass kein Bedarf da ist?

    Also es gibt ja gewissen Bedarf an solchen Techniken. Microsoft, Adobe und wahrscheinlich viele andere benutzen ja die Loki Bibliothek, welche ein paar solche Techniken benutzt, wie sie mit C++0x kommen..

    Ach, ich meine gar nicht, dass kein Bedarf für C++0x besteht. Ich meine, dass der Bedarf an anderen Dingen größer ist. Dass sich C++ am Markt (nicht unbedingt im kommerziellen Sinne) besser behaupten könnte, wenn diese Dinge beachtet würden. Zum Beispiel:

    - Umfassende Bibliotheksunterstützung für Dinge aus der Realen Welt. Wie sie ja auch in diesem Thread schon angefragt wurden.

    - Ein definiertes Name Mangling, so dass DLLs verschiedener Hersteller oder verschiedener Versionen desselben Herstellers problemlos verwendet werden können.

    - Konsequente und leicht zu verwendende Unterstützung für Unicode. Und zwar im Programm wie im Quelltext. Warum, zum Teufel, darf ich eine Klasse nicht Käsekuchen nennen - und dieser eine Methode [c]preisIn€()[c] verpassen?!

    Undsoweiter. Das sind bloß Dinge, die mir grad spontan so einfallen. Ich finde, das sind wichtige Dinge. Ja, ich würde so weit gehen zu sagen, dass mir allein schon diese drei Punkte wichtiger sind als alles, was der neue Standard bringen mag. -- Wobei ich freimütig zugebe, dass ich wohl eher schlecht über die geplanten Neuerungen informiert bin 😉

    Stefan.



  • DStefan schrieb:

    Das sehe ich ähnlich. Und ich befürchte, dass die Anzahl der Ablehner, vor allem im kommerziellen Bereich, ziemlich groß sein wird. C++, inklusive der Standard-Bibliotheken, drängt sich eigentlich in keinem relevanten Bereich der Programmier-Szene wirklich auf als die Sprache der Wahl. Und daran wird sich - leider - auch mit dem neuen Standard vermutlich nichts ändern.

    Versteht mich nicht falsch: Ich liebe C++. Aus vielen Gründen. Aber ich bin der Meinung, dass sich Standard-C++ leider in die völlig falsche Richtung bewegt. Die Sprache wird in Zukunft mehr und mehr an Relevant einbüßen. Fürchte ich.

    Stefan.

    Wie kommst Du darauf, dass C++ nicht die Sprache der Wahl ist? Du sitzt wahrscheinlich gerade vor einem Programm, welches mit C++ geschrieben ist. Welchen Browser nutzt Du? Firefox? IE? Safari? Konqueror? Egal - zumindest die sind in C++ geschrieben. Bei Java sieht man es halt auf dem ersten Blick. Wenn nicht an der Optik dann an der Dateiendung (oder der Langsamkeit 😉 🤡 ). Bei C++ sieht man es nicht. C++-Programme funktionieren halt einfach.

    Ich verdiene meinen Lebensunterhalt mit der Programmierung in C++. Die Ergebnisse sind überall sichtbar aber kaum einer weiß, dass da C++-Programme dahinter stehen.



  • DStefan schrieb:

    Ach, ich meine gar nicht, dass kein Bedarf für C++0x besteht. Ich meine, dass der Bedarf an anderen Dingen größer ist.

    Das tolle an C++ ist dass Du wirklich ALLES damit machen kannst. C++ kann schon verdammt viel, noch mehr wäre einfach übertrieben. Wenn dir irgendwas fehlt besorg dir einfach eine fertige Library oder programmier es dir selbst. Ausserdem, in welcher Programmersprache ausser C++ kann man Inline-Assembler einsetzen? Eg gibt vielleicht noch 3 oder 4, aber die meisten können es nicht.

    DStefan schrieb:

    - Umfassende Bibliotheksunterstützung für Dinge aus der Realen Welt. Wie sie ja auch in diesem Thread schon angefragt wurden.

    Wie gesagt, Bibliotheken für alles Mögliche findest du in mehrfacher Azsführung.

    DStefan schrieb:

    - Ein definiertes Name Mangling, so dass DLLs verschiedener Hersteller oder verschiedener Versionen desselben Herstellers problemlos verwendet werden können.

    DLLs haben doch schon festgelegte Formate, Wenn Du keine import-library hast, benutzt Du einfach LoadLibrary/GetProcAddress. Das ist alles kein Problem.

    DStefan schrieb:

    - Konsequente und leicht zu verwendende Unterstützung für Unicode. Und zwar im Programm wie im Quelltext. Warum, zum Teufel, darf ich eine Klasse nicht Käsekuchen nennen - und dieser eine Methode [c]preisIn€()[c] verpassen?!

    Fehlen Dir Umlaute wirklich? Ok, aber das ist Geschmacksache. Mich z.B. stören selbst umlaute und Leerzeichen in Dateinamen [ich bevorzuge mein_guete.txt statt Meine Güte . txt] 😋



  • general bacardi schrieb:

    DStefan schrieb:

    Ach, ich meine gar nicht, dass kein Bedarf für C++0x besteht. Ich meine, dass der Bedarf an anderen Dingen größer ist.

    Das tolle an C++ ist dass Du wirklich ALLES damit machen kannst. C++ kann schon verdammt viel, noch mehr wäre einfach übertrieben. Wenn dir irgendwas fehlt besorg dir einfach eine fertige Library oder programmier es dir selbst.

    Was willst Du uns damit sagen? Dass die Spracherweiterungen in C++0x übertrieben sind? Falls ja, frag mal die Boost-Entwickler, wie die das sehen. Rvalue Referenzen, Variadic Templates, decltype sind ziemlich geniale Erweiterungen, die die Entwicklung von Libraries erheblich verbessern und andere Dinge erst möglich machen (Ich freu' mich schon auf std::unique_ptr zB).



  • Sebastian Pizer schrieb:

    general bacardi schrieb:

    DStefan schrieb:

    Ach, ich meine gar nicht, dass kein Bedarf für C++0x besteht. Ich meine, dass der Bedarf an anderen Dingen größer ist.

    Das tolle an C++ ist dass Du wirklich ALLES damit machen kannst. C++ kann schon verdammt viel, noch mehr wäre einfach übertrieben. Wenn dir irgendwas fehlt besorg dir einfach eine fertige Library oder programmier es dir selbst.

    Was willst Du uns damit sagen? Dass die Spracherweiterungen in C++0x übertrieben sind?

    Nein, ich will damit sagen, dass Zusatzbibliotheken wenn man sie braucht, überall leicht erhältlich sind. Beispielsweise welche für Multithreading, grafische Oberflächen, Soundverarbeitung, netzwerkkommunikation usw, das alles muss man nicht in die SPrache integrieren. Was die neuen C++0x Feature angeht, so kann man sie benutzen oder auch nicht. So wie C++ schon immer benutzt wurde, daran wird sich nichts ändern. Jeder verwendet C++ nach seinem Geschmack und das finde ich gut. C++ bietet von allen Programmiersprachen die ich kenne die meiste Freiheit und die meisten Möglichkeiten. 🙂 👍



  • DStefan schrieb:

    - Konsequente und leicht zu verwendende Unterstützung für Unicode. Und zwar im Programm wie im Quelltext. Warum, zum Teufel, darf ich eine Klasse nicht Käsekuchen nennen - und dieser eine Methode [c]preisIn€()[c] verpassen?!

    Schade, daß Dummheit nicht weh tut.
    Wichtigste Zeile aus dem Käsekuchenbackprogramm:
    芝士蛋糕=烘烤(麵粉,牛奶,雞蛋,黃油,糖,乾酪);
    (Zum Anschauen ist es evtl nötig, "Zitieren" zu drücken)

    Außerdem: http://www.research.att.com/~bs/whitespace98.pdf



  • volkard schrieb:

    Außerdem: http://www.research.att.com/~bs/whitespace98.pdf

    Whitespace Overloading 😃 👍
    Kommt das in C++0x?



  • general bacardi schrieb:

    volkard schrieb:

    Außerdem: http://www.research.att.com/~bs/whitespace98.pdf

    Whitespace Overloading 😃 👍
    Kommt das in C++0x?

    However, since we now have the full Unicode character set available,
    we don't actually need hard-to-read long names. Such long names only make code obscure by causing
    unpleasantly long lines and unnatural line breaks. Multi-character names are a relic of languages that
    relied heavily on global name and encouraged overly-large scopes.

    This facility was also an instant success in China and Japan where the Chinese character set provides a
    much richer set of single characters than does the various Latin alphabets.

    oha...



  • volkard schrieb:

    ...Schade, daß Dummheit nicht weh tut. ...

    🙄
    Also das ist weder nötig noch hilfreich und gerade von Dir kenne ich das gar nicht ....

    Gruß

    Simon2.



  • general bacardi schrieb:

    ...

    DStefan schrieb:

    - Ein definiertes Name Mangling, so dass DLLs verschiedener Hersteller oder verschiedener Versionen desselben Herstellers problemlos verwendet werden können.

    DLLs haben doch schon festgelegte Formate, Wenn Du keine import-library hast, benutzt Du einfach LoadLibrary/GetProcAddress. Das ist alles kein Problem....

    Was wäre eigentlich so schwierig daran, zumindestens ein optionales standardisiertes Namemangling festzulegen?
    Wenn ein Compilerhersteller einen andern Weg findet/beschreiten möchte, ODR und overloading zu vereinen, kann ihm das ja trotzdem erlaubt sein... (halte ich aber eher für eine theoretische Möglichkeit).

    Oder gibt es einen gewichtigeren Grund als "Muss man ja nicht festlegen also tun wir's nicht"?

    (Noch lieber wäre mir ein komplettes standardisiertes ABI als Option)

    Gruß,

    Simon2.



  • volkard schrieb:

    Schade, daß Dummheit nicht weh tut.
    Wichtigste Zeile aus dem Käsekuchenbackprogramm:
    芝士蛋糕=烘烤(麵粉,牛奶,雞蛋,黃油,糖,乾酪);
    (Zum Anschauen ist es evtl nötig, "Zitieren" zu drücken)

    Außerdem: http://www.research.att.com/~bs/whitespace98.pdf

    Lieber volkard, ich bin nicht dumm. Ich mag manchmal etwas dummes sagen. Und manchmal tue ich bestimmt etwas dummes, aber das passiert jedem mal. So wie dir mit diesem Beitrag.

    Der ist nämlich nicht bloß dumm, weil er unhöflich ist - und Unhöflichkeit ist in den meisten Fällen eine dumme Angewohnheit - sondern auch, weil er verweigert, weswegen viele von uns hier sind: Die Diskussion.

    Schließlich sagst du nicht, warum du meinst, dass C++-Code nur diesen äußerst dürftigen Umfang an Zeichen enthalten sollte, sondern blökst einfach deine Meinung heraus und machst dich lustig über mich. Das ist die Haltung eines Dreizehnjährigen - und ich glaube, du bist doch schon ein bischen älter als dreizehn? Schwer zu glauben. Erwachsene Menschen diskutieren nämlich und sind höflich anderen gegenüber. Oder halten es mit Dieter Nuhr: "Wenn man nichts zu sagen hat, einfach mal die Klappe halten."

    Stefan.


Anmelden zum Antworten