Welche Programmiersprache besser geeignet für Höhere Mathematik C oder C++?



  • fanta12345 schrieb:

    Hi,

    macht es einen Unterschied, ob ich nur in C programmieren will?

    Nachteile/Vorteile?

    In den so gut wie allen Jobs ist es für C++ ausgeschrieben, aber kommt man in der Versicherungsmathematik auch mit C gleich weit, wie mit C++?

    C++ halte ich für besser hinsichtlich Mathe, da man in C++ eigene Operatoren definieren kann. Das geht in C nicht. 😞



  • fdsfsfsf schrieb:

    Ansonsten: nimm Python! Mit den vielen Erweiterungen kann man es fast schon als Matlab Ersatz verwenden, siehe z.B. https://www.scipy.org/

    Wenn schon Python genannt wird, sollte wohl auch Julia genannt werden.



  • Gregor schrieb:

    fdsfsfsf schrieb:

    Ansonsten: nimm Python! Mit den vielen Erweiterungen kann man es fast schon als Matlab Ersatz verwenden, siehe z.B. https://www.scipy.org/

    Wenn schon Python genannt wird, sollte wohl auch Julia genannt werden.

    Vom Namen und Logo sehr sympathie-heischend. Doch letztlich nur alter Wein in neuen Schläuchen. Es betrübt mich. 😞


  • Mod

    Es spricht einiges für C++:
    - leichte Integration von C
    - Bibs (neben den üblichen Verdächtigen wie STL, Boost usw.) wie die Intel MKL oder c-xsc oder Schnittstellen zu Grafikengines.
    - Spracherweiterungen wie Lambda Ausdrücke
    - hatte mal einen guten Artikel C++ vs Haskell gelesen. Der Autor meinte C++ hat Vorteile, weil bei Haskell zuviel Umdenken blöd (z.B. mit Hilfsfunktionen, Akkuvariablen und Co). Naja das Argument ist zwar oberflächlich, aber kommt schon ein wenig hin.
    - Code für Cuda ist standardmäßig an C angelehnt aber es gibt für viele Programmiersprachen Cuda Support, so auch für C++:
    https://devblogs.nvidia.com/parallelforall/power-cpp11-cuda-7/
    - Code von aktuellen Spielen o.ä. ausborgen.
    - C++ Ecke im C++ Forum wird noch immer am besten besucht.

    Was spricht für Fortran? Die Programmiersprache ist ähnlich supereinfach wie Basic und auf mathematische Berechnungen/Code optimiert.
    Basic vs Java? -> Bibs und Community.



  • Kann man bei C++ eigentlich irgendwie Array Boundary Checks per Compilerswitch aktivieren? Bei Fortran geht das naemlich. Man kriegt dann Fehlermeldungen, die einem explizit sagen, in welcher Sourcecodedatei in welcher Zeile welcher Arrayindex welches Arrays welchen falschen Wert hat und was der hoechstens zulaessige Wert ist.

    Ebenso gibt es Schalter, die zu direkten Fehlern fuehren, wenn nichtinitialisierte Variablen genutzt werden oder Pointer ins Nirvana zeigen. 😋



  • Gregor schrieb:

    Kann man bei C++ eigentlich irgendwie Array Boundary Checks per Compilerswitch aktivieren? Bei Fortran geht das naemlich. Man kriegt dann Fehlermeldungen, die einem explizit sagen, in welcher Sourcecodedatei in welcher Zeile welcher Arrayindex welches Arrays welchen falschen Wert hat und was der hoechstens zulaessige Wert ist.

    Ebenso gibt es Schalter, die zu direkten Fehlern fuehren, wenn nichtinitialisierte Variablen genutzt werden oder Pointer ins Nirvana zeigen. 😋

    Fanboy, man nimmt einfach Klassen, die das checken.



  • volkard schrieb:

    Gregor schrieb:

    Kann man bei C++ eigentlich irgendwie Array Boundary Checks per Compilerswitch aktivieren? Bei Fortran geht das naemlich. Man kriegt dann Fehlermeldungen, die einem explizit sagen, in welcher Sourcecodedatei in welcher Zeile welcher Arrayindex welches Arrays welchen falschen Wert hat und was der hoechstens zulaessige Wert ist.

    Ebenso gibt es Schalter, die zu direkten Fehlern fuehren, wenn nichtinitialisierte Variablen genutzt werden oder Pointer ins Nirvana zeigen. 😋

    Fanboy, man nimmt einfach Klassen, die das checken.

    Checks, die man bewusst in den eigenen Programmcode einbaut sind irgendwie etwas völlig anderes als Compilerswitches. Wenn man so etwas in den Programmcode einbauen muss ist man nämlich auf den guten Willen, die Disziplin und das Know-How jedes einzelnen Programmierers angewiesen, der zu dem Code beiträgt.



  • Gregor schrieb:

    Wenn man so etwas in den Programmcode einbauen muss ist man nämlich auf den guten Willen, die Disziplin und das Know-How jedes einzelnen Programmierers angewiesen, der zu dem Code beiträgt.

    C und C++ vertrauen auf die Kompetenz des Programmierers. Bei anderen Sprachen mag das nicht so sein. 🙂



  • Andromeda schrieb:

    C und C++ vertrauen auf die Kompetenz des Programmierers. Bei anderen Sprachen mag das nicht so sein. 🙂

    Schreib doch mal nen Fantasy-Roman "Der unfehlbare Programmierer". 😉



  • Gregor schrieb:

    Andromeda schrieb:

    C und C++ vertrauen auf die Kompetenz des Programmierers. Bei anderen Sprachen mag das nicht so sein. 🙂

    Schreib doch mal nen Fantasy-Roman "Der unfehlbare Programmierer". 😉

    Den gibt es nicht. Aber es gibt den Programmierer, der erst zur Höchstform aufläuft, wenn er keine Grenzen mehr sieht.

    Btw, meine Lieblingssprachen sind C und Java.



  • Andromeda schrieb:

    Den gibt es nicht. Aber es gibt den Programmierer, der erst zur Höchstform aufläuft, wenn er keine Grenzen mehr sieht.

    Naja, wie schon gesagt, die Zielgruppe für Fortran sehe ich nicht bei Informatikern, sondern bei Leuten, die ein mathematisches Modell in performanten Code umsetzen müssen und jenseits davon keine besondere Leidenschaft bezüglich des Programmierens haben. Fortran ist ein Werkzeug, mit dem man bestimmte Dinge sehr gut erreichen kann. Ich behaupte nicht, dass es eine Sprache ist, die einem ans Herz wächst. 🙂 Ich glaube, die Leute, die Fortran nutzen, sehen sich in erster Linie nicht als Programmierer, auch wenn das Teil ihrer Tätigkeit ist.



  • Gregor schrieb:

    Andromeda schrieb:

    C und C++ vertrauen auf die Kompetenz des Programmierers. Bei anderen Sprachen mag das nicht so sein. 🙂

    Schreib doch mal nen Fantasy-Roman "Der unfehlbare Programmierer". 😉

    Aber es ist auch kein guter Ratgeber, Inkompetenz zum neuen Gott zu erheben.
    Was das bringt, haben wir doch bei Java gesehen.



  • volkard schrieb:

    Was das bringt, haben wir doch bei Java gesehen.

    Was genau haben wir denn da gesehen? 😕



  • volkard schrieb:

    Gregor schrieb:

    Andromeda schrieb:

    C und C++ vertrauen auf die Kompetenz des Programmierers. Bei anderen Sprachen mag das nicht so sein. 🙂

    Schreib doch mal nen Fantasy-Roman "Der unfehlbare Programmierer". 😉

    Aber es ist auch kein guter Ratgeber, Inkompetenz zum neuen Gott zu erheben.
    Was das bringt, haben wir doch bei Java gesehen.

    Java ist Spitze und eine der am meisten genutzten Sprachen. Wie auch C (siehe Tiobe Index)

    C++ ist eher langweilig. Phythhon auch. 😋


  • Mod

    Was ein wenig gegen Fortran spricht, ist dass neuere Entwicklungen meist nur kostenpflichtig verfügbar sind.
    (Das Argument ist eher schwach, weil professionelle Softwareprodukte arbeitserleichternd sein können.)

    Sehr spannend kann es bei der Frage der Fehlerkontrolle werden, wenn man auf die Geschichte der Programmierung schaut.
    Das Problem dürfte schon in den Fünfzigern bis Siebzigern ziemlich klar gewesen sein.

    Die spannenden Fragen sind u.a.: Wie wurde eigentliche Problem angegangen?
    (Wie wird Software besser? -> die bessere Antwort ist NICHT: eine neue Programmiersprache oder ein neues Programierparadigma.)
    (Deswegen ist der der Brooks Artikel (vermutlich) https://en.wikipedia.org/wiki/No_Silver_Bullet (vermutlich) so berühmt geworden.)
    Was ist die oder eine bessere Antwort?
    Ich vermute Community 🙂

    Die gab es früher in Basic auch, Turnschuhnetzwerke auch gut. Wie kriegt man jetzt (z.B.) die bekloppten (langsam und fehlerhaft) Basicprogramme weg?



  • Andromeda schrieb:

    Java ist Spitze und eine der am meisten genutzten Sprachen. Wie auch C (siehe Tiobe Index)

    Der Tiobe Index basiert AFAIK auf der Anzahl von Suchergebnissen mit bestimmten Schlüsselbegriffen. Das könnte auch irreführend sein. Alleine schon deshalb, weil sicherlich nicht alle Surchergebnisse tatsächlich einen thematischen Bezug zu der jeweiligen Programmiersprache haben. Wenn ich eine Internetseite zu den Sprachbesonderheiten auf der Insel Java im Internet hätte, würde die da vielleicht auch gefunden werden. Und wenn ich irgendwelche Eigenschaften der Java Programmiersprache mit a, b, c, ... aufliste, dann kriegt C vielleicht auch einen Treffer. Gerade "C" ist kein wirklich exklusiver Name. Ich würde vermuten, dass es da jede Menge ungewollten Beifang bei den Suchergebnissen gibt.



  • Ernsthaft: Wenn es um reine Mathematik und Forschung geht, dann ist python die Wahl! Mit numpy und scipy hast du hochperformante Schnittstellen zu C- und Fortran-Libs.
    Ich kenne nichts einfacheres als python für mathematische Ausdrücke außer vll. Matlab (womit ich mich aber nie so recht anfreunden konnte). Meine Hochschule ist mittlerweile auch von Matlab auf python gewechselt.

    Auch was Plotten angeht, ist python extrem stark!

    Header-Dateien, Build & Run, Clean Project sind einfach kein Gewinn was die Produktivität angeht.



  • ShadowClone schrieb:

    Ernsthaft: Wenn es um reine Mathematik und Forschung geht, dann ist python die Wahl! Mit numpy und scipy hast du hochperformante Schnittstellen zu C- und Fortran-Libs.
    Ich kenne nichts einfacheres als python für mathematische Ausdrücke außer vll. Matlab (womit ich mich aber nie so recht anfreunden konnte). Meine Hochschule ist mittlerweile auch von Matlab auf python gewechselt.

    Ich erinnere mich, dass ich mal einen rechenintensiven Code mit Python gescriptet habe. Der lief dann für einige Stunden und ist dann abgebrochen, weil ich irgendwo im Pythoncode einen Syntaxfehler hatte. Zum Glück waren es nur einige Stunden. Das hätte auch viel mehr Zeit kosten können. Was ich sagen möchte ist, dass ich skeptisch bin, ob eine dynamisch typisierte Sprache für diesen Anwendungsfall wirklich so gut geeignet ist. Zum Plotten ist es natürlich sehr gut geeignet, das ist keine Frage. (...und zum Plotten ist eine Sprache wie Fortran überhaupt nicht geeignet.) 🙂


  • Mod

    Gregor schrieb:

    Ich erinnere mich, dass ich mal einen rechenintensiven Code mit Python gescriptet habe. Der lief dann für einige Stunden und ist dann abgebrochen, weil ich irgendwo im Pythoncode einen Syntaxfehler hatte.

    War das jetzt wegen dem Syntaxfehler oder dem Interpreter oder beidem?
    Pycuda o.ä. implizit mit drin oder nicht?

    Mir ist jetzt auch nicht klar, was bei Python netter ist, als anderswo. Die mathematischen Grundlagen bleiben doch über all die gleichen.
    (ach so, hat natürlich ein paar nette Syntaxgoodies von anderen Sprachen geklaut, meinst du das?)

    (habe mal kurz gegoogelt und das hier gefunden.:
    http://dev-perspective.blogspot.de/2012/10/on-list-comprehension-in-c.html)
    😉



  • Gregor schrieb:

    Andromeda schrieb:

    Java ist Spitze und eine der am meisten genutzten Sprachen. Wie auch C (siehe Tiobe Index)

    Der Tiobe Index basiert AFAIK auf der Anzahl von Suchergebnissen mit bestimmten Schlüsselbegriffen. Das könnte auch irreführend sein. Alleine schon deshalb, weil sicherlich nicht alle Surchergebnisse tatsächlich einen thematischen Bezug zu der jeweiligen Programmiersprache haben. Wenn ich eine Internetseite zu den Sprachbesonderheiten auf der Insel Java im Internet hätte, würde die da vielleicht auch gefunden werden. Und wenn ich irgendwelche Eigenschaften der Java Programmiersprache mit a, b, c, ... aufliste, dann kriegt C vielleicht auch einen Treffer. Gerade "C" ist kein wirklich exklusiver Name. Ich würde vermuten, dass es da jede Menge ungewollten Beifang bei den Suchergebnissen gibt.

    Okay, hier ist noch eine andere Liste: http://helmbold.de/artikel/programmiersprachen-beliebtheit/

    Auch hier steht C an erster Stelle. Die Wähler waren aber wohl eher so richtige Hardcore-Computerfreaks. Das sehen wir schon daran, dass sich recht esoterische Sprachen wie Lisp und Haskell auf den oberen Plätzen tummeln und dieses unsägliche Python sogar Platz 2 belegt.

    Wie auch immer: egal welchen Programmierertypus man fragt, - C scheint immer ganz weit oben zu sein. 🙂


Anmelden zum Antworten