stringtranslate.com

Lenguaje de programación estricto

Un lenguaje de programación estricto es un lenguaje de programación que solo permite que el usuario defina funciones estrictas (funciones cuyos parámetros deben evaluarse por completo antes de poder llamarlas). Un lenguaje de programación no estricto permite que el usuario defina funciones no estrictas y, por lo tanto, puede permitir la evaluación diferida . En la mayoría de los lenguajes no estrictos, la no rigurosidad se extiende a los constructores de datos .

Descripción

Un lenguaje de programación estricto es un lenguaje de programación que emplea un paradigma de programación estricto , permitiendo que el usuario defina únicamente funciones estrictas (funciones cuyos parámetros deben evaluarse completamente antes de poder llamarlas). Un lenguaje de programación no estricto permite al usuario definir funciones no estrictas y, por lo tanto, puede permitir una evaluación diferida . [1]

La falta de rigurosidad tiene varias desventajas que han impedido su adopción generalizada: [ cita requerida ]

Los lenguajes de programación estrictos suelen asociarse con la evaluación ansiosa , y los lenguajes no estrictos con la evaluación perezosa , pero otras estrategias de evaluación son posibles en cada caso. [ cita requerida ] Los términos "lenguaje de programación ansiosa" y "lenguaje de programación perezosa" se utilizan a menudo como sinónimos de "lenguaje de programación estricto" y "lenguaje de programación no estricto" respectivamente. [ cita requerida ]

Ejemplos

Casi todos los lenguajes de programación de uso común hoy en día son estrictos. [ cita requerida ] Los ejemplos incluyen C# , Java , Perl (todas las versiones, es decir, hasta la versión 5 y la versión 7), Python , [2] Ruby , Common Lisp y ML . Algunos lenguajes de programación estrictos incluyen características que imitan la pereza. [ aclaración necesaria ] Raku (anteriormente conocido como Perl 6) tiene listas perezosas, [3] Python tiene funciones generadoras, [4] y Julia proporciona un sistema de macros para construir funciones no estrictas, [5] al igual que Scheme .

Algunos ejemplos de lenguajes no estrictos son Haskell , R , Miranda y Clean . [6]

Extensión

En la mayoría de los lenguajes no estrictos, la no estrictez se extiende a los constructores de datos . Esto permite que las estructuras de datos conceptualmente infinitas (como la lista de todos los números primos ) se manipulen de la misma manera que las estructuras de datos finitas ordinarias. También permite el uso de estructuras de datos muy grandes pero finitas, como el árbol de juego completo del ajedrez .

Citas

  1. ^ Scott 2006, pág. 541.
  2. ^ Lott, Steven (2015). Programación funcional en Python . Birmingham, Reino Unido: Packt Publishing. p. 35. ISBN 978-1-78439-699-2Python se centra en la evaluación estricta
  3. ^ "Programación Raku/Listas y feeds perezosos - Wikilibros, libros abiertos para un mundo abierto". en.wikibooks.org . Consultado el 9 de febrero de 2021 .
  4. ^ Lott, Steven (2015). Programación funcional en Python . Birmingham, Reino Unido: Packt Publishing. p. 35. ISBN 978-1-78439-699-2. una función generadora no es estricta. [...] podemos aprovechar las funciones generadoras para crear una evaluación perezosa.
  5. ^ Innes, Mike J. (6 de febrero de 2021), MikeInnes/Lazy.jl , consultado el 9 de febrero de 2021
  6. ^ Cluet y Hull 1998, págs. 25-26.

Referencias