Expresiva de energía es definido por Wikipedia como:
Volvamos a leer esa página. Una de las primeras cosas a tener en cuenta es que dice "lenguaje", no "lenguaje de programación", y la mayoría de sus ejemplos no son lenguajes de programación, por ejemplo, el primer ejemplo dado es una comparación de OWL2 EL y OWL2 RL, que son ontología idiomas
Se puede aplicar el concepto a los lenguajes de programación, pero también a los lenguajes de coincidencia de patrones, los lenguajes de marcado, los lenguajes de consulta, los idiomas de la hoja de estilo visual, las expresiones regulares (y todos los lenguajes regulares a los que se refieren), etc. Incluso se puede referir al poder expresivo de los idiomas naturales como el inglés, que a menudo se hace de manera informal, pero con más seriedad al considerar los problemas relacionados con el procesamiento del lenguaje natural.
¿Las "ideas" se refieren a las cosas (operaciones, estructuras, algoritmos, etc.) que podemos comunicar a la máquina? ¿O se refiere a los conceptos "humanos" que pueden capturarse y comunicarse con el lenguaje a otros humanos?
Se refiere a lo que se puede expresar en ese idioma, considerado puramente como una cosa en sí mismo.
Por ejemplo, (usaré javascript para mis ejemplos, porque su pregunta indica que es uno de los idiomas que conoce) considere la declaración de javascript:
var x = 3 + 4;
Esto representa que la suma de valor de 3 y 4 se calcula y el valor asociado con una etiqueta xdentro de un ámbito de espacio de nombres dado.
Si destruimos todas las computadoras del mundo y escribimos ese código en una hoja de papel, seguiría siendo que en JavaScript todavía tenía el mismo significado; no podríamos ejecutar dicho código en nada, pero la definición abstracta del lenguaje sigue siendo algo de lo que podríamos hablar.
Esto puede parecer pedante, pero en realidad es bastante importante que los idiomas sean cosas sobre las que se pueda razonar en abstracto sin tener en cuenta las computadoras reales. Por un lado, las personas que razonan sobre puntos teóricos de lenguajes de computadora que aún no eran factibles en la práctica es una de las cosas que nos han llevado a donde estamos hoy; las computadoras necesitan informática, pero la informática no necesita computadoras, solo la idea de un cálculo.
Por supuesto, usamos computadoras en el mundo real, y en estos días hay muchas personas que las usan en la práctica en lugar de unos pocos especialistas que las discuten en teoría. La página a la que enlazaste dice:
El término poder expresivo puede usarse con un rango de significado. Puede significar una medida de las ideas expresables en ese idioma:
El primer sentido domina en áreas de matemática y lógica que se ocupan de la descripción formal de los lenguajes y su significado, como la teoría del lenguaje formal, la lógica matemática y el álgebra de procesos.
En las discusiones informales, el término a menudo se refiere al segundo sentido, o a ambos. Este suele ser el caso cuando se habla de lenguajes de programación. Se han realizado esfuerzos para formalizar estos usos informales del término
De estos dos usos del término, el impacto práctico del primero se relaciona únicamente con lo que se puede transmitir a la computadora.
El segundo se relaciona más con la comprensión humana tanto en lectura como en escritura, aunque el grado en que lo hace difiere mucho entre los usos, ya que son informales y, como tales, no están rigurosamente definidos.
Por ejemplo, si tomáramos un lenguaje como JavaScript e impusiéramos una restricción extraña a los nombres de variables, como la variable debe ser un número de 8 dígitos precedido por un guión bajo, coincidente /^_[0-9]{8}$/, ¿perderíamos poder expresivo?
Según la definición formal, no hemos perdido poder expresivo: estamos restringidos a 100,000,000 variables, pero si realmente lo necesitáramos, podríamos evitar esto creando objetos para contener más variables dentro del espacio de nombres recién creado. Como tal, cualquier programa escrito en JavaScript hoy podría reescribirse en esta nueva forma, por lo que son igualmente expresivos.
Según la definición informal, hemos perdido algo, pero cuánto depende de cuán informales seamos, lo que variará porque nuevamente no se puede decir cuál es "la regla" sobre un uso informal. Podríamos decir que hemos perdido una pequeña cantidad, porque los programas con más de 100,000,000 de variables en el mismo espacio de nombres deben reescribirse más allá de una simple sustitución. Un uso aún más informal nuevamente se referiría al impacto mental de tales nombres variables desgarbados en el ser humano integral.
También vale la pena señalar que las personas considerarán informalmente cosas que no son estrictamente parte del lenguaje. Considere los cambios en Javascript desde su creación hasta hoy.
Según la definición más formal, no ha habido cambios en la expresividad; Turing estaba completo para empezar, después de todo.
Por una definición más informal, se ha vuelto considerablemente más expresivo en ciertas cosas como la manipulación de matrices, el manejo de excepciones y (quizás sobre todo) en la inclusión de expresiones regulares. Estos no hacen nada que antes no se pudiera hacer en javascript, aunque a menudo pueden hacer algo en unas pocas líneas y en un tiempo de ejecución de un segundo que tomaría kilobytes de código para escribir en javascript 1.0 y mucho tiempo para ejecutarse.
Por una definición mucho más informal nuevamente, el cambio desde el primer uso de JavaScript en los navegadores (capaz de cambiar los valores de las entradas de formulario, document.writemientras que la página se analiza primero y se mueve a una nueva ubicación o retrocede o avanza en el historial, pero bastante mucho más) para eso hoy (capaz de cambiar casi cualquier cosa en la página, incluso sobre la base de los datos de las llamadas al servidor) es absolutamente inmenso, aunque la mayor parte no se relaciona con JavaScript sino con los modelos de objetos y las API realizadas disponible, en lugar del idioma (por ejemplo, vbscript en IE se benefició de esos cambios por igual).
En mi opinión, ese último uso es tan informal que no es realmente correcto, pero ese es el problema con las definiciones informales.
Según la definición formal, realmente no se ha vuelto más expresivo en absoluto.