Der Erfinder von C++ kritisierte die Einführung sicherer Programmiersprachen

Bjarne Stroustrup, der Erfinder der C++-Sprache, hat Einwände gegen die Schlussfolgerungen des NSA-Berichts veröffentlicht, der Organisationen empfahl, sich von Programmiersprachen wie C und C++, die die Speicherverwaltung dem Entwickler überlassen, zugunsten von Sprachen zu verabschieden B. C#, Go, Java, Ruby, Rust und Swift, die eine automatische Speicherverwaltung bereitstellen oder Speichersicherheitsüberprüfungen zur Kompilierungszeit durchführen.

Laut Stroustrup sind die im NSA-Bericht erwähnten sicheren Sprachen C++ in den aus seiner Sicht wichtigen Anwendungen tatsächlich nicht überlegen. Insbesondere die in den letzten Jahren entwickelten grundlegenden Empfehlungen zur Verwendung von C++ (C++ Core Guidelines) decken sichere Programmiermethoden ab und schreiben den Einsatz von Werkzeugen vor, die ein sicheres Arbeiten mit Typen und Ressourcen gewährleisten. Dies gibt Entwicklern, die keine derart strengen Sicherheitsgarantien benötigen, die Möglichkeit, weiterhin alte Entwicklungsmethoden zu verwenden.

Stroustrup glaubt, dass ein guter statischer Analysator, der den C++-Kernrichtlinien folgt, die notwendigen Garantien für die Sicherheit von C++-Code zu deutlich geringeren Kosten bieten kann als die Migration auf neue sichere Programmiersprachen. Beispielsweise sind die meisten Kernrichtlinien bereits im statischen Analyse- und Speichersicherheitsprofil implementiert, das in Microsoft Visual Studio enthalten ist. Einige Empfehlungen werden auch im Clang Tidy-Static-Analysator berücksichtigt.

Der NSA-Bericht wurde auch dafür kritisiert, dass er sich nur auf Speicherprobleme konzentrierte und viele andere Programmiersprachenprobleme außer Acht ließ, die sich auf Sicherheit und Zuverlässigkeit auswirken. Stroustrup betrachtet Sicherheit als ein umfassenderes Konzept, dessen verschiedene Facetten durch eine Kombination aus Codierungsstil, Bibliotheken und statischen Analysatoren erreicht werden können. Um die Einbeziehung von Regeln zu steuern, die die Sicherheit beim Arbeiten mit Typen und Ressourcen gewährleisten, wird vorgeschlagen, Anmerkungen im Code und in den Compileroptionen zu verwenden.

Bei Anwendungen, bei denen Leistung wichtiger ist als Sicherheit, ermöglicht dieser Ansatz die selektive Anwendung von Funktionen, die Sicherheit nur dort gewährleisten, wo sie benötigt wird. Sicherheitstools können auch abschnittsweise angewendet werden, z. B. indem man mit der Bereichsprüfung und den Initialisierungsregeln beginnt und den Code dann schrittweise an strengere Anforderungen anpasst.

Source: opennet.ru

Kommentar hinzufügen