cbtestarossa schrieb:
Warum lässt man alte unsichere Befehle noch in einer Sprache?
Wenn man das nicht sicher bekommt ist es besser gewisse Dinge ganz zu entfernen.
Ich probier's zu später Stunde.
cbtestarossa schrieb:
da ich mit Basic, Comal, Pascal und ASM programmiert
In Assembler hast du doch sehr oft selbst in irgendwelche Register bzw Speicheradressen geschrieben. Jetzt stell dir mal vor, diese Möglichkeit entfernt man. Da bleibt dann nicht mehr viel für dich übrig, damit bekommst du dann kein vernünftiges Programm mehr hin. Dass du einfach irgendwo hinschrieben kannst, ist aber der Angriffsvektor.
Genau das hast du in C aber auch mit Pointern, die ein essentieller Teil von C sind.
Wenn du z. B. ein Array hast, benutzt du das über einen Pointer. Hat das Point 5 Felder, gehst du als Programmierer davon aus, dass hinter dem Ziel deines Pointer noch 4 weitere freie Felder sind. array[1] ist eigentlich nur syntaktischer Zucker dafür, dass du eine Adresse hinter die Adresse vom Array springst (Arrays gibt's in C nicht wirklich, das ist alles nur, damit der Quellcode schöner ist).
Da ist also kein einfacher Befehl, den du mal eben entfernen kannst.
Einfach erkennen kannst du diese Zugriffe auch nicht, du müsstest für jeden Zugriff alle möglichen Checks ausführen, die jede Menge Performance fressen. Teilweise würdest du damit vermutlich auch Verhalten verbieten, das von Programmieren seit 50 Jahren bewusst mit guten Absichten benutzt wird. Du hast also im Prinzip eine komplett neue Programmiersprache.
Und jetzt kommen ganz schlechte Nachrichten: Am Ende wird alles Maschinencode, der eben genau diese Zugriffe erlaubt. Also selbst die "beste" Programmiersprache kann wieder einen dummen Bug irgendwo haben, der dir alle guten Ideen zunichte machst.
cbtestarossa schrieb:
Warum gibts jedes Jahr gefühlt zig neue Sprachen?
Weil die meisten (gut, eigentlich alle) Sprachen für Vorteile wieder Nachteile haben. Mehr Luxus/Sicherheit -> Schlechtere Performance (jaja, grob gesagt).
Und weil sich viele weiterentwickelt. Rust z. B. schafft es irgendwie doch, ein gutes Dev-Erlebnis (Luxus&Sicherheit) mit Performance in Einklang zu bringen.
Cross-Plattform-Fähigkeiten sind auch ein größeres Thema. Wie baust du eine Anwendung, die auf iOS, Android, im Browser und aufm Desktop laufen kann? Mit C wird das schon mal nichts.
Testbarkeit kann auch ein Thema sein. Gute Unit-Tests mit Mocks usw für C++-Anwendungen zu bauen, ist echt ein Albtraum, kann ich dir sagen! Da weiß man modernere Sprachen echt zu schätzen.
Dann hängt an den Programmiersprachen oft auch noch ein Ökosystem dran.
So kommen wir allein bei uns in der Firma auf 6 Sprachen im Techstack, HTML und CSS natürlich NICHT mitgezählt (zumal die Webseite eh nicht wirklich ein Thema des Dev-Teams ist, wäre zu teuer), Shell-Scripte und ähnliches auch nicht.
cbtestarossa schrieb:
Jedes Monat die selbe Grüze mit irgendwelchen Überlaufsmeldungen.
Ich bin nicht gut im Erklären, aber ich hoffe, dass du jetzt etwas besser verstehst, warum das leider dazugehört.