Pregunta

A menudo he leído que algunos lenguajes de programación están claros que otros y me pregunté varias veces si hay una forma objetiva de medir la claridad de un lenguaje con el fin de diseño, dada una sintaxis abstracta, una sintaxis concreta lo más claro y humana como sea posible. Tal vez exista algún tipo de patrones de diseños para ese propósito?

En pocas palabras: ¿Cómo se puede lograr la máxima claridad de una sintaxis? Conoce alguna manera de cuantificar la "claridad" o "expresividad" de un idioma?

Tiene sentido tratar de medir estos aspectos?

Gracias.

¿Fue útil?

Solución

He escuchado esta frase muchas veces descuidadamente arrojados en diferentes idiomas y diferentes personas elegirá diferentes lenguajes basados ??en diferentes criterios.

Hermosa Código , Yukihiro Matsumoto (diseñador de Ruby) hace una discusión sobre cómo mucho más simple que es escribir un programa Hola Mundo en Ruby que en Java. Aunque no creo que este ejemplo está destinado a escala, la idea del autor es que la cantidad de costra que hay que añadir a su código refleja la deficulty en la comprensión de un programa escrito en un lenguaje que. Es decir, la distracción menos te haces, más "legible" es el programa.

Ahora, en mi experiencia, los buenos programadores escribir código claro en todos los idiomas que programan en, aunque aún con mayor claridad en los idiomas que están más familiarizados. el talento del autor, así como la amplitud de su experiencia en este fin lenguage hasta enanismo el propio lenguaje de la claridad o la expresividad.

Otro punto a considerar es la cantidad de bibliotecas disponibles y la calidad de las API. Si usted tiene que escribir menos "código de soporte" para hacer el trabajo, entonces es probable que el programa resultante es más claro porque parece más directo al grano.

Otros consejos

Ha habido algunos estudios en lo que se llama "programación natural" que puede ser de interés para usted:

http://www.cs.cmu.edu/~NatProg/index .html

Se intenta explicar las lenguas para satisfacer las expectativas humanas en lugar de tratar de ajustarse a la gente lo que es más simple de un ordenador. Y están basándola en los experimentos. Por ejemplo el estudio de cómo muchas personas traen de vuelta una pera de una caja de fruta cuando se indica que "traer de vuelta algo no es una manzana o una pera". (No he mantenido con sus resultados, pero sonaba como un proyecto prometedor.)

Sin embargo, la "claridad" y "expresividad" son cosas nebulosas de medir. Hay estudios que hacen curso medida cuantitativa de idiomas uno contra el otro, como el Lenguaje de ordenadores puntos de referencia del juego . Algunas personas han tomado los datos de las soluciones que se ofrecen en ese juego y representar gráficamente las tendencias como "código de actuación frente a tamaño":

http: //blog.gmarceau .qc.ca / 2009/05 / velocidad de tamaño-y-fiabilidad-of.html

podría ser capaz de hacer algunas proposiciones basadas en métricas temblorosas sobre un uso múltiple-lenguaje general sobre la base de las tendencias en el tamaño del código que se necesita para realizar una determinada tarea de manera eficiente. Pero entonces estás fijación abajo nociones bastante subjetivas de lo "claridad" y "expresividad" son. (Soy parcial a creer programas más cortos que hacen el mismo trabajo más rápido a menudo son más claras, pero hay muchos contraejemplos.)

Así que diría que, en ausencia de un público objetivo definido con el que se puede hacer estudios de usabilidad con los sujetos de prueba, que no va a hacer mucho mejor que este tipo de métricas para hacer generalizaciones acerca de los idiomas.

(Nota: Me gusta Rebol y yo creo que tiene el poder de ser muy clara y expresiva. ..pero solo si usted lo usa de una manera determinada, que implica el desarrollo de dialectos DSL a medida que avanza, que no es la forma en que mucha gente piensa cuando se programa. sin embargo!)

No creo que hay. La claridad es subjetiva, y los patrones de diseño no son una medida buena para mayor claridad de una lengua (de hecho, el patrón de diseño suelen ser nacido para eludir la limitación de un idioma).

Algunas personas le gusta una lengua con una rica y concisa semántica (por ejemplo, Perl) y realmente no importa el uso de símbolos, mientras que otro prefiere una sintaxis que se asemeja lenguaje natural, de tal manera que usted aparece para hablar con el ordenador (por ejemplo Hypercard ) y en realidad no importa el nivel de detalle o la ambigüedad.

Una pregunta como esta por lo general resulta en una respuesta pedante.

Las lenguas son como las herramientas.

Se construye para satisfacer a ciertos fines. lenguaje de programación lógica de resolver ciertos problemas de una manera más elegante que un programa orientado a objetos haría. Del mismo modo, muchos solución principal de la corriente se hace fácilmente mediante un lenguaje orientado a objetos típicos o de procedimiento.

El temperamento y otros factores del usuario de la herramienta, en este caso un programador también es importante. Algunas personas han logrado soluciones ingeniosas en Perl, pero siempre se ha parecido a la magia negro para mí. Yo prefiero la simplicidad estructural de Python. Para algunos, es el uso de espacio en blanco ha sido abominable.

Sería en el mejor de una evaluación muy subjetiva, si no puede haber una evaluación de un lenguaje claridad y expresividad.

Como siempre, es una clara indicación de la riqueza de la producción de código en ese idioma. Algunos idiomas, como brainfuck no ha sido adoptado, mientras que Python, Ruby, etc han ganado popularidad. Aunque, estos y muchos factor puede ser solamente un indicador. Algunos idiomas, a pesar de las buenas construcciones puede no encontrar mucho tomadores.

Efecto de la red también afectan a la adopción del lenguaje.

Me parece LOLCODE a ser el lenguaje más comprensible de todos ellos:

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
    UP VAR!!1
    VISIBLE VAR
    IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE

La medición de la comprensibilidad de una lengua no es tan importante como la medición de la comprensibilidad de un programador.

También puede mirar en el libro "Conceptos de Lenguajes de Programación" por Última edición, R. W. Sebesta. Hay capítulo en este libro (capítulo 1 o 2 que no recuerdo exactamente) discutir los criterios para evaluar un lenguaje de programación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top