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 del preprocesador y las declaraciones , que los lenguajes orientados a expresiones suelen tratar como sentencias .
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.
Crítica y prevención
Los críticos, incluidos los diseñadores de lenguajes, [ 3 ] culpan a la orientación a expresiones de toda una clase 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 comprobar si es igual a esa expresión.
Algunos lenguajes como Ada y Java evitan este tipo de error al restringir las expresiones de control a aquellas que se evalúan estrictamente al tipo de datos booleano . [ 4 ] [ 5 ]
Algunos lenguajes, como Python, implementan la asignación como una instrucción en lugar de una expresión, lo que impide que la asignación se anide dentro de cualquier otra instrucción o expresión. [ 6 ] (Hasta que la versión 3.8 añadió las "expresiones de asignación", con una sintaxis diferente . [ 7 ] )
En algunos lenguajes orientados a expresiones, las expresiones que simplemente causan efectos secundarios devuelven tipos vacíos .
Ejemplos
Véase también
Referencias
- ↑ "Glosario - El lenguaje de programación Rust" . web.mit.edu . Consultado el 6 de julio de 2022 .
- 1 2 Syme, Don (2020-06-14). "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 .
- ↑ Convenciones de código Java "10.4 Asignación de variables"
- ↑ Especificación del lenguaje Java, Java SE 8 Edition "14.9 La instrucción if"
- ↑ Presentando a Ada
- ↑ Referencia del lenguaje Python "6.2. Sentencias 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 .
- Clasificación de lenguajes de programación