5

De los idiomas interpretados que conozco (Python, Perl, R, bash), los comentarios de varias líneas parecen implicar un mal uso de otra característica del lenguaje (por ejemplo, cadenas de varias líneas).¿Por qué los lenguajes de scripting/interpretados raramente tienen comentarios de varias líneas?

¿Hay algo inherente en el tipo de análisis que hacen los intérpretes que hace que los comentarios de líneas múltiples sean difíciles? No parece que deba ser significativamente diferente de, por ejemplo, cadenas multilínea.

Respuesta

0

En Python simplemente utilizamos una cadena multilínea como comentario.

¿Por qué tener dos tipos de sintaxis cuando uno hará?

+0

Tal vez que trabaja para Python, Perl, pero por lo general tiene la filosofía de que dos caminos son mejores que uno. E incluso Python generalmente te permite hacer lo mismo de dos maneras diferentes si eso aumenta la claridad. (Tener una cadena que no se asigna a nada equivale a un comentario no es obvio para mí, al menos.) – Xodarap

+0

@ Xodarap: No estaba respondiendo en otros idiomas. Estaba respondiendo por Python. Su pregunta puede ser demasiado amplia para tener una respuesta posible, ya que es probable que la respuesta sea ** diferente ** para cada idioma. –

1

En verdad, estoy seguro de que no tiene importancia a la hora de implantar cualquier tipo de comentarios multilínea (según los métodos que la mayoría de los analizadores utilizan para leer/ejecutar el script). En mi opinión personal, los guiones necesitan más comentarios multilínea debido a la distribución y la explicación (la mayoría de los lenguajes de alto nivel generalmente se compilan y solo un porcentaje de ellos es de fuente abierta). Sé que Lua, un lenguaje de scripting, utiliza comentarios multilined.

--[==[ 
COMMENT 
]==]-- 

Estoy seguro de que es una casualidad que muchos idiomas no son compatibles con esto. Es comúnmente aceptable usar solo comentarios de una sola línea para crear un comentario de múltiples líneas.

//*****************************************\\ 
//**          **\\ 
//**   JOHN SMITH    **\\ 
//**  COPYRIGHT 2008-2011   **\\ 
//**          **\\ 
//*****************************************\\ 

Mucha gente también utilizará una sola línea Comentarios para crear una imagen fresca (arte ASCII) usando el carácter de comentario para empezar la imagen (tipo de lo que se muestra arriba, donde // es el carácter comentando (s)/frase).

+0

Sí, pero ese estilo de comentarios solo hace más trabajo que cualquier otra cosa. Prefiero no pagarles a los desarrolladores mucho dinero solo para que los comentarios se vean como propios. Los comentarios multilínea estilo C son preferibles IMO – DarinH

+0

@drventure ¡Muy, muy cierto! Pero, ¿cuánto más trabajo? ¿Con qué frecuencia necesita incluir un comentario de múltiples líneas? Por lo general, una vez al comienzo de un fragmento de código o un par en una aplicación más grande. En verdad, probablemente solo le ahorrará una fracción de tiempo y el resultado será el mismo. ¿Realmente importa tanto? Apruebo totalmente comentarios multi-alineados, pero no me gustaría darle la lata a un desarrollador para añadirlos en. Espero que ayude :) – FreeSnow

0

No todos los idiomas interpretados carecen de comentarios de varias líneas. Ruby, por ejemplo, los tiene.

Sospecho que esto es en gran medida la preferencia del diseñador del idioma. Algunos simplemente no ven los comentarios de varias líneas como una característica necesaria. (Muchos editores de código actualmente ofrecen accesos directos que comentan/descomentan grandes bloques de código usando comentarios de una sola línea.)

Además, los comentarios de varias líneas añaden complejidad a un analizador. Tiene que tratar con la posibilidad de comentarios anidados, por ejemplo. ¿Por qué agregar complejidad si no es necesario?

+1

"¿Por qué añadir complejidad si usted no tiene que" .... pero eso es todo el punto de multilínea comentarios, para eliminar la complejidad de tener que lidiar con múltiples comentarios de una sola línea. es mejor que el compilador/intérprete se encargue de él que el desarrollador. – DarinH

+0

No veo los comentarios de líneas múltiples como más simples para nadie. Los lenguajes de scripting a menudo tienen 1 carácter, p. '#' eso significa el comienzo de un comentario en una línea. Así de simple. Simple de implementar en un analizador sintáctico, fácil de recordar para los programadores, simple para que los programadores no lo recuerden. Simple para grep en comentarios u omitir si no grep en los comentarios). No es necesario agregar complejidad con poca ganancia. – nos

+0

@nos, @vocaro: los idiomas con comentarios de líneas múltiples generalmente no permiten anidarlos. Por lo tanto, los comentarios de líneas múltiples son regulares y, por lo tanto, equivalentes a los comentarios de línea única (es decir, terminal en el CFG). No creo que haga que el analizador sea significativamente más complejo. – Xodarap

0

Sospecho que es solo un poco de sesgo de idioma. Los comentarios de líneas múltiples de estilo C tienden a aparecer en los idiomas c-esque, pero la mayoría de los otros idiomas no tienen un equivalente.

En cuanto a los analizadores sintácticos. No hay ninguna razón para pensar que los analizadores no implementan comentarios de varias líneas, aparte de que el diseñador de lang simplemente no quería. La mayoría de los generadores de analizadores sintácticos pueden manejar fácilmente la construcción.

+2

idiomas-estilo-C no tiene comentarios multilínea demasiado sin embargo: OCaml tiene '(* .. *)', Haskell tiene '{- .. -}' ... – Xodarap

+0

suficiente Es cierto, y creo que alguien mencionó que Ruby también lo hace . Pero difícilmente consideraría a OCaml o Haskell como la corriente principal, y nunca escuché que estuvieran incrustados en ningún caso. Pero es muy posible que nunca haya encontrado proyectos que sí lo hagan. – DarinH

0

Hay dos suposiciones erróneas en su pregunta.

La primera suposición equivocada es que "los lenguajes interpretados/de scripting rara vez tienen comentarios de varias líneas". Estás sufriendo de sesgo de confirmación. Hay idiomas compilados con comentarios de una línea (por ejemplo, Fortran, muchos dialectos Lisp) e idiomas interpretados con comentarios de varias líneas (por ejemplo, Perl, Python).

La segunda suposición errónea es que se trata de "uso indebido de otra característica". Los idiomas están mejor diseñados como un todo, no es necesario introducir una característica adicional para los comentarios de líneas múltiples si alguna característica que existe de todos modos hará el truco. Por ejemplo, en Python, existen cadenas multilínea, y una instrucción que consta únicamente de una cadena es una operación no operativa, por lo que las cadenas multilínea hacen comentarios finos.En Perl, una forma de tener comentarios multilínea es a través del Pod, un formato de documentación; los comentarios son un tipo de documentación, por lo que es bastante natural utilizar =pod … =cut para comentarios de varias líneas (líneas múltiples, a través de here documents<<'EOF'; … EOF, son otro método).

+0

Oh, vamos. ¿Se va a sentarse allí con cara seria y me dicen que Larry Wall excluye comentarios multilínea porque entonces [Perl tendría múltiples formas de hacer lo mismo] (http://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it) ? – Xodarap

+0

@ Xodarap: Absolutamente. Siendo un campeón de la [primera virtud] (http://en.wikipedia.org/wiki/Larry_Wall#Virtues_of_a_programmer), Larry Wall no se molestó en agregar una característica adicional si había alguna otra forma de obtenerla. – Gilles

1

No, no hay ninguna razón para lenguajes de script para no admiten comentarios multilínea. JavaScript, Groovy, Lua, PHP, REXX, Smalltalk y Dart admiten comentarios de varias líneas.

Cuestiones relacionadas