Orígenes de la sangría de código

31

Estoy interesado en averiguar quién introdujo la sangría de código, así como cuándo y dónde se introdujo.

Parece tan crítico para la comprensión del código, pero no fue universal. La mayoría de los códigos Fortran y Basic no tenían (¿es?), Y lo mismo ocurre con Cobol.

Estoy bastante seguro de que incluso he visto el viejo código Lisp escrito como texto continuo, en línea. Tenías que contar los corchetes en tu cabeza solo para analizarlo, no importaba entenderlo.

Entonces, ¿de dónde vino una mejora tan grande? Nunca he visto ninguna mención de su origen.

Además de los ejemplos originales de su uso, también estoy buscando discusiones originales sobre la sangría.

Daniel Mahler
fuente
No estoy seguro de que tenga un único punto de origen. Además, para algunos códigos iniciales, el espacio ocupado por los espacios en sí habría sido un problema.
Jack Aidley
1
En realidad, FORTRAN estaba sangrado. En especie. Se presentaba en columnas, la primera se reservaba para el Cpersonaje si estaba haciendo un comentario.
Jonathan Landrum
Salvo los casos en los que la sangría se usa para cambiar el significado semántico del código (es decir, el cambio de sangría lo colocará en bucles o como parte de un if, a la F #), la sangría no es realmente una función de lenguaje, es una función IDE ( y un poco en el compilador, para ignorar los espacios iniciales). @ Jack tiene razón: originalmente los programas se perforaban en las tarjetas, y la sangría literalmente no existía en el almacenamiento (y quizás tampoco debería hacerlo ahora). El RPG en columnas no usa sangría (y de todos modos solo tiene ~ 20 caracteres libres por línea), pero el IDE puede "sangrar" el código por usted.
Clockwork-Muse
66
Pensando en esto de la noche a la mañana, se me ocurre que, en un grado significativo, la sangría probablemente sea anterior a la programación. La sangría probablemente se usó en las listas de instrucciones antes de que alguien escribiera programas de computadora. Estoy tratando de buscar un ejemplo.
Jack Aidley
@ Clockwork-Muse Indentación era una característica del lenguaje en COBOL hasta hace unos 20 años ("área A", "área B", etc. ).
Ross Patterson

Respuestas:

21

Los orígenes del código sangrado probablemente se pueden encontrar en ALGOL :

ALGOL introdujo bloques de código y los pares beginy endpara delimitarlos y también fue el primer lenguaje que implementó definiciones de funciones anidadas con alcance léxico.

Greg Hewgill
fuente
Eso suena razonable, aunque me pregunto si el progn de Lisp puede no haber sido lo primero. De cualquier manera, realmente busco detalles sobre la introducción de la sangría.
Daniel Mahler
44
@DanielMahler: explore el manual de programación LISP 1 y compruébelo usted mismo. Algunos de los códigos de ejemplo tienen sangría, pero en el mejor de los casos es casual. La mayor parte del código de ejemplo está al ras de la izquierda.
David Hammen
@DavidHammen Esa debe haber sido una de las peores máquinas de escribir ... Hubieras pensado que simplemente escribieron todo a mano.
Panzercrisis
66
No creo que el texto citado realmente respalde el uso / existencia de sangría . Eso es soporte para seccionar código. Java usa corchetes ( {}) para delimitar bloques, y puede definir funciones anidadas, pero eso no me dice nada acerca de si el código está realmente sangrado.
Clockwork-Muse
12

El código sangrado debe haber llegado antes de 1958, ya que estaba presente, pero no omnipresente, en LISP y ALGOL. Lo primero que puedo encontrar es COMTRAN, que se introdujo en 1957, aunque solo puedo encontrar el manual de 1960 (consulte la página 90). Esta sangría difiere de la concepción moderna ya que COMTRAN carece de la estructura de bloques de la mayoría de los idiomas desde ALGOL, pero creo que aún debería contar.

Sospecho que este no es realmente el primer ejemplo, pero no puedo encontrar ninguno antes.

Actualizado

Se me ha ocurrido que, en un grado significativo, la sangría probablemente sea anterior a la programación. La sangría probablemente se usó en las listas de instrucciones antes de que alguien escribiera programas de computadora. Lamentablemente no puedo encontrar ningún buen ejemplo de esto.

Jack Aidley
fuente
-1

Una expansión en el comentario de Ross Patterson: los compiladores COBOL (o al menos los compiladores de IBM, que utilicé en mi carrera de sistemas pre-abiertos) forzaron la sangría (las áreas "A" y "B" que menciona). Si alguno de los elementos que debían estar en estas áreas no se colocaran exactamente, su código fallaría en la compilación. Sin embargo, más allá de eso, no se requirió una sangría específica (esto a menudo condujo a la manipulación al modificar el código de otro desarrollador cuyo estilo de sangría era diferente al suyo), la etiqueta sugeriría que siga el patrón existente ya que preserva la paz entre los pares; Además, los diferentes estilos en la misma fuente serían agravantes para la vista, casi en apariencia Tetris.

Han pasado años desde que pensé en COBOL y su sangría, ¡gracias por hacer la pregunta y proporcionar un pequeño viaje al pasado!

Marty

Marty Power
fuente