¿Los programas Haskell tienen menos agujeros de seguridad en general que C / C ++?

Los programas Haskell tienden a tener una baja tasa de error. Esto se debe en parte a que es un nivel muy alto y simplemente no tienes la oportunidad de cometer errores de bajo nivel. El aspecto funcional puro, si bien es difícil de aprender, hace que sea más fácil hacer cosas complicadas correctamente porque puede manejar cada parte de forma aislada.

C / C ++, por el contrario, es uno de los peores en estos días. La gestión manual de la memoria, la comprobación sin límites, la aritmética de punteros, etc., le brindan numerosas formas de arruinar que la mayoría de los lenguajes modernos no sufren.

Dicho esto, Haskell tiene problemas con cosas sensibles a la seguridad como contraseñas y claves de cifrado. Principalmente el hecho de que se trata de tipos inmutables y, en general, no le permite garabatear datos confidenciales cuando haya terminado de procesarlos. También puede hacer copias de datos confidenciales en la memoria sin que te des cuenta.

Posiblemente sí, pero realmente no importa.

Primero: Uno de los errores / agujeros de seguridad más frecuentes (si no los más frecuentes) son causados ​​por una mala gestión de memoria / condiciones de carrera.

Haskell, como la gran mayoría de los idiomas hoy en día, tiene un recolector de basura (rastreo), por lo que no tiene que preocuparse por el desbordamiento del búfer.

Además, Haskell es un lenguaje de programación funcional y tiene un paradigma diferente para la concurrencia, que a menudo es más adecuado para las tareas en cuestión.

Entonces, ¿cuál es el problema con la comparación?

Haskell no se usa realmente para programas que requieren un alto nivel de seguridad (porque Haskell no se usa, bueno, en ningún lugar) y aunque las razones mencionadas anteriormente pueden darnos pistas de que Haskell puede ser una opción más segura, es que tiene su propio equipaje y En la práctica, nadie en su sano juicio elegiría a Haskell para un proyecto que requiere una seguridad seria.

Los errores del compilador son (relativamente) raros.

Mi impresión es que los programas Haskell no son tan grandes (y llenos de funciones) como los programas orientados a procedimientos u objetos, como servidores web, servidores de bases de datos, navegadores, conjuntos de aplicaciones de oficina, etc.