Articulo de referencia

Impresión bonita

El formato legible (o prettyprinting ) consiste en aplicar diversas convenciones de formato estilístico a archivos de texto , como código fuente , marcado y contenido similar. E...

El formato legible (o prettyprinting ) consiste en aplicar diversas convenciones de formato estilístico a archivos de texto , como código fuente , marcado y contenido similar. Estas convenciones de formato pueden implicar el uso de un estilo de sangría , el uso de diferentes colores y tipografías para resaltar elementos sintácticos del código fuente o el ajuste del tamaño, para facilitar la lectura y comprensión del contenido. A los formateadores de código fuente se les suele llamar formateadores o embellecedores de código .

Matemáticas con impresión atractiva

Una expresión matemática tipográfica

El formato legible generalmente se refiere a mostrar expresiones matemáticas de manera similar a como se escribirían tipográficamente de forma profesional. Por ejemplo, en sistemas de álgebra computacional como Maxima o Mathematica, el sistema puede escribir una salida como "x² + 3 * x" como "incógnita2+3incógnita{\displaystyle x^{2}+3x}". Algunas calculadoras gráficas pueden realizar impresión con formato. Dichas calculadoras incluyen la serie Casio 9860 , la serie HP-49/50 y HP Prime , TI-84 Plus , TI-89 , TI-Nspire y la TI-83 Plus con el complemento PrettyPt [ 1 ] . De manera similar, la TI-84 Plus con el complemento PrettPt o con sistemas operativos habilitados para "MathPrint". Además, varias calculadoras científicas más nuevas están equipadas con pantallas de matriz de puntos capaces de imprimir con formato, como la serie Casio FX-ES (Natural Display), la serie Sharp EL-W (WriteView), HP SmartCalc 300s , TI-30XB y Numworks .

Muchos programas de formato de texto también pueden componer fórmulas matemáticas: TeX se desarrolló específicamente para la composición tipográfica matemática de alta calidad .

Formato legible para marcado y código basado en etiquetas

Código fuente HTML, formateado para mostrar mejor las relaciones jerárquicas de sus elementos (llamados etiquetas).

El formato legible en los lenguajes de marcado se asocia generalmente con la indentación de etiquetas y cadenas de texto para determinar visualmente la jerarquía y el anidamiento. Si bien las estructuras sintácticas de los lenguajes basados ​​en etiquetas no varían significativamente, la indentación puede variar considerablemente según la interpretación del lenguaje de marcado o los datos que describe.

En MathML , los caracteres de espacio en blanco no reflejan datos, significado o sintaxis más allá de lo requerido por la sintaxis XML . En HTML , los caracteres de espacio en blanco entre etiquetas se consideran texto y se analizan como nodos de texto en el resultado analizado. [ 2 ] Si bien la indentación puede aplicarse generosamente a un documento MathML, se debe tener suficiente cuidado adicional al formatear un documento HTML para garantizar que no se creen o destruyan nodos de texto adicionales en general cerca del contenido o de los elementos de etiqueta que reflejan el contenido. Esta diferencia en complejidad no es trivial desde la perspectiva de una operación de formateo automatizada donde no se necesitan reglas especiales o casos límite, como en el ejemplo más simple de MathML. El ejemplo de HTML puede requerir una serie de algoritmos progresivos interrelacionados para tener en cuenta varios patrones de elementos de etiqueta y contenido que se ajusten a un estilo uniforme y sea consistente en su aplicación en varias instancias, como lo demuestra el componente de aplicación markup.ts [ 3 ] utilizado para embellecer HTML, XML y tecnologías relacionadas para la herramienta Pretty Diff .

Formato del código fuente del programa

A los programadores se les enseña a seguir un estilo de formato al escribir el código fuente de un programa , para que el código sea más fácil de leer y comprender. Los estilos varían. Abarcan aspectos como la indentación , los espacios en blanco alrededor de las palabras clave y los signos de puntuación, y la posición de las llaves .

Existen herramientas para automatizar el formateo de código. Se las conoce como formateadores, correctores de formato o indentadores de código . Estas herramientas convierten el código fuente de un estilo de formato a otro. Su implementación es relativamente sencilla, ya que la sintaxis de los lenguajes de programación es inequívoca. La herramienta lee el código fuente, reconoce sus estructuras componentes (como sentencias de asignación, condicionales y bucles ; véase el flujo de control ) y, a continuación, muestra el código fuente formateado según el estilo especificado en un archivo de configuración.

Algunos formateadores de código son aplicaciones independientes. Otros están integrados en editores de texto y entornos de desarrollo integrados . Por ejemplo, el editor Emacs tiene ajustes para especificar un lenguaje de programación ("Modo de lenguaje Emacs") y para indentar bloques de código en consecuencia. [ 4 ]

HTML

Lisp formateador de impresora

Un ejemplo temprano de formateo de código fue el programa "GRINDEF" ( es decir , "función de molienda") de Bill Gosper ( c. 1967), que utilizaba búsqueda combinatoria con poda para formatear programas LISP . Las primeras versiones operaban sobre la forma ejecutable (estructura de lista) del programa Lisp y no tenían en cuenta los significados especiales de varias funciones. Las versiones posteriores tenían convenciones de lectura especiales para incorporar comentarios no ejecutables y también para preservar las macros de lectura en su forma no expandida. También permitían convenciones de indentación especiales para funciones especiales como . [ 5 ] [ 6 ] El término "grind" se usaba en algunos círculos de Lisp como sinónimo de formateo de código. [ 7 ]if

Reglas de estilo del proyecto

Muchos proyectos de software libre han establecido reglas para la estructura del código. Las más conocidas son el formato GNU [ 8 ] y el estilo BSD [ 9 ] . La principal diferencia entre ambos radica en la posición de las llaves: en el estilo GNU, cada llave se coloca en una línea independiente, y los pares correspondientes (llave de apertura y llave de cierre) se indentan al mismo nivel. El estilo BSD coloca la llave de apertura al final de la línea de código y permite que la llave de cierre vaya seguida de la palabra clave `else` . El tamaño de la indentación y la ubicación de los espacios en blanco también difieren.

Ejemplo de código para formatear y embellecer

El siguiente ejemplo muestra algunas estructuras típicas de C y cómo las distintas reglas de indentación les dan formato. Sin ningún formato, se ve así:

int foo ( int k ){ if ( k < 1 || k > 2 ){ printf ( "fuera de rango \n " ); printf ( "esta función requiere un valor de 1 o 2 \n " );} else { printf ( "cambiando \n " ); switch ( k ){ case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ;}}}

El programa indent de GNU produce la siguiente salida cuando se le pide que aplique la indentación de acuerdo con las reglas de GNU :

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "Fuera de rango \n " ); printf ( "Esta función requiere un valor de 1 o 2 \n " ); } else { printf ( "Cambiando \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }

Produce esta salida al formatear según las reglas de BSD:

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "Fuera de rango \n " ); printf ( "Esta función requiere un valor de 1 o 2 \n " ); } else { printf ( "Cambiando \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }

Véase también

Conceptos relacionados

  • La función Elastic Tabstop , presente en muchos editores de código fuente, detecta y mantiene las sangrías alineadas.
  • La minificación , que hace que el código fuente sea compacto, aunque resulte más difícil de entender para los humanos.
  • Ofuscación , hacer que el código fuente sea deliberadamente muy difícil de entender para los humanos, especialmente a medida que se vuelve más complejo.

Servicios públicos

  • enscript , un convertidor de texto a PostScript, con funciones de formato legible.

Referencias

  1. "PrettyPrint - ticalc.org" . www.ticalc.org . Consultado el 13 de abril de 2022 .
  2. Baron, L. David. "Espacio en blanco en el DOM" . Mozilla Developer Network . Consultado el 27 de agosto de 2012 .
  3. marcado.ts
  4. Stallman, Richard M. "Sangría para programas" . Manual de GNU Emacs . Free Software Foundation . Consultado el 20 de octubre de 2011 .
  5. Ira Goldstein, "Pretty Printing : Converting List to Linear Structure", Artificial Intelligence Memo 279, Instituto Tecnológico de Massachusetts, febrero de 1973. Texto completo
  6. Richard C. Waters, "Using the new common Lisp pretty printer", ACM SIGPLAN Lisp Pointers 5 :2:27-34, abril-junio de 1992. Texto completo
  7. Archivo de jerga , sv grind
  8. Estilo GNU
  9. Estilo BSD
  • Algoritmo 268: Editor del lenguaje de referencia ALGOL 60 William M. McKeeman : Commun. ACM 8(11): 667-668 (1965)
  • lgrind , Red integral de archivos TEX
  • NEATER2: un reformateador de declaraciones fuente PL/I Kenneth Conrow, Ronald G. Smith : Commun. ACM 13(11): 669-675 (1970)
  • SOAP - Simplificar programas Algol oscuros R. S. Scowen, D. Allin, AL Hillman, M. Shimell : Informe de la Unidad Central de Computación del Laboratorio Nacional de Física CCU6 (abril de 1969) Incluye listado formateado del código fuente SOAP.
    • SOAP - Un programa que documenta y edita programas ALGOL 60. RS Scowen, D. Allin, AL Hillman, M. Shimell : Comput. J. 14(2): 133-135 (1971)
    • Código fuente SOAP original del KDF9
  • Guía del usuario de SOAP. (para Edinburgh IMP ) Peter Salkeld Robertson (1976)
    • Código fuente SOAP en/para IMP9
  • Soap80: Un programa para formatear programas fuente IMP80. JM Murison, Centro Regional de Computación de Edimburgo (1980)
    • Código fuente SOAP en/para IMP80 E. N. Gregory, Universidad de Kent en Canterbury; Peter D. Stephens, Centro Regional de Computación de Edimburgo
  • PRETTYP.PAS Impresor de formato Pascal antiguo. Ledgard et al.
  • Pascal con estilo (1979)
  • estilo(9) Directrices de estilo de FreeBSD
  • vgrind , El proyecto Heirloom [Unix]
  • Formato del código fuente según las directrices de estilo GNU