¿Cómo determinar si un lenguaje de programación es detallado o conciso?

17

Los lenguajes de programación a menudo se pueden describir como verbosos o concisos .

Según tengo entendido, un lenguaje detallado es fácil de leer y entender, mientras que un lenguaje conciso es conciso y ordenado, pero más difícil de leer. ¿Debería haber otras cosas a considerar en las definiciones?

Parece que gran parte de los lenguajes de programación populares de hoy en día son detallados, y estos términos dos términos solo se usan para describir un lenguaje como más o menos, en relación con otro lenguaje.

¿Cómo determinamos si un lenguaje de programación es más detallado / breve que otro?

Ejemplo: ¿C # es más detallado que Java?

esponja
fuente

Respuestas:

30

Según tengo entendido, un lenguaje detallado es fácil de leer y entender, mientras que un lenguaje conciso es conciso y ordenado, pero más difícil de leer.

Esto es falso Verbose significa muchos símbolos. Conciso significa menos símbolos.

Esto no tiene nada que ver con la facilidad de lectura o de comprensión.

Algunas personas encuentran que COBOL detallado es fácil de leer, otras lo encuentran confuso porque se requieren tantos símbolos para hacer tan poco.

Algunas personas consideran que I / J / K y APL son fáciles de leer porque el programa es muy corto. A otros les resulta difícil de leer porque los símbolos son oscuros.

Terse / Verbose no tiene una relación con fácil de leer o fácil de entender.

¿Debería haber otras cosas a considerar en las definiciones?

No. Las definiciones de conciso y detallado están bien.

Lo importante es que estas definiciones no tienen nada que ver con "fácil de leer y comprender"

Parece que gran parte de los lenguajes de programación populares de hoy son detallados.

De Verdad?

¿Cómo determinamos si un lenguaje de programación es más detallado / breve que otro?

Cuente fichas para hacer algo.

Add 2 TO A GIVING B.

7 fichas

b = a + 2;

6 fichas

http://dictionary.reference.com/browse/verbose

http://dictionary.reference.com/browse/terse

S.Lott
fuente
55
+1 para "Terse / Verbose no tiene ninguna relación con fácil de leer o fácil de entender". Siempre pienso en la notación matemática que, cuando se hace correctamente, es notablemente densa pero aún relativamente legible.
Frank Shearar
55
@sunpech: Eso es lo que significan las palabras en inglés. "detallado" significa muchas palabras. "conciso" significa menos palabras. Nada que ver con la legibilidad. Simplemente las palabras cuentan. Todo lo que hice fue reemplazar "palabra" con "ficha". Es solo inglés, nada especial.
S.Lott
1
También podríamos considerar la longitud de los tokens. Common Lisp parece prolijo porque muchas de las palabras clave son largas, y eso también se suma a la verbosidad de COBOL.
David Thornley
1
@ Frank Shearar: Absolutamente falso, piense en el tiempo que les toma a los estudiantes aprender matemáticas. Es tan ilegible como puede ser (matemáticas serias) e incluso después de 6 años de educación secundaria, la mayoría aún no puede leerlo en serio. ¡No es que ser ilegible sea algo malo! Pero decir que las matemáticas son una notación legible es un comentario miope, por decir lo menos.
David Mulder
2
@DavidMulder: la notación matemática varía enormemente, por lo que sospecho que ambos estamos cometiendo pecados de hipérbole. ¿Seguramente consideras que la notación para álgebra, teoría de conjuntos, cálculo básico es transparente? Por otro lado, considero que la notación abstracta de los tensores no tiene sentido. (Pero entonces, tampoco me tomé el tiempo para aprender la notación correctamente.)
Frank Shearar,
6

¿Cómo determinamos si un lenguaje de programación es más detallado / breve que otro?

Al comparar las construcciones de lenguaje equivalentes o similares, específicamente cómo se puede resolver la misma tarea o equivalente en un idioma versus el otro.

¿C # es más detallado que Java?

Java es en general más detallado que C #. Las diferencias más obvias incluyen delegados y expresiones lambda, donde Java requiere definir, subclasificar e instanciar una interfaz distinta para lograr lo que posiblemente se hace usando una sola expresión lambda en C #.

Péter Török
fuente
1
Java ahora admite expresiones lambda con Java 8 ( docs.oracle.com/javase/tutorial/java/javaOO/… )
shanraisshan
1
@shanraisshan: sí, mejoró con el tiempo, pero AFAIK Java todavía es un poco más detallado. Por ejemplo, en los documentos a los que se vinculó, el código contiene muchas p.getAge()declaraciones. En C #, crearía una propiedad Age, que trae el mismo grado de encapsulación que una función miembro getAge, pero permite escribir en su p.Agelugar.
Doc Brown
1
Además, si bien Java ha mejorado, C # tampoco ha sido exactamente un objetivo estático ... Nuevas características, ya que esta respuesta, como las funciones de generador y async / await, también sirven para permitir que el código C # sea más corto que el equivalente de Java.
Julio
3

Entregue un fragmento de código al no programador y pídale que explique qué intenta hacer ese fragmento. Si obtienes la respuesta más cercana, entonces es detallado. si obtiene la expresión WTF, entonces es conciso.

QriousCat
fuente
2

La medida se llama expresividad del lenguaje. La métrica típica para esto es medir líneas estandarizadas de código o declaraciones necesarias para implementar la misma funcionalidad.

Algunos valores del Wiki: cuántas declaraciones / líneas de código C se necesitan para implementar una funcionalidad de una declaración / línea en:

  • C - declaraciones: 1 líneas: 1
  • C ++ - declaraciones: 2.5 líneas: 1
  • Fortran - declaraciones: 2.5 líneas: 0.8
  • Java - declaraciones: 2.5 líneas: 1.5
  • Perl - declaraciones: 6 líneas: 6
  • Smalltalk - declaraciones: 6 líneas: 6.25
  • Python - declaraciones: 6 líneas: 6.5
vartec
fuente
Creo que el hecho de que una de estas mediciones sugiera que FORTRAN es más expresivo que C por algún margen (!) Mientras que el otro afirma lo contrario al afirmar que C ++ es igualmente expresivo para C (!!) resume la utilidad de tales "métricas" ".
Julio