Zuallererst ist für Dinge wie Verschlüsselung Leistung wichtig .
Es ist der Unterschied, ob Hunderte von Benutzern oder nur 10 gleichzeitig bedient werden können. Dies hat einige Sicherheitsrelevanz: Wenn Ihre Server Probleme haben, können sie leicht mit einem DOS-Angriff entfernt werden.
Wenn Sie jemals reinen Python-Code mit nativem Code verglichen haben, werden Sie überrascht sein wie groß die Unterschiede sind.
Zweitens gibt es kein Python / Java ohne C . Unabhängig davon, welche "moderne" Sprache Sie betrachten, werden eine beträchtliche Anzahl von Bibliotheken darunter verwendet. Und raten Sie mal, die meisten davon sind C-Bibliotheken.
Wenn Sie nun eine "sicherheitskritische" Bibliothek in einer solchen Sprache schreiben, müssen Sie sich um 1. Probleme in Ihrem eigenen Code 2. Probleme in der Java / Python-Code, den Sie verwenden 3. Probleme im zugrunde liegenden C-Code (es gibt häufige Sicherheitsupdates für Java!) Und 4. Probleme in den darunter liegenden C-Bibliotheken, die sich ändern , ohne dass Sie es wissen (z. B. Betriebssystem-Updates) ). Wenn Sie sicherheitsrelevanten Code wünschen, minimieren Sie Abhängigkeiten.
Die Menge an C darunter nimmt zu und nicht ab . Dies mag nicht offensichtlich erscheinen. Aber Numpy, Tensorflow, JavaFX, ... diese verwenden alle viel C-Code darunter, wegen der Leistung .
Viele Probleme könnten durch sorgfältiges Engineering und vermieden werden ausführliche Programmierung. Zum Beispiel wurde der OSX-Fehler "goto fail" dadurch verursacht, dass Programmierer nicht die bewährte Methode befolgten, immer Klammern zu verwenden ...
wenn (a) goto fail; goto fail; etwas anderes
ist in den meisten Sprachen (außer Python, wo Sie für dasselbe Problem zwei Leerzeichen weniger benötigen) ein leicht zu übersehender Fehler, der einfach mit Ausführlichkeit vermieden werden kann:
if (a) {goto fail; goto fail;} etwas anderes
Es ist nicht so, als ob Python sehr hilfreich wäre, um solche Probleme zu vermeiden (tatsächlich würden Java-Compiler Sie vor nicht erreichbarem Code warnen - Python nicht, und C-Compiler können dies, wenn sie vom Benutzer aktiviert werden) ... Am Ende Entwicklerdisziplin bleibt ein Schlüsselfaktor.
C-Code erfordert normalerweise viel mehr Sorgfalt beim Schreiben. Das ist nicht eine schlechte Sache für die Qualität. Der Hauptnachteil ist, dass es langsamer zu entwickeln ist.