Origini del rientro del codice


31

Sono interessato a scoprire chi ha introdotto il rientro del codice, nonché quando e dove è stato introdotto.

Sembra così fondamentale per la comprensione del codice, ma non era universale. La maggior parte dei codici Fortran e Basic era (è?) Indifferente, e lo stesso vale per Cobol.

Sono abbastanza sicuro di aver visto persino il vecchio codice Lisp scritto come testo continuo, a capo vuoto. Dovevi contare le parentesi nella tua testa solo per analizzarlo, non importava capirlo.

Da dove proviene un così grande miglioramento? Non ho mai visto alcuna menzione della sua origine.

Oltre agli esempi originali del suo utilizzo, sto anche cercando discussioni originali sul rientro.


Non sono sicuro che abbia un unico punto di origine. Inoltre, per alcuni primi codici, lo spazio occupato dagli spazi stessi sarebbe stato un problema.
Jack Aidley,

1
In realtà, FORTRAN era rientrato. In qualche modo. È stato disposto in colonne, il primo è riservato al Cpersonaggio se stavi facendo un commento.
Jonathan Landrum,

Escludendo i casi in cui il rientro viene utilizzato per modificare il significato semantico del codice (ovvero, quando il cambio di rientro lo inserirà in loop o come parte di an if, a la F #), il rientro non è in realtà una funzione del linguaggio, è una funzione IDE ( e un po 'nel compilatore, per ignorare gli spazi iniziali). @ Jack ha ragione: in origine i programmi venivano punzonati sulle carte e il rientro non esisteva letteralmente nella memoria (e forse non dovrebbe neanche ora). Il gioco di ruolo a colonne non usa il rientro (e hai comunque solo ~ 20 caratteri gratuiti per riga), ma l'IDE può "rientrare" nel codice per te.
Clockwork-Muse,

6
Pensando a questo durante la notte, mi viene in mente che, in misura significativa, il rientro probabilmente precede la programmazione. Il rientro era probabilmente usato negli elenchi di istruzioni prima che chiunque scrivesse programmi per computer. Sto cercando di dare la caccia a un esempio.
Jack Aidley,

@ Clockwork-Muse Indentation era una funzione linguistica in COBOL fino a circa 20 anni fa ("A area", "B area", ecc .).
Ross Patterson,

Risposte:


21

Le origini del codice rientrato probabilmente si possono trovare in ALGOL :

ALGOL ha introdotto i blocchi di codice e le coppie begine endper la loro delimitazione ed è stato anche il primo linguaggio a implementare definizioni di funzioni nidificate con ambito lessicale.


Sembra ragionevole, anche se mi chiedo se il progn di Lisp potrebbe non essere arrivato per primo. Ad ogni modo, sono davvero alla ricerca di dettagli sull'introduzione del rientro.
Daniel Mahler,

4
@DanielMahler - Sfoglia il manuale di programmazione LISP 1 e guarda tu stesso. Parte del codice di esempio è rientrato, ma nella migliore delle ipotesi è casuale. La maggior parte del codice di esempio è allineato a sinistra.
David Hammen,

@DavidHammen Deve essere stata una delle peggiori macchine da scrivere ... Avresti pensato che avrebbero appena scritto a mano il tutto.
Panzercrisis,

6
Non credo che il testo citato supporti effettivamente l'uso / l'esistenza del rientro . Questo è il supporto per il codice di sezionamento. Java usa parentesi ( {}) per delimitare i blocchi e puoi definire funzioni nidificate, ma ciò non mi dice nulla sul fatto che il codice sia effettivamente rientrato.
Clockwork-Muse

12

Il codice rientrato deve essere arrivato prima del 1958, poiché era presente - ma non onnipresente - in LISP e ALGOL. Il primo che riesco a individuare è COMTRAN che è stato introdotto nel 1957, anche se riesco a trovare solo il manuale del 1960 (vedi pagina 90). Questa indentazione differisce dalla concezione moderna poiché COMTRAN manca della struttura a blocchi della maggior parte delle lingue da ALGOL, ma penso che dovrebbe comunque contare.

Sospetto che questo non sia in realtà il primo esempio, ma non riesco a individuarlo in precedenza.

aggiornato

Mi è venuto in mente che, in misura significativa, il rientro probabilmente precede la programmazione. Il rientro era probabilmente usato negli elenchi di istruzioni prima che chiunque scrivesse programmi per computer. Purtroppo non riesco a trovare buoni esempi di questo.


-1

Un'espansione sul commento di Ross Patterson: i compilatori COBOL (o almeno i compilatori IBM, che ho usato nella mia carriera di sistemi pre-aperti) hanno imposto il rientro (le aree "A" e "B" che menziona). Se uno qualsiasi degli elementi richiesti in queste aree non fosse posizionato esattamente, la compilazione del codice non verrebbe completata. Tuttavia, oltre a ciò, non è stato richiesto alcun rientro specifico - questo spesso ha portato a delle difficoltà quando si modifica il codice di un altro sviluppatore il cui stile di rientro era diverso dal proprio - l'etichetta suggerirebbe di seguire il modello esistente in quanto preservava la pace tra pari; inoltre, stili diversi nella stessa fonte sarebbero aggravanti da vedere, quasi come Tetris in apparenza.

Sono passati anni da quando ho pensato a COBOL e al suo rientro - grazie per aver posto la domanda e aver fornito un piccolo viaggio nel passato!

marty

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.