En primer lugar, para cosas como el cifrado el rendimiento importa .
Es la diferencia entre poder atender a cientos de usuarios o solo 10 a la vez. Y esto tiene cierta relevancia de seguridad: si sus servidores tienen problemas, entonces son fáciles de eliminar con un ataque de DOS.
Si alguna vez comparaste el código puro de Python con el código nativo, te sorprenderás de cuán grandes son las diferencias.
En segundo lugar, no hay Python / Java sin C . Cualquiera que sea el lenguaje "moderno" que mire, utiliza una cantidad sustancial de bibliotecas debajo. Y adivina qué, la mayoría de estas son bibliotecas de C
Ahora, si escribe una biblioteca "crítica para la seguridad" en un lenguaje de este tipo, debe preocuparse por 1. problemas en su propio código 2. problemas en el código Java / Python que usa 3. problemas en el código C subyacente son actualizaciones de seguridad frecuentes para Java!) y 4. problemas en las bibliotecas de C debajo que pueden cambiar sin que usted lo sepa (por ejemplo, actualizaciones del sistema operativo). Si desea un código de seguridad relevante, minimice las dependencias.
La cantidad de C debajo está aumentando, no disminuyendo . Esto puede parecer no obvio. Pero numpy, tensorflow, JavaFX, ... todos usan mucho código C debajo, debido al rendimiento .
Se podrían evitar muchos problemas con una ingeniería cuidadosa y la programación verbose . Por ejemplo, el error "goto fail" de OSX se debió a que los programadores no se adhirieron a la mejor práctica de usar siempre corchetes ...
if (a)
goto fail;
goto fail;
somethingelse
es un error fácil de pasar por alto en la mayoría de los idiomas (excepto en Python, donde necesitaría dos espacios menos para el mismo problema) que se pueden evitar simplemente con verbosidad:
if (a) {
goto fail;
goto fail;
}
somethingelse
No es como si Python fuera muy útil para evitar tales problemas (de hecho, los compiladores de Java le advierten sobre el código inalcanzable). Python no lo hace, y los compiladores de C pueden hacerlo si el usuario los habilita) ...
Al final, la disciplina del desarrollador sigue siendo un factor clave.
El código C usualmente requiere mucho más cuidado para escribir; lo que no es malo para la calidad. El principal inconveniente es que su desarrollo es más lento.