Wie lange hat es gedauert bis ihr alle Aspekte von C++ verinnerlicht hattet?



  • So wie ich mitbekommen habe ist er noch sehr jung und Erfahrung kann man sich nun einmal nicht anlesen. Jeder hat auch eine andere Motivation und Lerntempo, schon deswegen kann man die Zeiten nicht vergleichen. Es ist auch niemand ein "besserer" Entwickler weil er C++ in zwei anstelle von 5 Jahren lernt.

    Also, who cares? 🙄

    BTT



  • Butterbrot schrieb:

    Es ist auch niemand ein "besserer" Entwickler weil er C++ in zwei anstelle von 5 Jahren lernt.

    Natürlich nicht. Das lag einfach an meiner falschen Vorstellung 😉

    @Eisflamme: Wenn dich das berührt hat, dann tut mir das Leid. Ich wusste eben nicht, dass.. wie gesagt; siehe einen Satz weiter oben 😃



  • Das hat nichts mit berührt zu tun. Du wertest ziemlich oft, obwohl Du meistens so gut wie nichts weißt. Mir ist das egal, das hier ist nur so ein Forum, aber es wäre rücksichtsvoller und schlauer sich Mal etwas mit den ersten Eindrücken zurückzuhalten oder diese zumindest nicht rauszuposaunen wie ein auf ein Nagelbrett getretener Elefant.

    Ich denke, ich schließe mich Pi an.

    So, reicht jetzt auch mit dem Zirkus.



  • Sone schrieb:

    tntnet schrieb:

    C++ kannte noch keine Templates, Namespaces oder Exceptions.

    😮
    Heute würde ich sagen, generische Programmierung ist mitunter ein Hauptkonzept von C++.

    Das ist eine interessante Sache. Ich war von Anfang an von C++ begeistert und bin es bis heute. Aber tatsächlich ist die Verwendung von Templates zwangsweise nicht die Ursache. Es ist ein anderes Konzept, was ich an C++ so schätze und was oft vergessen wird, weil es einfach da ist. Und zwar sind das Destruktoren. Das war für mich damals die Offenbarung.

    Ich bin faul (oder positiv ausgedrückt: ich suche immer den effizientesten Weg zum Ziel) und ich fand das in den Sprachen, die ich vorher verwendet hatte immer lästig, aufzuräumen. Wenn die Aufgabe erledigt war musste immer aufgeräumt werden. Das bleibt mir mit Destruktoren erspart. Wenn beispielsweise eine Datei verarbeitet wird, ist die Bearbeitung nicht mit der letzten Zeile fertig, sondern danach muss die Datei noch geschlossen werden. Bei C++ liegt mein fstream auf dem Stack und der Destruktor kümmert sich darum.

    Ganz bewusst habe ich hier die Dateiverarbeitung genommen. Häufig wird bemängelt, dass C++ ein garbage collector fehlt. Dieser löst aber nur das Problem der Speicherverwaltung. Ein Destruktor kann nicht nur Speicher frei geben sondern auch Filehandles oder andere Resourcen.

    Die anderen Features, wie Templates habe ich als Zugabe erfahren. Mit den Templates kamen die standardisierten Containerklassen und später noch die standardisierte String-Klasse. Das waren weitere Meilensteine in der Entwicklung von C++, die eher noch bedeutender waren, als C++11. Zumindest empfinde ich das noch heute so, da ich, wie viele andere noch nicht bei C++11 angekommen ist.

    Im professionellen Bereich dauert das halt länger. Da wird eher auf Kontinuität geachtet und da verwendet man schon mal Compiler, die gut abgehangen sind. Ich arbeite momentan hauptsächlich mit IBM xlc 9.0, der noch keine C++11-Features unterstützt, aber das ist auch ok.



  • Deine geschätzten Destruktoren (aka RAII) werden mit C++11 rvalue References erst so richtig toll... 😉



  • Eisflamme schrieb:

    Ich denke, ich schließe mich Pi an.

    Wie bitte? Ich hab hier doch bisher nicht mal gepostet. 😃
    Aber offenbar gehe ich euch schon so sehr ab, dass ihr mich überall seht. 🙂



  • dot schrieb:

    Deine geschätzten Destruktoren (aka RAII) werden mit C++11 rvalue References erst so richtig toll... 😉

    Die sind schon seit 20 Jahren richtig toll. Rvalue References sind eine kleine Verbesserung. Ich fand C++ schon vor C++11 richtig toll.



  • tntnet schrieb:

    dot schrieb:

    Deine geschätzten Destruktoren (aka RAII) werden mit C++11 rvalue References erst so richtig toll... 😉

    Die sind schon seit 20 Jahren richtig toll. Rvalue References sind eine kleine Verbesserung. Ich fand C++ schon vor C++11 richtig toll.

    Ich fand C++ auch vor C++11 richtig toll, aber rvalue References sind viel mehr als nur eine kleine Verbesserung. Imo sind sie vielleicht das C++11 Feature, das den Umgang mit der Sprache am stärksten verändert hat/verändern wird. Wenn ich nur ein Feature von C++11 behalten dürfte, wären es vermutlich rvalue References...



  • Ich muss mich dot anschließen. Vor C++11 fand ich C++ quasi unbenutzbar. Jetzt ist es mit Abstand meine Lieblingssprache. Und RValue Referenzen haben den größten Beitrag dazu geleistet. Wenn C++ dieses Feature nicht hätte, wären wohl C oder C#/Java meine Favoriten, je nach Anwendungsbereich.



  • Auch auf die Gefahr hin jetzt gleich wieder einen dummen Spruch gedrückt zu kriegen, hat jemand kurz einen Link zu den Auswirkungen der RValue-Referenzen? Ich verstehe das Grundprinzip und dass dadurch die Performance deutlich steigen müsste. Geht es schon darum oder was ist euer Kernpunkt?



  • Eisflamme schrieb:

    Ich verstehe das Grundprinzip und dass dadurch die Performance deutlich steigen müsste. Geht es schon darum oder was ist euer Kernpunkt?

    Nun Performance ist durchaus ein Teil. Der Punkt ist halt, dass du nur mit rvalue Referenzen ordentlich handles (wohin auch immer, Pointer, Sockets, Dateien, Verbindungen sonstwo hin, Shader Objekte ...) kapseln kannst, ohne Entweder mit RAII zu brechen, die Objekte unkopierbar zu machen, oder auf reference counting umzusteigen. Es Verbindet die Einfachheit von C (Pointer kopieren ist ja kein Problem) mit der Sicherheit von C++, dass alles automatisch geschlossen wird, ohne oder mit kaum Performanceeinbußen. (Kaum, da das eine Handle ja auf "invalid" gesetzt werden muss. Keine Ahnung ob und wann das weg optimiert wird, aber in jedem Fall wird es kaum Einfluss auf die Performance haben, im Gegensatz zu reference counting oder sonstigen Scherzen.)



  • @Eisflamme: Ich finde diese Serie von Artikeln fuer den Einstieg ziemlich gut: http://thbecker.net/articles/rvalue_references/section_01.html



  • 314159265358979__ schrieb:

    Eisflamme schrieb:

    Ich denke, ich schließe mich Pi an.

    Wie bitte? Ich hab hier doch bisher nicht mal gepostet. 😃
    Aber offenbar gehe ich euch schon so sehr ab, dass ihr mich überall seht. 🙂

    Ok, jetzt kriege ich wirklich einen Anfall.
    Bist du gebannt? Ich hab dich durchs halbe Internet getrackt! 😡



  • Sone schrieb:

    314159265358979__ schrieb:

    Eisflamme schrieb:

    Ich denke, ich schließe mich Pi an.

    Wie bitte? Ich hab hier doch bisher nicht mal gepostet. 😃
    Aber offenbar gehe ich euch schon so sehr ab, dass ihr mich überall seht. 🙂

    Ok, jetzt kriege ich wirklich einen Anfall.
    Bist du gebannt? Ich hab dich durchs halbe Internet getrackt! 😡

    Ich glaube, dass Kellerautomat PI ist. 🕶



  • Eisflamme schrieb:

    Auch auf die Gefahr hin jetzt gleich wieder einen dummen Spruch gedrückt zu kriegen, hat jemand kurz einen Link zu den Auswirkungen der RValue-Referenzen? Ich verstehe das Grundprinzip und dass dadurch die Performance deutlich steigen müsste. Geht es schon darum oder was ist euer Kernpunkt?

    Abgesehen von dem von Kellerautomat verlinkten Artikel, ist auch dieser hier noch sehr empfehlenswert: http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

    Performancepotential ist imo nur ein Nebeneffekt von rvalue references. Der wichtigste Aspekt ist, dass du damit, wie cooky451 schon angedeutet hat, Dinge ausdrücken kannst (move Semantik), die du zuvor einfach nicht richtig ausdrücken konntest. std::auto_ptr ist das beste Beispiel für den gescheiterten Versuch, ownership transfer ohne C++11 zu implementieren...



  • Sone schrieb:

    Bist du gebannt? Ich hab dich durchs halbe Internet getrackt! 😡

    Na besonders weit scheinst du ja nicht gekommen zu sein. 😃



  • Ich glaube, dass schrieb:

    Sone schrieb:

    314159265358979__ schrieb:

    Eisflamme schrieb:

    Ich denke, ich schließe mich Pi an.

    Wie bitte? Ich hab hier doch bisher nicht mal gepostet. 😃
    Aber offenbar gehe ich euch schon so sehr ab, dass ihr mich überall seht. 🙂

    Ok, jetzt kriege ich wirklich einen Anfall.
    Bist du gebannt? Ich hab dich durchs halbe Internet getrackt! 😡

    Ich glaube, dass Kellerautomat PI ist. 🕶

    Näh, Kellerautomat ist nicht so unnötig.

    cooky451 schrieb:

    Sone schrieb:

    Bist du gebannt? Ich hab dich durchs halbe Internet getrackt! 😡

    Na besonders weit scheinst du ja nicht gekommen zu sein. 😃

    Nein, da haste Recht, ich hab nur folgende Sites gefunden:

    http://www.sploder.com/games/members/314159265358979/
    http://forum.die-staemme.de/showthread.php?168898-314159265358979
    http://www.spieleprogrammierer.de/user/5061-paprikachu/
    http://www.herocraftonline.com/main/threads/paprikachu.11143/

    Und eine auf tumblr, aber die ist gerade irgendwie off.



  • Wo es gerade um RValue References geht: Gibt es eigentlich irgendwo ein Quiz, mit dem man sich die einzelnen Aspekte abfragen kann? 😃



  • Okay, Ownership-Transfer gefällt mir, da versteh ich, wieso sich ein Fass öffnet.

    Ich denke nur gerade drüber nach, wieso das jetzt für Handles im Speziellen toll ist. Wenn die auf irgendetwas zeigen, kann man es kopieren, das ist schön. Aber wann käme ich denn auf die Idee ein Handle zu moven? Oder geht es nicht darum, sondern um das Objekt dahinter, was gemoved wird? Aber wieso ist das hilfreich?

    Jedoch: ich lese diese Artikel, sobald ich dazu komme, vermutlich wird mir das dann eh klar. Danke!



  • Eisflamme schrieb:

    Aber wann käme ich denn auf die Idee ein Handle zu moven?

    Was passiert, wenn du ein Handle kopierst? Du hast auf einmal zwei Objekte, mit dem selben Handle...wer von den beiden gibt das Objekt nun wann genau frei?


Anmelden zum Antworten