stringtranslate.com

Resaltado de sintaxis

Resaltado de sintaxis HTML

El resaltado de sintaxis es una característica de los editores de texto que se utiliza para lenguajes de programación , scripting o marcado , como HTML . La característica muestra el texto, especialmente el código fuente , en diferentes colores y fuentes según la categoría de los términos. [1] Esta característica facilita la escritura en un lenguaje estructurado, como un lenguaje de programación o un lenguaje de marcado, ya que tanto las estructuras como los errores de sintaxis son visualmente distintos. Esta característica también se emplea en muchos contextos relacionados con la programación (como manuales de programación), ya sea en forma de libros coloridos o sitios web en línea para facilitar la comprensión de los fragmentos de código para los lectores. El resaltado no afecta el significado del texto en sí; está destinado solo a lectores humanos.

El resaltado de sintaxis es una forma de notación secundaria , ya que los resaltados no forman parte del significado del texto, sino que sirven para reforzarlo. Algunos editores también integran el resaltado de sintaxis con otras funciones, como la corrección ortográfica o el plegado de código , como ayudas a la edición que son externas al lenguaje.

Beneficios prácticos

Resaltando el efecto del delimitador faltante (después de watch='false ) en JavaScript

El resaltado de sintaxis es una estrategia para mejorar la legibilidad y el contexto del texto, especialmente en el caso de código que abarca varias páginas. El lector puede ignorar fácilmente grandes secciones de comentarios o código, según lo que esté buscando. El resaltado de sintaxis también ayuda a los programadores a encontrar errores en su programa. Por ejemplo, la mayoría de los editores resaltan los literales de cadena con un color diferente. En consecuencia, detectar un delimitador faltante es mucho más fácil debido al color contrastante del texto. La coincidencia de llaves es otra característica importante de muchos editores populares. Esto hace que sea sencillo ver si se ha omitido una llave o localizar la coincidencia de la llave en la que se encuentra el cursor resaltando el par en un color diferente.

Un estudio publicado en la conferencia PPIG evaluó los efectos del resaltado de sintaxis en la comprensión de programas cortos y descubrió que la presencia de resaltado de sintaxis reduce significativamente el tiempo que le toma a un programador internalizar la semántica de un programa. [2] Además, los datos recopilados de un rastreador ocular durante el estudio sugirieron que el resaltado de sintaxis permite a los programadores prestar menos atención a los componentes sintácticos estándar, como las palabras clave.

Soporte en editores de texto

gedit admite el resaltado de sintaxis

Algunos editores de texto también pueden exportar el marcado coloreado en un formato adecuado para imprimir o importar a un procesador de textos u otro tipo de software de formato de texto; por ejemplo, como una versión HTML, LaTeX coloreada, PostScript o RTF de su resaltado de sintaxis. Existen varias bibliotecas o "motores" de resaltado de sintaxis que se pueden utilizar en otras aplicaciones, pero que no son programas completos en sí mismos, por ejemplo, la extensión Generic Syntax Highlighter (GeSHi) para PHP .

En el caso de los editores que admiten más de un idioma, el usuario puede especificar normalmente el idioma del texto, como C , LaTeX o HTML , o el editor de texto puede reconocerlo automáticamente en función de la extensión del archivo o escaneando el contenido del archivo. Esta detección automática del idioma presenta problemas potenciales. Por ejemplo, un usuario puede querer editar un documento que contenga:

En estos casos, no está claro qué idioma utilizar y es posible que un documento no esté resaltado o esté resaltado incorrectamente.

Elementos de sintaxis

La mayoría de los editores con resaltado de sintaxis permiten dar distintos colores y estilos de texto a docenas de subelementos léxicos distintos de la sintaxis. Entre ellos se incluyen palabras clave, comentarios, instrucciones de flujo de control, variables y otros elementos. Los programadores suelen personalizar en gran medida sus configuraciones en un intento de mostrar la mayor cantidad posible de información útil sin dificultar la lectura del código.

Llamada decoración de sintaxis , algunos editores también muestran ciertos elementos sintácticos de formas visualmente más agradables, por ejemplo, reemplazando un operador de puntero como ->en el código fuente por un símbolo de flecha real (→), o cambiando pistas de decoración de texto como /itálica/, *negrita* o _subrayado_ en los comentarios del código fuente por una presentación real en cursiva , negrita o subrayado .

Ejemplos

A continuación se muestra una comparación de un fragmento de código C :

A continuación se muestra otro fragmento de código C++ resaltado con sintaxis :

// Crear objetos de ventana "window_count": const auto window_count = int { 10 }; auto windows = std :: array < std :: shared_ptr < Window > , max_window_count > {}; for ( auto i = int { 0 }; i < window_count ; ++ i ) { windows [ i ] = std :: make_shared < Window > (); }                    

En el ejemplo de C++, el editor ha reconocido las palabras clave const , auto, inty for. El comentario del comienzo también está resaltado de una manera específica para distinguirlo del código funcional.

Historia y limitaciones

Las ideas del resaltado de sintaxis se superponen significativamente con las de los editores dirigidos por sintaxis . Uno de los primeros editores de código de este tipo fue Emily, el editor de código de Wilfred Hansen de 1969. [3] [4] Proporcionaba funciones avanzadas de finalización de código independientes del lenguaje y, a diferencia de los editores modernos con resaltado de sintaxis, en realidad hacía imposible crear programas sintácticamente incorrectos.

En 1982, Anita H. Klock y Jan B. Chodak presentaron una patente para el primer sistema de resaltado de sintaxis conocido, [5] que se utilizó en el periférico Entertainment Computer System (ECS) de Intellivision, lanzado en 1983. [6] Resaltaría diferentes elementos de los programas BASIC y se implementó en un intento de hacer más fácil para los principiantes, especialmente los niños, comenzar a escribir código. [7] Más tarde, el Live Parsing Editor ( LEXX ) escrito para el sistema operativo VM para la informatización del Oxford English Dictionary en 1985 fue uno de los primeros en utilizar el resaltado de sintaxis en color. Su capacidad de análisis en vivo permitió que se añadieran analizadores proporcionados por el usuario al editor, para texto, programas, archivos de datos, etc. [8] En microcomputadoras , MacPascal 1.0 (10 de octubre de 1985) reconoció la sintaxis de Pascal tal como se escribía y utilizó cambios de fuente (por ejemplo, negrita para palabras clave) para resaltar la sintaxis en la Macintosh compacta monocromática y sangró automáticamente el código para que coincidiera con su estructura. [9]

Algunos editores de texto y herramientas de formato de código realizan el resaltado de sintaxis utilizando heurísticas de coincidencia de patrones (por ejemplo, expresiones regulares ) en lugar de implementar un analizador para cada lenguaje posible. [10] Esto puede dar como resultado que un sistema de representación de texto muestre un resaltado de sintaxis algo inexacto y, en algunos casos, funcione lentamente. Una solución utilizada por los editores de texto para superar este problema no es siempre analizar todo el archivo, sino solo el área visible, a veces escaneando hacia atrás en el texto hasta un número limitado de líneas para "sincronizar".

Por otro lado, el editor a menudo muestra el código durante su creación, cuando está incompleto o es incorrecto, y los analizadores estrictos (como los que se usan en los compiladores) fallarían al analizar el código la mayoría de las veces.

Algunos IDE modernos específicos del lenguaje (a diferencia de los editores de texto) realizan un análisis completo del lenguaje, lo que da como resultado una comprensión muy precisa del código. En 2009, David Nolden [11] denominó "resaltado semántico" a una extensión del resaltado de sintaxis para el IDE de código abierto C++ KDevelop . Por ejemplo, el resaltado semántico puede otorgar a las variables locales colores únicos y distintivos para mejorar la comprensión del código. En 2014, la idea de las variables locales coloreadas se popularizó aún más debido a una publicación de blog de Evan Brooks [12] y , después de eso, la idea se transfirió a otros IDE populares como Visual Studio [13] , Xcode [14] y otros.

El color en una interfaz de usuario es menos útil si el usuario tiene cierto grado de daltonismo .

Véase también

Referencias

  1. ^ Jim D'Anjou; Sherry Shavor; Scott Fairbrother; Dan Kehn; John Kellerman; Pat McCarthy (2005). Guía del desarrollador de Java para Eclipse (2.ª edición). Boston: Addison-Wesley. ISBN 978-0-321-30502-2.
  2. ^ Sarkar, Advait (2015). "El impacto de la coloración sintáctica en la comprensión de programas". Actas de la 26.ª Conferencia Anual del Grupo de Interés en Psicología de la Programación : 49–58. Archivado desde el original el 24 de septiembre de 2015. Consultado el 27 de septiembre de 2023 .
  3. ^ Hansen, Wilfred J. (1971). "Principios de ingeniería de usuarios para sistemas interactivos". Actas de la Conferencia Conjunta de Informática de Otoño FJCC 39 . AFIPS. págs. 5623–532.
  4. ^ Hansen, Wilfred. "Emily: una editora de texto estructurado" . Consultado el 17 de junio de 2013 .
  5. ^ Método y aparato de corrección de errores de sintaxis, 29 de octubre de 1982 , consultado el 12 de abril de 2018
  6. ^ Mattel Intellivision: Guía del propietario del módulo de computadora Intellivision (1983) (Mattel) (EE. UU.). 1983.
  7. ^ "Sistema de videojuegos clásico Intellivision / Sistema informático de entretenimiento". www.intellivisionlives.com . Archivado desde el original el 17 de julio de 2018. Consultado el 12 de abril de 2018 .
  8. ^ Cowlishaw, MF (1987). "LEXX – Un editor estructurado programable" (PDF) . IBM Journal of Research and Development, vol. 31, n.º 1, número de pedido de reimpresión de IBM G322-0151 . IBM.
  9. ^ Allen, Dan (10 de octubre de 2011). "Un trío de recuerdos históricos". mpw-dev (Lista de correo). Archivado desde el original el 21 de agosto de 2017. Consultado el 12 de septiembre de 2019 .
  10. ^ "Archivos de definición del lenguaje KEDIT". Kedit . Mansfield Software Group, Inc. 2012 . Consultado el 7 de abril de 2016 .
  11. ^ "Entrada de blog de 2009 sobre el resaltado semántico introducido en KDevelop por David Nolden". 8 de enero de 2009.
  12. ^ "Entrada de blog de 2014 sobre resaltado semántico por Evan Brooks". 17 de abril de 2017.
  13. ^ "Artículo de Visual Studio Magazine sobre resaltado semántico".
  14. ^ "Página de Github de un complemento que implementa el resaltado semántico para Xcode". GitHub . 14 de septiembre de 2022.