*
@kahnsoft sagte in Die Zukunft der Entwicklung:
Heute wird sogar von jungen Studierenden die althergebrachte Entwicklung komplexer Verfahren belächelt:
Altmodische Software !
Das Problem mit den ganzen neuen Softwarelösungen ist, dass sie vor allem eines sind – neu. In diesem FAZ-Artikel geht es ja explizit um Software aus der Naturwissenschaft. Ich kenne selbst Programmcode (aktueller Code!) aus der Physik, der noch in Fortran66 geschrieben ist. Wichtig ist in erster Linie, dass der Programmcode korrekte Ergebnisse liefert. Dann kommt der Punkt er soll möglichst schnell laufen. Klassischer Fortran77 Code nutzt deshalb in der Physik die Libraries BLAS, LAPACK, ODEPACK, o.ä. Insbesondere die BLAS und LAPACK gibt es von den Systemherstellern als hochoptimierte Versionen (MKL, SSP, …), so dass man ohne großem Aufwand sehr schnelle Programme erstellen kann. Die überwiegende Anzahl an Fachliteratur für Naturwissenschaftler nutzt noch Fortran77 als Programmiersprache, oder setzt auf moderne Modesprachen die dann ganz andere Probleme haben.
Wenn man wegen der sehr hohen Leistungsanforderungen auch auf einem HPC-Cluster rechnen muss, dann gibt es in diesem Bereich seit vielen Jahren etablierte Methoden die Software zu parallelisieren. Dazu wird dann fast ausnahmslos OpenMP und MPI eingesetzt. Diese beiden Techniken sind nur für C, C++ und Fortran vorhanden und getestet. Dazu gibt es spezielle kommerzielle Cluster-Debugger, die mit diesen drei Sprachen und diesen Techniken besten zurecht kommen.
Moderne HPC-Programmierung besteht in erster Linie aus Cache-Miss-Vermeidung. Sprich man muss immer und zu jeder Zeit wissen, wo welche Daten liegen und die Schleifen darauf optimieren. Macht man das nicht, lässt man sehr viel Rechenzeit ungenutzt verstreichen. Da mittlerweile SIMD-Einheiten und NUMA-Systeme alltäglich sind, muss man auch aus den Programmiersprachen heraus dies steuern können. Nur all die tollen neuen Programmiersprachen, nehmen darauf keinerlei Rücksicht.
Egal ob man neue Sprachen wie Rust oder die Neuerungen von C++ betrachtet. Überall wird so entwickelt, dass überhaupt keine Rücksicht auf die real vorhandene Hardware genommen wird. Die neuen Threads in C++ finden Softwarentwickler wahnsinnig toll. Aber sie sind zu 100% inkompatibel mit den von OpenMP bekannten Threads. Jetzt darf man sich auf dem System mit dem Systemthreads (bei HPC meistens pthreads), OpenMP Threads und den neuen C++ Threads herumschlagen.
Was dieser „tolle“ Artikel leider vollständig verschweigt ist das wissenschaftliche Problem der Programmseite. Wenn man Standardsoftware verwendet, dann kann man damit auch nur Standardprobleme lösen. Das mag bei etlichen Bereichen der Wissenschaft ganz ok sein, aber wenn man daran forscht wie man neue Methoden entwickeln kann, nützt das einem diese Standardsoftware rein gar nichts. Das ist nämlich das Problem mit standardisierter Software.
Was die Qualität von wissenschaftlicher Software betrifft. Man muss i.d.R. ohnehin sich exzessiv mit der wissenschaftlichen Fragestellung auseinandersetzen, um diesen Programmcode verstehen zu können. Müssen die Programme dann softwaretechnisch auf dem höchsten Niveau sein? Wenn die Programme schnell auf einem Cluster laufen, und die korrekte Forschungsergebnisse liefern, dann tun sie das wofür sie geschaffen wurden. Ich sehe beim Programmcode eher weniger das Verständnisproblem als bei der wissenschaftlichen Seite.