La sangría te dice dónde estás, en ambos estilos de sintaxis. Si escribe un programa VB o un programa C # en una sola línea, pronto no podrá saber en qué parte de la sintaxis anidada se encuentra. La máquina analiza las frases finales de bloque o llaves, pero los humanos necesitan sangrado.
Las frases finales de bloque provienen de una era de tarjetas perforadas y cinta de papel, cuando la programación era mucho menos interactiva y visual. O, realmente, no es interactivo en absoluto. Era difícil ingresar a los programas, por lo que los programadores necesitaban compiladores para ser muy inteligentes sobre el análisis de sintaxis y la recuperación de errores.
En esa época pasada, el ciclo de edición-compilación-ejecución podría haber consistido en preparar tarjetas perforadas con un perforador de tarjetas, y luego alinearse en una ventana de envío de trabajo donde un empleado tomó las tarjetas perforadas y las envió a la máquina. Más tarde, el programador recolectaría la salida (impresa en papel) de otra ventana. Si el programa tuviera errores, la salida consistiría solo en el diagnóstico del compilador. Cuando los tiempos de respuesta son largos, el costo adicional de escribir en end if
lugar de solo )
se justifica si ayuda a mejorar la calidad de los diagnósticos, porque el programador necesita corregir tantos errores como sea posible en una sola iteración para reducir la cantidad de tiempo perdido iteraciones a través de la ventana de envío de trabajos.
Cuando falta una llave de cierre, es difícil saber qué llave abierta es la que no está cerrada. (Es posible que el compilador tenga que analizar la sangría para hacer una suposición informada). Si elimina una llave de cierre dentro de una función, parece que todo el resto del archivo es parte de esa función, lo que resulta en una ráfaga de mensajes de error inútiles. Mientras que si tiene una end function
sintaxis, el compilador puede deducir dónde termina la función errónea, recuperar y analizar las funciones subsiguientes correctamente, proporcionándole diagnósticos adicionales, si los hay, que sean significativos.
Cuando trabajas en un editor de texto con reconocimiento de código que sangra y colorea automáticamente tu código, en una pantalla de alta resolución donde puedes ver sesenta o más líneas, los argumentos para ese tipo de lenguajes torpes ya no se aplican. Puede editar y reconstruir progresivamente programas tan rápido que puede lidiar con un error a la vez. Además, al ver grandes secciones del programa simultáneamente en la pantalla y mantener una sangría adecuada, puede reducir la aparición de ese tipo de errores de anidación en primer lugar. Y un buen editor de texto de programación incluso marcará algunos tipos de errores de sintaxis mientras escribe. Además, hay editores plegables que colapsarán los bloques de un programa en función de su sintaxis, dando una vista "esquemática" de su estructura.
Lisp usó paréntesis desde el principio y quizás, no por casualidad, los piratas informáticos de Lisp fueron pioneros en la programación como una experiencia interactiva al construir sistemas que aceptaban programas en pequeños fragmentos (expresiones).
De hecho, no necesita símbolos finales, como lo ilustra el lenguaje Python. La ideación puede ser simplemente la estructura. Los humanos ya usan sangría para asimilar la estructura del código, incluso en idiomas en los que la máquina se basa en símbolos o frases finales.