1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › C++0x: Neue Version der…

C++, der würdige Nachfolger des Fortran-Dinos

Für Konsolen-Talk gibt es natürlich auch einen Raum ohne nerviges Gedöns oder Flamewar im Freiraum!
  1. Thema
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7

Neues Thema Ansicht wechseln


  1. C++, der würdige Nachfolger des Fortran-Dinos

    Autor: bitcracker 13.08.11 - 14:27

    Der Name passt: C++0x, jetzt C++11 ... so kryptisch wie die Sprache selbst :-)

    Beispiel (Quelle: http://en.wikipedia.org/wiki/C%2B%2B0x):

    template< class Obj > class CalculusVer2 {
    public:
    template<class Arg>
    typename std::result_of<Obj(Arg)>::type operator()(Arg& a) const {return member(a);}
    private:
    Obj member;
    };

    Guten Appetit ;-) Da bekommt man eine Ahnung vom Wildwuchs, der (notgedrungen) aus C entstanden ist.

    Ich habe viele Jahre in C/C++ entwickelt und habe wirklich großen Respekt vor der Leistung der C++-Designer und -Implementierer. Aber bei allem Respekt: Zeitgemäß ist der o.g. Programmierstil nicht mehr. C++ hat Fortran als Dino abgelöst.

    C++ als Compiler-Frontend für andere Sprachen, die also nach C++ übersetzen und dessen Performance ausnutzen - gerne. Aber direkt noch damit entwickeln? Wer tut sich sowas noch an, wenn er die freie Wahl der Sprache hat?

  2. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: QDOS 13.08.11 - 14:32

    ich seh das Problem nicht wirklich...

  3. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Rolex Ralf 13.08.11 - 14:53

    bitcracker schrieb:
    --------------------------------------------------------------------------------
    > Der Name passt: C++0x, jetzt C++11 ... so kryptisch wie die Sprache selbst
    > :-)
    >
    Vorsicht, jetzt kommen bestimmt gleich wieder die Leute mit dem "Erwachsenenprogrammiersprache"-Argument. C++ ist so kompliziert und kryptisch und wird es mit jeder neuen Ausgabe noch mehr, nur weil die C++-Entwickler so toll sind und wir so scheiße sind.


    PS: Die coole 80er-Brille hätte ich auch gerne. Bjarne hat ja jetzt anscheinend eine andere.

  4. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: RoterFux 13.08.11 - 15:56

    Schon mal komplexen Java Code angesehen? Der ist gleich undurchsichtig

  5. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Tapsi 13.08.11 - 16:40

    RoterFux schrieb:
    --------------------------------------------------------------------------------
    > Schon mal komplexen Java Code angesehen? Der ist gleich undurchsichtig

    Also ich finde Java/.NET Code lesbarer als C++ Code, aber das ist natürlich zum Teil auch subjektiv.

  6. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: PCAhoi 13.08.11 - 19:42

    tja, Jahrelang ebenfalls mit C++ rumgemacht. Mit dem Heap und Alloc gekämpft und auch so geilenen Konstrukten wir oben zitiert
    "typename std::result_of<Obj(Arg)>::type operator()(Arg& a) const {return member(a);}"

    Bringen wir es einfach auf den Punkt. C++ ist eine feine Sache, wenn man auf hardwarenaher Basis coden darf/muss.
    Ansonsten ist es ein Kropf. :-D

    Ich bin auch c# umgestiegen - schon etlich Jahre - und den Syntax von C++ will ich im Leben nicht noch einmal sehen geschweige denn anfassen. Guckt Euch doch nur den Nerd auf dem Bild an. So cool musse erstmal aussehen, dann darfse c++ coden ;)

  7. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Trollversteher 13.08.11 - 19:58

    Das ist doch Quatsch - wenn Du nur solchen code erzeugen kannst, dann fehlt es dir an Disziplin, sprich der Coder ist schuld nicht die Sprache. Man kann C++ ebenso strukturiert und übersichtlich schreiben wie Java oder c# - ist natürlich dann nicht so 1337 cool, wenn andere plötzlich deinen code lesen können, stand andächtig auf den Kauderwelsch zu starren. C++ erfordert halt eine gewisse Selbstdisziplin und Reife - wer die nicht hat gehört allerdings zurecht in den Java-Kindergarten, wo man dann Benimm und Beherrschung lernt, weil einen die im Vergleich zu C++ vorhandenen Einschränkungen dazu zwingen...

  8. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Tapsi 13.08.11 - 20:08

    Trollversteher schrieb:
    --------------------------------------------------------------------------------
    > Das ist doch Quatsch - wenn Du nur solchen code erzeugen kannst, dann fehlt
    > es dir an Disziplin, sprich der Coder ist schuld nicht die Sprache.

    Wohl wahr, aber manche Sprachen sind komplizierter und komplexer, was dann auch oft zu schwerer lesbaren Code führen kann. Es gibt auch Sprachen, da ist das genau umgekehrt.

    > Man kann C++ ebenso strukturiert und übersichtlich schreiben wie Java oder c# -
    > ist natürlich dann nicht so 1337 cool, wenn andere plötzlich deinen code
    > lesen können, stand andächtig auf den Kauderwelsch zu starren. C++
    > erfordert halt eine gewisse Selbstdisziplin und Reife - wer die nicht hat

    Trotzdem kommt bei harter aggressiver Optimierung schon öfters komplizierter Code raus, was ja beim *hacken* nunmal passiert. Er meint ja auch nur dass eben oft schwerer lesbarer Code dabei rauskommt...

    > gehört allerdings zurecht in den Java-Kindergarten, wo man dann Benimm und
    > Beherrschung lernt, weil einen die im Vergleich zu C++ vorhandenen
    > Einschränkungen dazu zwingen...

    Umgekehrte Frage, wie soll man aus diesem Satz dich ernst nehmen?
    Was für eine Aussage



    1 mal bearbeitet, zuletzt am 13.08.11 20:09 durch Tapsi.

  9. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: PCAhoi 13.08.11 - 20:35

    Trollversteher schrieb:
    --------------------------------------------------------------------------------
    > Das ist doch Quatsch - wenn Du nur solchen code erzeugen kannst, dann fehlt
    > es dir an Disziplin, sprich der Coder ist schuld nicht die Sprache. Man
    > kann C++ ebenso strukturiert und übersichtlich schreiben wie Java oder c# -
    > ist natürlich dann nicht so 1337 cool, wenn andere plötzlich deinen code
    > lesen können, stand andächtig auf den Kauderwelsch zu starren. C++
    > erfordert halt eine gewisse Selbstdisziplin und Reife - wer die nicht hat
    > gehört allerdings zurecht in den Java-Kindergarten, wo man dann Benimm und
    > Beherrschung lernt, weil einen die im Vergleich zu C++ vorhandenen
    > Einschränkungen dazu zwingen...

    Der Trollversteher, na dann mal los :-D
    Ich habe etlichen C++ Code lesen müssen. Eigenen und den von Kollegen, Vorgänger und Nerds. Es war jedesmal (bis auf die Studie meines eigenen natürlich!) eine Qual.

    Vergleich doch mal die Strukten, Alten! In C# rafft jeder Hannes was abgeht, wenn er habwegs die Logik raushat. In C++? Da kannst Dich für immer in einer Firma als unentbehrlich machen, weil Du der Nerd bist.

    Klar haben z.B. c# Einschränkungen. Wayne interessiert das?
    Standardprogramme lassen sich damit einfacher realisieren: Zeitfaktor, Kostenfaktor.
    Bevor ich mir so einen C++ Nerd ins Büro setze, überleg ich lieber zweimal vorher :-D

    so, gute Nacht ;)

  10. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Trollversteher 13.08.11 - 20:44

    Da hast Du mich wohl ein wenig falsch verstanden - ich bin kein Nerd, und wähle meine Programmiersprache nach den Projektanforderungen, nicht nach irgendwelchen nerdigen Schrullen. Und meine erste Wahl ist auch C#, wenns nicht gerade im embedded oder highperformance Bereich ist. Ich habe auch schon viel grausamen C++ code gesehen, besonders in schlecht dokumentierten Open Source Projekten von Linux Nerds ;) Trotzdem kann man C++ durchaus lesbar und strukturiert schreiben - die Freiheit von C++ gilt auch für die Wahl zwischen Einfach und Kompliziert. Mag sein, dass die Versuchung groß ist, wild mit Templates herumzuposen und in alten prozedualen code mit 5000 Zeilen-Methoden zu verfallen. Aber das meinte ich mit Disziplin...

  11. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Trollversteher 13.08.11 - 20:51

    >Umgekehrte Frage, wie soll man aus diesem Satz dich ernst nehmen?

    Wie soll man ihn nicht ernstnehmen? Es ist eine immanente und beabsichtige Eigenschaft von Java, Entwickler zu gewissen Dingen zu "zwingen", um eben gerade den vom C++ bekannten Wildwuchs und die "Schweinereien", die dort üblich sind zu unterbinden. Das ist ja nichts Schlechtes, hat schon einen gewissen Pädagogischen Ansatz, so war das mit dem "Kindergarten" gemeint, und nicht abwertend gegenüber Java Entwicklern, wie du es bequemer weise verstehen wolltest...

    >Was für eine Aussage

    Widerleg sie...

  12. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: QDOS 13.08.11 - 23:57

    als wäre der Syntax von C# soviel anders von dem von C++…

    nebenbei kann man das Beispiel auch so schreiben - und das ist kein Konstruktor… -:

    "auto operator()(Arg& a) const -> std::result_of<Obj(Arg)>::type {
    return member(a);
    }"

  13. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: aha47 14.08.11 - 10:13

    Tapsi schrieb:
    --------------------------------------------------------------------------------

    > Trotzdem kommt bei harter aggressiver Optimierung schon öfters
    > komplizierter Code raus, was ja beim *hacken* nunmal passiert. Er meint ja
    > auch nur dass eben oft schwerer lesbarer Code dabei rauskommt...

    Aggressive Optimierung ist Aufgabe des Compilers. Oder was meinst du sonst mit "Optimierung"?

  14. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Trollversteher 14.08.11 - 13:52

    >Aggressive Optimierung ist Aufgabe des Compilers. Oder was meinst du sonst mit "Optimierung"?

    Eben. Das einzige was da "optimiert" wird ist die Grösse des Sourcecodes, sprich, es dient einzig und alleine der Faulheit des Entwicklers.

  15. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Tapsi 14.08.11 - 14:17

    > Aggressive Optimierung ist Aufgabe des Compilers. Oder was meinst du sonst
    > mit "Optimierung"?

    Man kann doch in C/C++ doch sehr viel optimieren, wenn man Speicherplätze wiederverwendet, mehrfach nutzt usw.
    Ich hatte mir mal ein Sortierprogramm zeigen lassen, da wurde auch auf diese Weise extrem viel eingespart, da man mit den Speicher etwas *tricky* umgegangen ist. Kann man machen, wird aber unter Umständen nur der verstehen, der es geschrieben hat.



    1 mal bearbeitet, zuletzt am 14.08.11 14:18 durch Tapsi.

  16. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Tapsi 14.08.11 - 14:23

    Trollversteher schrieb:
    --------------------------------------------------------------------------------
    > >Aggressive Optimierung ist Aufgabe des Compilers. Oder was meinst du sonst
    > mit "Optimierung"?
    >
    > Eben. Das einzige was da "optimiert" wird ist die Grösse des Sourcecodes,
    > sprich, es dient einzig und alleine der Faulheit des Entwicklers.

    Warum?
    Weil selber optimieren vielleicht eine auch keine so schlechte Angewohnheit ist, anstatt sich auf Compileroptimierungen zu verlassen, die bestimmt von 90% aller Programmierer nicht verstehen würden.
    Natürlich stehen Optimierungen oftmals in Konflikt mit dem *sauberen* Programmierstil, aber das zeugt nicht automatisch einer Faulheit.
    Jeder der dauernd neue Objekte instanziert, Speicher löscht und dann wieder neuen holt ist für mich jemand der einfach zu Faul ist, einfach mal über Wiederverwendung nachzudenken ( sieht man eigentlich ziemlich oft ). Faulheit ist für mich eher wenn man sich stets auf Optimierungen vom Compiler verlässt, statt sein eigenes Gehirn mal rattern zu lassen (IMHO).

  17. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Trollversteher 14.08.11 - 14:24

    >Man in C/C++ doch sehr viel optimieren, wenn man Speicherplätze wiederverwendet, mehrfach nutzt usw.

    Das macht auf einem modernen Pc allerdings wirklich keinen relevanten Unterschied aus und klingt mir mehr nach einem Entwickler, der sich ein bisschen kreativ austoben wollte. Da würde ich sofort eine Lösung mit konventioneller Methode implementiern und mit einem Profiler/Benchmark nachmessen, was der Voodoo wirklich bewirkt.

    Wo so etwas wirklich Sinn macht, ist der Embedded Bereich, also kleine Geräte mit beschränkter Performance und Speicherressourcen. Da hat man aber auch keine Alternative, denn eine Java VM bremst und frisst auf solchen Geräten nur unnötig Reserven. Kenne das aus der Spielentwicklung in J2ME in der pre-iPhone Aera. Um da ein bisschen was rauszukitzeln musste das gute alte Java derart vergewaltigt werden, dass am Ende übler aussah als jeder Ansi C Code aus den 80ern, und ebenso objektorientiert war...

  18. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Trollversteher 14.08.11 - 14:30

    Nein. Der Grund ist, dass sowohl moderne Compiler als auch moderne Prozessoren (embedded und Kleinstgeräte ausgenommen) derart kompliziert und für einen Programmierer unberechenbar sind, dass sich 99% aller "Optimierungen" als reines Voodoo herausstellen. Sicher gibt es die ein oder andere Regel zu beachten, aber die lässt sich auch in lesbarem code umsetzen.
    Ich mach in den Fällen immer gerne den Vergleichstest mit traditionellen Algorithmen - und mal Hand aufs Herz, in den seltensten Fällen ist es relevant, ob eine Methode 1 Mio Aufrufe um zwei Millisekunden schneller erledigt. Und wenn, dann kommst Du um C++ sowieso nicht herum, denn in Java ist es dann ganz sicher nicht schneller zu machen - in dem Fall wäre das Argumemt in dieser Diskussion wertlos...

  19. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Tapsi 14.08.11 - 14:33

    Trollversteher schrieb:
    --------------------------------------------------------------------------------
    > >Man in C/C++ doch sehr viel optimieren, wenn man Speicherplätze
    > wiederverwendet, mehrfach nutzt usw.
    >
    > Das macht auf einem modernen Pc allerdings wirklich keinen relevanten
    > Unterschied aus und klingt mir mehr nach einem Entwickler, der sich ein
    > bisschen kreativ austoben wollte. Da würde ich sofort eine Lösung mit
    > konventioneller Methode implementiern und mit einem Profiler/Benchmark
    > nachmessen, was der Voodoo wirklich bewirkt.

    Ahm ich weiß den Blog nicht mehr wo das wahr, aber dass war eine Optimierung von über 300%. Vor allem wenn man darüber nachdenkt was im Hintergrund abläuft, kann ich mir schon vorstellen dass man so viel mehr Optimierungen machen kann als ein Compiler, weil dieser ja nicht immer alle Dinge Wissen kann.
    Ob sich aber diese Programmierweise mit späteren Updates mehr fehleranfällig erweist, sei mal dahin gestellt.


    > Wo so etwas wirklich Sinn macht, ist der Embedded Bereich, also kleine
    > Geräte mit beschränkter Performance und Speicherressourcen.

    Sicher.


    > Da hat man aber auch keine Alternative, denn eine Java VM bremst und frisst auf solchen
    > Geräten nur unnötig Reserven. Kenne das aus der Spielentwicklung in J2ME in
    > der pre-iPhone Aera.

    Für Embedded-Geräte gibt es auch hocheffiziente Java-VM's die extrem wenig Overhead haben.


    > Um da ein bisschen was rauszukitzeln musste das gute
    > alte Java derart vergewaltigt werden, dass am Ende übler aussah als jeder
    > Ansi C Code aus den 80ern, und ebenso objektorientiert war...

    Naja ich setzte bei Java sehr oft auf Object Pooling, effiziente Schleifen und Vermeidung von rekursive Algorithmen. (Was an sich ja eher leichte Optimierungen sind) Den Zuwachs an Ressourcen den ich dadurch erhalte, ist oftmals doch nicht von der Hand zu weisen.

  20. Re: C++, der würdige Nachfolger des Fortran-Dinos

    Autor: Tapsi 14.08.11 - 14:42

    Trollversteher schrieb:
    --------------------------------------------------------------------------------
    > Nein. Der Grund ist, dass sowohl moderne Compiler als auch moderne
    > Prozessoren (embedded und Kleinstgeräte ausgenommen) derart kompliziert und
    > für einen Programmierer unberechenbar sind, dass sich 99% aller "Optimierungen"
    > als reines Voodoo herausstellen.

    Über was für Optimierungen reden wir hier denn eigentlich ?
    Ja sicher magst du da Recht haben, aber ich finde es unglaublich naiv sich blind auf Compileroptimierungen zu verlassen. Wenn man weiß, was der Compiler wo optimieren wird okay, aber so naja mal schauen ob er was optimieren wird ist... neija.. meine Kommilitonen würden sagen toller Compiler *grins*
    Ich bin da eher neugierig, was wann warum macht der Compiler. Vorher verlass ich mich auf gar nichts und wenn ich das weiss, kann ich auch selber Optimierungen vornehmen. ( <== vllt. ka das falsch rüber )

    > Sicher gibt es die ein
    > oder andere Regel zu beachten, aber die lässt sich auch in lesbarem code
    > umsetzen.
    > Ich mach in den Fällen immer gerne den Vergleichstest mit traditionellen
    > Algorithmen - und mal Hand aufs Herz, in den seltensten Fällen ist es
    > relevant, ob eine Methode 1 Mio Aufrufe um zwei Millisekunden schneller
    > erledigt.

    Klar gebe ich dir Recht, aber es gibt wirklich auch Sachen wo man heulen kann. ZBsp. hat sich ja in der Informatik, oder ich sag mal bei uns in der WI, die Rekursion als Stein der Weisen breit gemacht. Im ganzen Studium ist nicht mal einer darauf gekommen zu erklären was hinter einer Rekursion für Aufwand steht ( wenn diese nicht optimiert sind ). Das macht dann manchmal doch mehr als nur 2ms aus.

    > Und wenn, dann kommst Du um C++ sowieso nicht herum, denn in Java
    > ist es dann ganz sicher nicht schneller zu machen - in dem Fall wäre das
    > Argumemt in dieser Diskussion wertlos...

    Dass denkst du. Man kann in Java sehr viel optimieren (IMHO). Aber gerade bei Projekten, wo Ressourcen eine zentrale Rolle spielen, wie Systemprogramme, ist man mit C viel besser dran.

    >> denn in Java ist es dann ganz sicher nicht schneller zu machen <<
    Warum halten sich diese Gerüchte immer noch ?!?
    Aber da wären wir wieder bei der Frage, was verstehen wir unter Optimierungen genau ?

  1. Thema
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. Anstalt für Kommunale Datenverarbeitung in Bayern (AKDB), München, Regensburg
  2. HxGN Safety & Infrastructure GmbH, Bonn
  3. Landkreis Dahme-Spreewald, Lübben, Königs Wusterhausen
  4. über duerenhoff GmbH, München, Stuttgart

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. (u. a. Samsung Galaxy Note 20 256GB für 599€, Samsung Galaxy S20 Ultra 5G 128GB für 899€)
  2. (u. a. Arma 3 für 17,99€, Assassin's Creed: Valhalla für 36,99€, Unreal Deal Pack für 2...
  3. 3.999€ (statt 4.699€)
  4. 74,99€ (Bestpreis)


Haben wir etwas übersehen?

E-Mail an news@golem.de


Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme