Sí puede. Antes de responder con más detalle, es importante discutir que hay grados de “programación funcional”. ¿Clojure es un lenguaje funcional? R? ¿Pitón? Lisp común? No todo el mundo está de acuerdo en que “la línea” entre lo funcional y lo habitual es disfuncional (significado disfuncional , “imperativo cuando no debería ser o de una forma peligrosamente descontrolada”, porque la programación imperativa es absolutamente adecuada para algunos problemas y generalmente es inofensiva). pequeños pedazos de código) vive la programación.
La mayoría de los idiomas son “funcionales”. Ese es el primer nivel. Eso incluye Python, con funciones de orden superior y funciones de mapa y filtro. Eso es útil, pero realmente no cambia la forma en que la mayoría de las personas codifican. El segundo nivel sería “funcionalmente alentado”, que es lo que son la mayoría de los lenguajes: Clojure, ML y Haskell están en esta categoría, aunque Haskell podría ser “funcionalmente altamente alentado” porque el sistema de tipos espera que las funciones normales no tengan estado, y se considera un error escribir una función con estado con la firma de tipo de una sin estado. (Puede usar unsafePerformIO para evadir la mónada IO y otorgar firmas de tipo sin estado a las funciones externas con estado, pero se considera un código incorrecto si la función tiene estado semántico). Entonces, uno podría ser “funcional-requerido”, lo que generalmente significa que los efectos con estado se segregan a una pequeña parte crítica del programa que se anota claramente como el único responsable de la ejecución , mientras que la mayor parte del código realiza cálculos sin estado. Haskell usando -XSafe estaría en esta categoría. En general, la programación funcional requerida es más restrictiva de lo que la mayoría de los programadores tolerarían. Entonces, “programación funcional” generalmente significa el segundo de estos tres niveles: programación funcional alentada .
Dicho todo esto, respondamos la pregunta. Primero, la habilitación de características funcionales (como en Python o Ruby) puede hacer que el código sea mucho más conciso. Con menos líneas de código y menos complejidad accidental, los programadores pueden prestar más atención a la esencia de lo que se está haciendo y detectar errores más fácilmente. Entonces, sí, incluso un poco de programación funcional (Python no es tan funcional) puede facilitar la escritura del código correcto (y seguro). Por supuesto, eso no garantiza nada y, cuando se trata de seguridad, generalmente no hay garantías porque, por así decirlo, ni las computadoras ni los humanos pueden reconocer de manera confiable a los “malos”.
- ¿Qué software de pedido / inventario está más orientado, por lo que para Amazon recomendaría como un arranque / menor costo para comenzar? Incorporación a un software más avanzado / costoso en el futuro.
- ¿Desde dónde empiezo si quiero ser ingeniero de software?
- Cómo elegir como lenguaje de programación principal
- ¿Por qué los equipos de desarrollo en desarrollo de juegos o software a veces no entienden cómo pedir ayuda para tomarse de la mano o hacer cosas por usted cuando tiene problemas?
- ¿Diría que Go (Golang) es, en cuanto a su carrera, una buena inversión a largo plazo?
Con la fuerte tipificación estática de Haskell, puede ir un poco más allá, ya que en realidad puede establecer requisitos estrictos en el sistema de tipos. (Esto se puede lograr con las comprobaciones de tiempo de ejecución en lenguajes dinámicos, pero eso requiere que los humanos sigan constantemente una política de lo que se verifica y lo que no.) Por ejemplo, en lugar de exponer una API SQL que acepta cadenas sin formato (no hacer eso!) puede escribir una función con la firma de tipo Consulta -> SanitizedString y solo aceptar SanitizedStrings para el motor SQL. Esto le permite controlar qué tipos de consultas están permitidas a través del tipo de consulta.
No obtienes “seguridad” gratis porque no siempre es un concepto bien definido, y porque los humanos son sorprendentemente ingeniosos cuando hay algo que ganar al romper un programa, pero la programación funcional y especialmente la programación funcional de tipo estático hacen que Es más fácil escribir código seguro.