Aquí podría ser tu PUBLICIDAD


¿Qué significa "expresivo" al referirse a los lenguajes de programación?

votos
56

Escucho mucho esta palabra en oraciones como JavaScript es un lenguaje muy expresivo. ¿Simplemente significa que no hay muchas reglas, o tiene expresivo un significado más específico?

Publicado el 12/03/2009 a las 15:32
fuente por usuario morgancodes
En otros idiomas...        العربية       

7 respuestas

votos
50

"Expresivo" significa que es fácil escribir código que sea fácil de entender, tanto para el compilador como para un lector humano.

Dos factores que contribuyen a la expresividad:

  • construcciones intuitivamente legibles
  • falta de código repetitivo

Compara este expresivo Groovy con el expresivo Java eqivalent:

3.times {
   println 'Hip hip hooray'
}

vs

for(int i=0; i<3; i++) {
    System.out.println("Hip hip hooray");
}

A veces cambias la precisión por la expresividad: el ejemplo de Groovy funciona porque asume cosas que Java te pide que especifiques explícitamente.

Respondida el 12/03/2009 a las 03:41
fuente por usuario slim


Aquí podría ser tu PUBLICIDAD


votos
14

Supongo que significa que es capaz de expresar ideas / algoritmos / tareas de una manera fácil de leer y sucinta.

Usualmente asocio un lenguaje expresivo con azúcar sintáctico, aunque no siempre es así. Ejemplos en C # de ser expresivo serían:

  • foreach (en lugar de escribir explícitamente la iteración)
  • la usingdeclaración (en lugar de escribir explícitamente el try / finally)
  • expresiones de consulta (sintaxis simple para escribir consultas LINQ)
  • métodos de extensión (que permiten el encadenamiento de llamadas a métodos, de nuevo principalmente para LINQ)
  • métodos anónimos y expresiones lambda (lo que permite la construcción de delegados y árbol de expresiones)

Un ejemplo diferente sería genéricos: antes de que C # obtuviera genéricos, no podía expresar la idea de "un ArrayListcontener cadenas" en el código. (Podría documentarlo, por supuesto, o escribir su propio StringListtipo, pero eso no es lo mismo).

Respondida el 12/03/2009 a las 03:36
fuente por usuario Jon Skeet

votos
10

Neal Grafter tiene un blog con una buena cita sobre el tema ...

En mi opinión, una construcción de lenguaje es expresiva si le permite escribir (y usar) una API que no puede escribirse (y usarse) sin la construcción.

Yo diría que eso significa que puedes expresar más naturalmente tus pensamientos en código.

Respondida el 12/03/2009 a las 03:37
fuente por usuario TofuBeer

votos
4

Esa es una dificil.

Para mí, tiene que ver con la facilidad con la que puedes expresar tu intención. Esto es diferente en diferentes idiomas, y también depende mucho de lo que desea hacer, por lo que este es un área donde las generalizaciones son comunes. También es subjetivo y personal, por supuesto.

Es fácil pensar que un lenguaje de más alto nivel es siempre más expresivo, pero no creo que sea cierto. Depende de lo que intenta expresar, es decir, del dominio del problema.

Si desea imprimir el número de coma flotante que tiene el patrón binario 0xdeadbeef, es mucho más fácil hacerlo en C que en Bash, por ejemplo. Sin embargo, Bash es, en comparación con C, un lenguaje de nivel ultra alto. Por otro lado, si desea ejecutar un programa y recopilar su resultado en un archivo de texto, es tan simple que es casi invisible en Bash, pero requeriría al menos una página de código en C (suponiendo un entorno POSIX).

Respondida el 12/03/2009 a las 03:39
fuente por usuario unwind

Respondida el 12/03/2009 a las 03:36
fuente por usuario Yardena

votos
2

Aquí, una comparación muy controvertido:

http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/

Así que, ¿cuáles son los mejores lenguajes de estas métricas?

Si tienes que elegir el top 10 en base a la clasificación por la mediana y por RIC, después la intersección de ellos, esto es lo que queda. La mediana y la RIC se enumeran inmediatamente después de los nombres:

Augeas (48, 28): A lenguajes específicos de dominio para los archivos de configuración

De marionetas (52, 65): Otra DSL para REBOL de configuración (57, 47): un lenguaje diseñado para la computación distribuida

CE (75, 75): Ecere C, un derivado de C con orientación a objetos

CoffeeScript (100, 23): Un lenguaje de alto nivel que transcompiles tener JavaScript

Clojure (101,51): Un dialecto Lisp para la programación funcional, concurrente

Vala (123, 61): Un lenguaje orientado a objetos utilizado por GNOME

Haskell (127, 71): Un lenguaje puramente funcional, compilado con fuerte tipos estáticos

Respondida el 21/10/2014 a las 03:39
fuente por usuario AA.

votos
1

Tal vez este sitio http://gafter.blogspot.com/2007/03/on-expressive-power-of-programming.html puede ayudarte

En resumen, dice : En mi opinión, una construcción de lenguaje es expresiva si te permite escribir (y usar) una API que no se puede escribir (y usar) sin la construcción. En el contexto de la extensión de lenguaje propuesta de Closures for Java, las API de abstracción de control son el tipo de cosas que no parecen ser compatibles con las propuestas de la competencia.

Respondida el 12/03/2009 a las 03:38
fuente por usuario TStamper