Juhu, Sprachdiskussionen!
Was mir auffällt, ist dass manchmal unsinnig diskutiert wird. Das mit den Warnungen von clang und Rust ist ein Beispiel dazu.
Zunächst einmal sehen viele C und C++ Programmierer die Sprache weniger kritisch als die Schreihälse, die meinen Bugtracker von riesigen Production-Systemen mit "Bitte in Rust neu schreiben" voll spammen zu müssen. Das sind die Selben, die meinen alt bedeutet schlecht, aber auch Leute, die selber Rust Faboys sind ohne Rust oder C zu programmieren. Damit kämpft auch das Rust-Projekt ziemlich, das ja durchaus viele Leute aus der C++-Welt und vielen funktionalen Programmiersprachen als Entwickler hat, die sich teils auch schon eine Weile damit beschäftigt haben C und C++ sicherer zu bekommen und zwar auf unterschiedlichste Arten (also statische Code-Analyse genauso wie Erweiterungen). Derzeit passiert ja im LLVM SAFECode auch einiges. Das ist eben ein anderer Ansatz, die Probleme, die es so gibt zu "beheben", wenn man das so nennen kann.
Ich würde deshalb vorschlagen irgendwelche Trolle jetzt mal außen vor zu lassen. Dass es die gibt bestreitet auch keiner, und dass das was die sagen zu größten Teilen Unfug ist auch nicht.
Stattdessen würde ich Rust eher als die aktuelle Inkarnation von "man kann die Probleme die es gibt mit oder nur mit einem neuen Sprachdesign beseitigen". Da gehen ja die Meinungen auseinander und es gibt durchaus einige an Entwickler, die selbst Rust genau so sehen, nämlich vor allem als Experiment, das natürlich auch scheitern kann, zum Beispiel weil es zu schwer zu verwenden ist oder auch andere Gründe.
Solche Probleme gibt's öfters, dass irgendwelche lauten Teile er Community das sind was Leute mitbekommen und nicht die Arbeit und Forschung, die man potentiell wieder verwerten kann (Rust baut ja auch auf LLVM auf).
Dass man mit C schreckliche Sachen machen kann, die statt nur einen Panic häufig auch zu Remote Code Execution führen ist auch klar. Es gibt eben keine Type Safety. Das ist mal neutral, und heißt jetzt nicht direkt, dass C schlecht ist, sondern würde ich eher als Eigenschaft der Sprache ansehen, als Entscheidung bezüglich des Designs, die wie es aussieht zum Teil zumindest (gerade da wo es Performance und mal flapsig gesagt "Trickserei" angeht) zum Teil auch zum Erfolg der Sprache beigetragen hat.
Rust versucht nun das Security-Problem weg zu bekommen, vor allem ohne die Nachteile in der Performance zu haben. Der Preis ist dann eine erhöhte Komplexität, wo es dann viele Meinungen gibt, ob diese im Verhältnis steht, ob das nur scheinbar komplexer ist, weil es dazu zwingt korrekt zu programmieren, oder ob das unverhältnismäßig ist und wenn ja, ob und wie man das verbessern kann.
Anders als ähnliche Projekte hat es den Vorteil nicht nur in irgendwelchen Hinterzimmern einer Uni oder vor allem durch ein in Verhältnis zu Mozilla kleines, unbekanntes Unternehmen gestützt zu werden. Es gibt echte Projekte, die in Rust implementiert wurden, was dazu führt, dass viele Leute ein Auge drauf werfen.
Und wenn man mal davon ausgeht, dass Rust ein erfolgreiches Projekt wird in dem Sinn, dass in 10 - 20 Jahren es immer noch eine große Sprache ist, dann heißt das noch immer nicht zwangsweise, dass C Geschichte ist. Dafür kann es viele Gründe geben. Neben so Sachen, wie dass es genug Code gibt wird C sehr wahrscheinlich nicht an allen Bereichen verdrängt werden. Aber nehmen wir mal an C code könnte und würde schnell und Effektiv in das von vielen beherrschte Rust übersetzt werden, weil sich die Meinung durchsetzen würde, dass es viel besser ist die Sicherheit zu haben. Selbst dann würde es wohl Leute geben, die einfach schneller und unsicherer programmieren wollen. Kann gut sein, dass C dann hipp ist, weil sich ein Startup sagt, dass man damit schneller einen Prototypen hat der bestimmte Voraussetzung erfüllt.
Aber wenn ich drauf tippen müsste, würde ich sagen, dass C und C++ (vielleicht letzteres noch eher) in 20 Jahren, selbst wenn Rust stark weiter wächst wohl keinesfalls ein Nischendasein fristen wird, sondern Rust (oder sonst eine Alternative die aus was für einen Grund auch immer groß wächst) eher so im Verhältnis stehen werden wie diverse Skriptsprachen (Python. Ruby, Node.js, PHP, Perl und so weiter).
Hype ist immer so eine zweischneidige Sache und auch wenn ich den Beiträgen hier zustimme, dass der Unsinn der da geredet wird teilweise echt nervig und bestenfalls Clickbait ist braucht gerade ein neues Projekt Hype. Auch C und C++ und Java haben anfangs Hype gebraucht. Man kann es auch Marketing nennen. Das ist zwar irgendwo traurig, dass sich nicht einfach das Bessere durchsetzt, zumindest in den Gebieten wo der Vorteil objektiv messbar ist, aber so funktioniert die Welt leider nicht.
Ich glaube ehrlich gesagt nicht, dass sich Rust groß durchsetzen wird, weil das Reinkommen in die Sprache doch einige Zeit dauert, aber der Trend der letzten Jahrzehnte finde ich gezeigt hat, dass sich sprachen durchsetzen, die man sehr schnell begreift. Trotzdem hoffe ich, dass sich viele Leute, die Sprache dahinter ansehen, allein schon um was zu lernen und vielleicht auch zu kopieren, aber vor allem, damit es dann nicht vor Behauptungen wuchert, warum Rust gescheitert sei, die nichts mit der Realität zu tun haben und von lediglich von Leuten kommen, die sich nie ernsthaft mit der Sprache auseinandergesetzt haben.
Und sterben wird Rust wohl auch nicht. Zumindest nicht mehr als so "tote" Sprachen, wie Perl (oder vielleicht diverse MAL-Versionen). Dazu gibt es jetzt schon zu viel Code und ich rechne nicht damit, dass sich da Rust bereits in einer Abklingphase befindet.
Ganz zum Schluss nochmal zu C. Ich glaube durch die ganzen Sachen, die im LLVM-Bereich derzeit stattfinden wird C Code deutlich an Sicherheit gewinnen, wenn man Qualität nicht komplett ignoriert. Es kommen ständig Compile-Switches, Warnings, etc. dazu, es gibt Valgrind, wo sich auch noch was tut, Projekte sprießen. Die Leute schwören immer mehr auf Tests, Tooling, Fuzzers, es setzen sich immer wieder Sachen durch wo man sich fragt, wie es sein kann, warum das nicht schon vor 30 Jahren hatte als C-Entwickler. Generell steigt gefühlt der Mindeststandard den man an C-Code bzw. den Projekten drum rum hat gerade gewaltig. Ich denke das wird sich auswirken, auch wenn es sicherlich noch zu früh ist, dass man das auch nur versuchen könnte zu messen, was ja ohnehin schwierig ist.
Gerade wenn man dann noch so Schutzfunktionen von außerhalb (OS/Kernel) dazu nimmt denke ich, dass die Schwächen, die C da haben mag immer mehr in den Hintergrund treten und tatsächlich nutzbare Sicherheitslücken immer mehr in Kategorien, die wirklich auf Anwendungsebene stattfinden sein werden oder einfach auch mieser Security beruhen. Zumindest sieht es für mich gerade so aus, weil eben das Ecosystem sich da gerade ziemlich entwickelt. Dass so viele Sprachen sich als Konkurrenz platzieren wollen spielt da sicherlich ebenfalls mit rein.