2011-09-07 17 views
5

He notado que muchos lenguajes como Ruby y CofeeScript (bueno, un transcompilador) soportan que todo sea una expresión.Todo es una expresión

Ahora hace que el lenguaje sea algo simple de entender y definitivamente parece limpio en la superficie, pero estaba buscando tal vez algunas publicaciones académicas sobre los aspectos positivos y negativos de los dos enfoques.

Sería beneficioso que las publicaciones tuvieran ejemplos claros que compararan los beneficios de tener todo como una expresión vs., bueno, no.

Los ejemplos en CoffeeScript vs Javascript serían agradables, pero no obligatorios.

El concepto es definitivamente genial, pero aún no estoy seguro de cuán revolucionaria es realmente la idea (obviamente, algo revolucionario es en cierto modo una opinión).

Gracias!

+1

dos palabras: programación funcional. –

+7

una palabra: elaboración: D – William

+0

Leyendo a través de wikipedia parece tener todo, una expresión agrega sobrecarga que idiomas como c no tienen. ¿Es esta la conclusión correcta o debería estar determinando algo más? @Mauricio – William

Respuesta

4

No hay nada revolucionario sobre esto per se. El enfoque expression-oriented es una técnica functional programming.

El código orientado a la expresión es más simple y menos abarrotado que el código orientado a sentencias, debido a que hay menos assignments y no hay declaraciones explícitas de return. La falta de distinción entre expresiones y comandos permite la uniformidad conceptual (ver Referential transparency) y la estructura bottom-up.

Algunos idiomas modernos han adoptado conceptos de programación funcional (por ejemplo, C#, Python, Ruby).

Alguna información académica sobre los beneficios de las prácticas funcionales:

Artículos de interés:

cuanto a la observación acerca de los problemas de rendimiento, la posible sobrecarga relacionada con la elección de paradigma es probablemente insignificante.Incluso en C, la mayoría de las declaraciones evaluate as an expression - sin embargo, una comparación entre un lenguaje compilado (C) y un lenguaje interpretado (CoffeeScript) es bastante inútil.

En una nota teórica, un imperative language representa el flujo de control en una forma más orientada a la máquina, que puede permitir una optimización de la mano más fácil que un lenguaje funcional.

El rendimiento del lenguaje y su importancia dependen en gran medida del caso de uso. Con respecto a JavaScript y a cualquier transformación de código que se encuentre encima, esta discusión sobre el rendimiento es completamente irrelevante. Las ganancias en productividad superan cualquier leve golpe de rendimiento.

0

Por "todo es una expresión," supongo que te refieres a lo que se describe http://jashkenas.github.com/coffee-script/

Es un poco suena como lo que estás preguntando son los lenguajes funcionales. Considere, por ejemplo, Lisp, que hizo este tipo de cosas en los años 50. Esto finalmente sale del Cálculo de Lambda, en el que el código y los datos son realmente lo mismo, y puede pasar el código como si fuera información (porque lo es).

No conozco ningún artículo académico que lo discuta específicamente, pero ahora al menos tiene algunas palabras clave más para buscar.

Cuestiones relacionadas