Prima di tutto, per cose come la crittografia il rendimento conta .
È la differenza tra essere in grado di servire centinaia di utenti o solo 10 alla volta. E questo ha una certa rilevanza per la sicurezza: se i tuoi server sono in difficoltà, sono facili da eliminare con un attacco DOS.
Se hai mai confrontato il codice Python puro con il codice nativo, sarai sorpreso di quanto siano grandi le differenze.
In secondo luogo, non esiste Python / Java senza C . Indipendentemente dal linguaggio "moderno", viene utilizzata una notevole quantità di librerie al di sotto. E indovina un po ', la maggior parte di queste sono librerie C.
Ora se scrivi una libreria "security critical" in un linguaggio del genere devi preoccuparti di 1. problemi nel tuo codice 2. problemi nel codice Java / Python che usi 3. problemi nel codice C sottostante (lì sono frequenti aggiornamenti di sicurezza su Java!) e 4. problemi nelle librerie C sottostanti che possono cambiare senza che tu lo sappia (per es. aggiornamenti del SO). Se desideri un codice di sicurezza pertinente, riduci le dipendenze.
La quantità di C sotto è in aumento, non in diminuzione . Questo potrebbe sembrare non ovvio. Ma numpy, tensorflow, JavaFX, ... tutti usano molto codice C sotto, a causa delle prestazioni .
Molti problemi potrebbero essere evitati grazie a un'ingegneria attenta e alla programmazione prolissa . Ad esempio il bug "goto fail" di OSX è stato causato dai programmatori non che aderiscono alla migliore pratica di usare sempre parentesi ...
if (a)
goto fail;
goto fail;
somethingelse
è un errore facile da perdere nella maggior parte delle lingue (ad eccezione di Python, dove occorrerebbero due spazi in meno per lo stesso problema) che può essere evitato semplicemente con la verbosità:
if (a) {
goto fail;
goto fail;
}
somethingelse
Non è come se python fosse molto utile per evitare tali problemi (in realtà, i compilatori Java ti avviserebbero riguardo al codice irraggiungibile - Python non lo fa, e i compilatori C possono se abilitato dall'utente ...)
Alla fine la disciplina per gli sviluppatori rimane un fattore chiave.
Il codice C di solito richiede molta più cura per la scrittura; che è non una cosa negativa per la qualità. Lo svantaggio principale è che è più lento da sviluppare.