Il rientro ti dice dove sei, in entrambi gli stili di sintassi. Se scrivi un programma VB o un programma C # su una sola riga, presto non sarai in grado di dire dove ti trovi nella sintassi nidificata. La macchina analizza le frasi finali del blocco o le parentesi graffe, ma gli umani hanno bisogno di rientranze.
Le frasi di fine blocco provengono da un'era di schede perforate e nastro di carta, quando la programmazione era molto meno interattiva e visiva. O, davvero, per nulla interattivo. È stato difficile accedere ai programmi, quindi i programmatori avevano bisogno di compilatori per essere molto intelligenti nell'analisi della sintassi e nel recupero degli errori.
In quell'epoca passata, il ciclo di esecuzione della compilazione-compilazione potrebbe aver comportato la preparazione di schede perforate con un perforatore di carte, e quindi l'allineamento a una finestra di presentazione del lavoro in cui un impiegato prendeva le schede perforate e le inviava alla macchina. Più tardi, il programmatore avrebbe raccolto l'output (stampato su carta) da un'altra finestra. Se il programma avesse errori, l'output consisterebbe solo nella diagnostica del compilatore. Quando i tempi di risposta sono lunghi, il costo aggiuntivo della digitazione end if
anziché solo )
è giustificato se aiuta a migliorare la qualità della diagnostica, poiché il programmatore deve correggere il maggior numero possibile di errori in un'unica iterazione per ridurre il numero di perdite di tempo iterazioni attraverso la finestra di invio del lavoro.
Quando manca una parentesi graffa di chiusura, è difficile dire quale parentesi aperta è quella che non è chiusa. (Il compilatore potrebbe dover analizzare il rientro per fare un'ipotesi istruita.) Se si elimina una parentesi graffa di chiusura all'interno di una funzione, sembra che l'intero resto del file faccia parte di quella funzione, risultando in una raffica di messaggi di errore inutili. Considerando che se si dispone di una end function
sintassi, il compilatore può dedurre dove termina la funzione errata, ripristinare e analizzare correttamente le funzioni successive, fornendo eventuali diagnosi aggiuntive che sono significative.
Quando lavori in un editor di testo sensibile al codice che rientra e colora automaticamente il tuo codice, su uno schermo ad alta risoluzione in cui puoi vedere sessanta o più righe, gli argomenti per quei tipi di linguaggi goffi non si applicano più. Puoi modificare e ricostruire in modo incrementale i programmi così velocemente da poter gestire solo un errore alla volta. Inoltre, vedendo grandi sezioni del programma contemporaneamente sullo schermo e mantenendo il rientro corretto, è possibile ridurre in primo luogo il verificarsi di questi tipi di errori di annidamento. E un buon editor di testi di programmazione segnalerà anche alcuni tipi di errori di sintassi durante la digitazione. Inoltre, ci sono editor pieghevoli che faranno crollare i blocchi di un programma in base alla sua sintassi, dando una visione "simile a uno schema" della sua struttura.
Lisp ha usato le parentesi sin dall'inizio e forse, non a caso, gli hacker di Lisp sono stati i pionieri della programmazione come esperienza interattiva costruendo sistemi che accettavano programmi in piccoli pezzi (espressioni).
In effetti, non hai bisogno di simboli finali, come dimostra il linguaggio Python. L'identificazione può essere solo la struttura. Gli umani usano già il rientro per individuare la struttura del codice anche nelle lingue in cui la macchina si basa sulla fine di simboli o frasi.