Guido Von Rossum
Da un colloquio con Guido Van Rossum , che può essere visto in documento con books.google.com (sottolineatura mia):
The choice of indentation for grouping was not a novel concept in Python; I inherited this from ABC, but it also occurred in occam, an older language. I don't know if the ABC authors got the idea from occam, or invented it independently, or if there was a common ancestor. Of course, I could have chose not to follow ABC’s lead, as I did in other areas (e.g., ABC used uppercase for language keywords and procedure names, an idea I did not copy), but I had come to like the feature quite a bit while using ABC, as it seemed to do away with a certain type of pointless debate common amongst C users at the time, about where to place the curly braces.
Von Rossum è stato strongmente ispirato da ABC , e anche se lui non ha dovuto copiare tutto questo , l'uso di indentazione è stato mantenuto perché potrebbe essere utile per evitare guerre di religione.
I also was well aware that readable code uses indentation voluntarily anyway to indicate grouping, and I had come across subtle bugs in code where the indentation disagreed with the syntactic grouping using curly braces—the programmer and any reviewers had assumed that the indentation matched the grouping and therefore not noticed the bug. Again, a long debugging session taught a valuable lesson.
Rossum anche assistito bug a causa di incoerenza tra raggruppamento e trattino, ea quanto pare però che basandosi su rientro solo per strutturare il codice sarebbe stato più sicuro da errori di programmazione 1 .
Donald E. Knuth & Peter J. Landin
Nell'intervista referenziata, Guido menziona l'idea di Don Knuth di usare l'indentazione. Questo è dettagliato nella Il Knuth rientro Citazione ritrovata , che cita Programmazione strutturata con istruzioni goto . Knuth fa riferimento anche a dei prossimi 700 linguaggi di programmazione di Peter John Landin (vedere la sezione Discussione riguardo all'indentazione). Landin ha progettato ISWIM che sembra la prima lingua con indentazione al posto dei blocchi inizio / fine. Questi articoli riguardano più la possibilità di utilizzare il rientro per strutturare i programmi piuttosto che gli argomenti reali a favore di farlo.
1. Penso che questo sia in effetti un argomento in favore di avere entrambi i costrutti di raggruppamento e la formattazione automatica, al fine di catturare e recuperare da errori di programmazione, che sono tenuti ad accadere. Se rovini il tuo rientro in Python, la persona che esegue il debug del tuo codice dovrà indovinare quale sia corretta:
if (test(x)):
foo(x)
bar(x)
Shall bar
viene sempre chiamato o solo se il test ha esito positivo?
I costrutti di raggruppamento aggiungono un livello di ridondanza che consente di individuare un errore durante l'indentazione automatica del codice. In C, il codice equivalente può essere autoindentato come segue:
if (test(x))
foo(x);
bar(x);
Oops, voglio che bar
sia allo stesso livello di foo
, aggiungiamo le parentesi .