Un lenguaje de programación orientado a expresiones es un lenguaje de programación en el que cada (o casi cada) construcción es una expresión y, por lo tanto, produce un valor. [1] Las excepciones típicas son las definiciones de macros , los comandos de preprocesador y las declaraciones , que los lenguajes orientados a expresiones a menudo tratan como instrucciones .
Lisp [2] y ALGOL 68 son lenguajes orientados a expresiones. Pascal no es un lenguaje orientado a expresiones.
Todos los lenguajes de programación funcional están orientados a expresiones. [3]
Crítica y prevención
Los críticos, incluidos los diseñadores de lenguajes, [4] [ verificación fallida ] culpan a la orientación a expresiones por una clase entera de errores de programación en los que un programador codifica accidentalmente una expresión de asignación , que reemplaza una variable con una expresión en lugar de probar su igualdad con esa expresión.
Los diseñadores de Ada y Java evitan este tipo de error al restringir las expresiones de control a aquellas que evalúan estrictamente el tipo de datos booleano . [5] [6]
Los diseñadores de Python implementaron la asignación como una declaración en lugar de una expresión, lo que prohibía que la asignación se anidara dentro de cualquier otra declaración o expresión. [7] (Hasta la versión 3.8 se agregaron "expresiones de asignación", con una sintaxis diferente. [8] )
En algunos lenguajes orientados a expresiones, las expresiones que simplemente causan efectos secundarios devuelven tipos void .
Ejemplos
- ALGOL 68
- DICHA
- Icono
- Ceceo [2]
- Ml
- Perl
- Rebol
- Rubí
- Elixir
- Erlang
- Haskell
- Óxido [9]
- Escala
- Charla informal
- Kotlin
- OCaml [10]
Véase también
Referencias
- ^ "Glosario - El lenguaje de programación Rust". web.mit.edu . Consultado el 6 de julio de 2022 .
- ^ ab Syme, Don (14 de junio de 2020). "La historia temprana de F#". Actas de la ACM sobre lenguajes de programación . 4 (HOPL): 1–58. doi : 10.1145/3386325 . ISSN 2475-1421.
- ^ "Programación orientada a expresiones". Knoldus - Technical Insights . 2018-02-08 . Consultado el 2023-08-07 .
- ^ Convenciones del código Java "10.4 Asignaciones de variables"
- ^ La especificación del lenguaje Java, Java SE 8 Edition "14.9 La declaración if"
- ^ Presentando a Ada
- ^ Referencia del lenguaje Python "6.2. Declaraciones de asignación"
- ^ "PEP 572: Expresiones de asignación"
- ^ "Funciones: el lenguaje de programación Rust". web.mit.edu . Consultado el 6 de julio de 2022 .
- ^ "COS 326: Programación funcional". www.cs.princeton.edu . Consultado el 6 de julio de 2022 .