Erst C und dann erst C++?



  • borg schrieb:

    seitdem ich mich in meiner bachelorarbeit intensiv mit python und die anbindung von python an c libraries beschäftigt hab ist die anzahl der anwendungsgebiete von c++ drastisch geschrumpft, für mich.

    eine ähnliche erfahrung wird fast jeder C++ programmierer früher oder später machen, vielleicht nicht unbedingt mit python, aber python ist ein ziemlich guter kandidat um das elende C++ gefrickel weit hinter sich zu lassen.
    🙂



  • wird gleich gelöscht! schrieb:

    eine ähnliche erfahrung wird fast jeder C++ programmierer früher oder später machen, vielleicht nicht unbedingt mit python, aber python ist ein ziemlich guter kandidat um das elende C++ gefrickel weit hinter sich zu lassen.
    🙂

    ich hab nur gesagt dass die anzahl der anwendungsgebiete geschrumpft ist, nicht das es keine mehr gibt. ich hab gerade erst ein neues projekt mit c++ angefangen.

    wenn du von anfang an bei "net" als nick geblieben wärst würden deine beiträge auch nicht gelöscht werden. dieser wechsel zwischen unterschiedlichen nicks und unregistrierten posts provoziert eben.



  • borg schrieb:

    imo ist in vielen ebenen ein höheres level möglich:
    - ausdrucksstärke
    - verständlichkeit
    - abstraktion
    seitdem ich mich in meiner bachelorarbeit intensiv mit python und die anbindung von python an c libraries beschäftigt hab ist die anzahl der anwendungsgebiete von c++ drastisch geschrumpft, für mich.

    for v in cell_complex:
        equation = sum_vev((0.0, e), quan * orient(1, e), v)
    

    Dein Code drückt auch etwas anderes aus 🙄. Was an dem C++-Code hässlich ist imho, die for-Schleife (ändert sich hoffentlich in C++0x) und das man [] für {} benutzen muss. Und wie man symbolisch ableitet hast du auch verschwiegen.

    Klar gibt es Sprachen in denen sich so etwas noch Ausdrucksstärker darstellen lassen würde, wobei ich da eher Haskell als Beispiel nennen würde. Sicher ist C++ nicht dafür geschaffen worden und vieles sind Tricks (die dank boost::mpl/phoenix/fusion/proto aber nicht ganz so hässlich sind). Aber es gibt keine andere Sprache, mit der man eine ähnliche Abstraktion und eine entsprechend hohe Performance erzielen kann. Da der gezeigte Code im Bereich Scientific Computing verwendet wird, ist aber die Ausführungsgeschwindigkeit extrem wichtig.



  • rüdiger schrieb:

    Dein Code drückt auch etwas anderes aus 🙄.

    ich weiß auch nicht so genau was dein code schnippsel tut, das lässt sich so ohne weiteres daraus nicht ableiten ;).

    rüdiger schrieb:

    Da der gezeigte Code im Bereich Scientific Computing verwendet wird, ist aber die Ausführungsgeschwindigkeit extrem wichtig.

    je nachdem wie groß das projekt ist, könnte ich mir trotzdem vorstellen, dass eine mischform aus python und c sinnvoll wäre. kennst du schon scipy und numpy?
    aber wie gesagt, es gibt durchaus projekte für die c++ die programmiersprache der wahl ist. allerdings ist es in den allermeisten projekten nunmal so, dass sich rechenaufwendige/mathematische sachen auf ein paar funktionsaufrufe beschränken, die ausgelagert werden können.

    edit: hab die letzten zwei absätze gelöscht, hab keinen lust auf einen flamewar 🙂



  • borg schrieb:

    je nachdem wie groß das projekt ist, könnte ich mir trotzdem vorstellen, dass eine mischform aus python und c sinnvoll wäre.

    so eine 'mischprogrammierung' ist übrigens gar nicht das schlechteste. nicht selten werden auch in grossen projekten verschiedene sprachen genutzt, wobei jede sprache ihre spezifischen vorteile ausspielen kann. ob nun der C-coder bei seinen embedded systems vereinzelt assemblerroutinen einsetzt, der Java- bzw. Python-mensch für performancekritische teile auf C-routinen setzt oder der .NET-fan per 'interop' z.b. auf COM-objekte zugreift. rüdis 'alles mit aller geawalt in einer sprache erledigen wollen' ist absolut unprofessionell.
    🙂



  • borg schrieb:

    rüdiger schrieb:

    Da der gezeigte Code im Bereich Scientific Computing verwendet wird, ist aber die Ausführungsgeschwindigkeit extrem wichtig.

    je nachdem wie groß das projekt ist, könnte ich mir trotzdem vorstellen, dass eine mischform aus python und c sinnvoll wäre. kennst du schon scipy und numpy?

    Bei dem ganzen handelt es sich um ein Simulationsframework, dass für beliebige Aufgaben anpassbar ist, aber vor allem für Simulationen im Bereich der Mikroelektronik entwickelt wird. Das System wächst mit den Anwendungen und wird aktiv für Aufträge von großen Mikroelektronik-Firmen benutzt.

    Eine Mischform von Python und C läuft ja darauf hinaus, dass man sich sehr stark um Handoptimierung kümmern müsste. Sicher kann man die Langsamkeit der Interpretierung ein wenig dadurch kompensieren, in dem man sich hinsetzt und mit C komplizierte Sachen schlicht und einfach hartkodiert. Das ist vielleicht für ein einzelnes (vermutlich nicht sehr umfangreiches) Projekt vertretbar. Aber wenn es darum geht ein wiederverwendbares allgemeines Framework zu entwerfen, was man möglichst schnell einsetzen kann, ist es inakzeptabel. Vor allem da man die spezialisierten Optimierungen, die man bei deinem Vorschlag per Hand machen müsste, dem Compiler überlassen kann.

    Und wenn wäre Haskell interessanter als Python, da es wesentlich "mathematischer" ist und kompiliert wird. Aber bei Haskell ist das Problem, dass man so gut wie keine Aussagen über Laufzeit/Speicher-Verhalten treffen kann und die Kompiler nicht so effizient sind.

    borg schrieb:

    aber wie gesagt, es gibt durchaus projekte für die c++ die programmiersprache der wahl ist. allerdings ist es in den allermeisten projekten nunmal so, dass sich rechenaufwendige/mathematische sachen auf ein paar funktionsaufrufe beschränken, die ausgelagert werden können.

    Ich weiß nicht was die allermeisten Projekte sind oder welche Eigenschaften auf sie zutreffen. Interessiert mich auch wenig. Ich such meine Werkzeuge nicht danach aus, dass die "allermeisten Projekte" dadurch abgedeckt werden, sondern dass sie den aktuellen Fall abdecken. (bzw. in dem Fall habe ich da eh kein Einfluss drauf, da ich ja nur als Programmiersklave arbeite ;))


Anmelden zum Antworten