Originalmente intenté preguntar esto en StackOverflow, pero fue demasiado subjetivo :-(. Estoy interesado en los métodos para definir el poder de los lenguajes de programación. Turing es completo, pero está casi universalmente satisfecho. Lo que sería bueno es definir un medida de poder que discrimina entre los lenguajes de programación que realmente se usan. Por ejemplo, ¿alguien puede proponer un método no subjetivo que discrimine entre ensamblador y Java?
La integridad de Turing significa que un lenguaje tiene el máximo poder en lo que puede generar (lo que significa que puede hacer cualquier cosa que no esté basada en el tiempo en el mundo real). Entonces, si queremos definir una medida de poder más fuerte, debemos adoptar otro enfoque. Se sugirió brevedad en la pregunta original, pero esto no es fácil de definir en absoluto. ¿Alguien tiene alguna otra sugerencia?
fuente
Si entiendo su pregunta correctamente, no obstante, está buscando algo que sea relativamente medible y no solo una decisión subjetiva. Si es así, personalmente favorecería la cantidad de tiempo necesario para resolver cualquier problema en particular (promediado sobre todos los problemas y todos los programadores). En esta medida, es posible que deba considerar no solo el lenguaje en sí, sino también el marco / API utilizado con él. La sintaxis sucinta es un factor muy pequeño: uno mucho más importante es que la funcionalidad más comúnmente requerida es fácilmente accesible.
Si buscas algo más subjetivo, diría lo divertido que es . Los programadores tienden a ser personas que quieren que se resuelvan los problemas, por lo que un lenguaje de programación divertido para los programadores inevitablemente será el que resolverá la mayoría de los problemas. Esta medida tiene en cuenta que diferentes personas tienen diferentes preferencias sobre cómo usar las cosas, por lo que el "mejor" lenguaje de programación será el que resulte más atractivo para la gama más amplia de programadores. Sin embargo, es posible que deba considerar no solo el lenguaje de programación y la API aquí, sino también el entorno (IDE), que es, por supuesto, con lo que realmente interactúa el programador.
fuente
Definiría cuán poderoso es un lenguaje por lo productivo que puede ser con él. Mucha gente tiende a hablar sobre la productividad en términos de escribir código rápidamente, pero dado que la mayoría del ciclo de vida de un programa es mantenimiento, no desarrollo, una mejor medida es la facilidad con la que puede leer y depurar el código, especialmente cuando alguien lo ha escrito más. Los lenguajes más poderosos son los que son más fáciles de leer y mantener.
fuente
Necesita definir mejor su terminología.
La integridad de Turing no se trata de "poder" en el sentido en que probablemente te refieres. Más bien se trata de computabilidad; es decir, si un lenguaje dado puede expresar algún programa que pueda implementarse usando una máquina Turing. Resulta que casi todos los lenguajes de programación están completos.
Probablemente lo que busca es una medida de lo que se conoce como "expresividad" del lenguaje de programación. No estoy seguro de si existe tal medida, o si es así, si es útil. Básicamente, los diferentes lenguajes de programación son mejores para expresar soluciones a diferentes tipos de problemas.
EDITAR
Solo para explicarlo, los lenguajes de programación no tienen una propiedad conocida como "poder". Existe un concepto comúnmente conocido como "expresividad" o "poder expresivo" de un lenguaje de programación. La expresividad se debe en parte a lo fácil que es escribir programas concisos para abordar problemas particulares. Pero también hay una medida considerable de lo fácil que es leer y escribir los programas. Es algo así como "belleza". Lo sabré cuando lo vea, pero no me pidas que lo defina.
Simplemente comparar los recuentos de caracteres no te da una medida adecuada de expresividad. De lo contrario, podría hacer que un lenguaje sea más expresivo al comprimir el código fuente ... y eso no tiene sentido. De hecho, no conozco ninguna medida objetiva de expresividad, y sospecho firmemente que no existe ninguna. Lo que efectivamente hace que la característica sea inútil y bastante poco interesante.
fuente