Mit
C++ bin ich ja nie so richtig warm geworden aus verschiedensten Gründen.
C lasse ich mir ja noch Gefallen, wenngleich auch das ein wenig ein Kulturschock war, nachdem ich zuvor bei
Turbo Pascal war.
C++ ist aber in meinen Augen unnötig Komplex und bietet unnötig viel Fehlerpotential.
Gut. vieles ist sicherlich historisch gewachsen, wie man so schön sagt. Und unter ausschließlicher Verwendung von modernen C++ bekommt man viele Probleme auch in den Griff. Trotzdem bleibt der Lernaufwand relativ hoch. Vor allem in Relation zu dem, was man bekommt.
Ach gottchen, da gibt er selber zu hauptsächlich C zu machen und will dann wissen was für C++ besser ist
Ich bin Nichtraucher und erlaube trotzdem die Einschätzung, dass die Verringerung des Tabakkonsums sich positiv auf die Gesundheit auswirkt. :-)
Dont pay for what you dont use, dafür nutzt man C++
Ist korrekt. Aber selbst solche Sachen waren schon bei Turbo Pascal besser gelöst. Da war das nicht etwa irgendwie intransparent implementiert, sondern durch Compilerschalter (entweder global oder im Quelltext).
Naja, es gibt ganze Arbeitsgruppen, die sich mit undefined behaviour in C++ beschäftigen
Genau das ist einer der Probleme. Das es überhaupt so was wie
undefined behaviour gibt. Als ob sich da nie jemand ernsthaft Gedanken drum gemacht hätte. Und genauso so fühlt sich C++ an vielen Stellen an.
eben unsafe drum rum zu packen und selbst zu prüfen.
Oder mehr Hardware draufwerfen. Das ist meist billiger als nem Programmierer Optimierungen vornehmen zu lassen, die dann ggf. noch Sicherheitslücken ins Programm reißen.
unsafe ist aber natürlich auch eine legitime Lösung. Immerhin brauch ich ja nur den Teil des Codes als
unsafe deklarieren, wo es wirklich drauf ankommt. Der Rest ist dann immer noch "
safe".
Ich weiß übrigens gar nicht, warum hier offenbar ganz natürlich davon ausgegangen wird, dass sich nur mit C++ performante Programme schreiben lassen. Insbesondere bei numerischen Kram kommt aus Performance-Gründen gern mal der Programmiersprachenveteran
Fortran zum Einsatz.
Sogar Intel selbst bietet ein optimierenden Fortran-Compiler an:
https://software.intel.com/en-us/fortran-compilers
Aber die Geschichte mit der Compiler macht das schon glaube ich weiterhin nicht.
Warum nutzt Du dann einen und schreibst nicht Assembler?
Das macht niemand, stattdessen nutzt man dann halt die alte Sprache oder Sprachversion weiter.
Ja. Was man aber natürlich machen kann ist für Neu-Projekte entweder auf C++ zu verzichten oder eben genau darauf zu achten, was man nutzt. Und für letzteres gibts ja Codeanalysewerkzeuge die einen dann auch Warnen, wenn irgendwas nicht ganz koscher ist oder ein veraltetes Konstrukt benutzt.
Abgesehen davon täte der ein oder anderen gammligen Bibliothek ein aufräumen mal ganz gut. :-)
Letztendlich bringt auch die sicherste Sprache und/oder das sicherste OS nichts, wenn der Entwickler hinterher Mist baut.
Gut. Aber das ist kein Argument, weil Du damit jegliches widerlegen kannst.
Entscheidender ist ja, wie hoch ist die Wahrscheinlichkeit das ich Fehler einbaue. Andere Sprachen kennen ganze Fehlerklassen nicht. Ist logisch, dass man damit dann automatisch tendenziell eher fehlerfreier programmiert.
wäre unter Rust die Nutzung von unsafe
Der Unterschied ist,
unsafe musst Du halt explizit und bewusst setzen. Bei C++ hast Du eher mal Situationen das wenn Du irgendwo etwas vergisst, dass dann Dein Code unsicher ist.
Die defaults sind also schon eher auf Sicherheit gemünzt.
Man darf bei dem Thema auch nicht übersehen wie portabel C++ so ist.
C++ ist so toll portabel, dass Du schon in Probleme kommen kannst, wenn Du GCC statt clang einsetzt (oder umgekehrt).
Die Standardbibliothek ist auch vergleichsweise überschaubar. Sprich, Du kommst bei C++ sehr schnell auf den Boden der Tatsachen.
Ein vernünftiges Modul-Konzept
Warum es das noch nicht gibt, kann mir auch keiner vernünftig erklären. Rusts Unzulänglichkeiten kann man ja immer noch mit dem vergleichsweise jungen Alter entschuldigen. Aber C++ gibts jetzt schon seit Mitte der 80er Jahre und trotzdem fehlen immer noch Basics.