L'indentation vous indique où vous êtes, dans les deux styles de syntaxe. Si vous écrivez un programme VB ou un programme C # sur une seule ligne, vous ne pourrez bientôt pas dire où vous vous trouvez dans la syntaxe imbriquée. La machine analyse les phrases de fin de bloc ou les accolades, mais les humains ont besoin d'indentation.
Les phrases de fin de bloc viennent d'une époque de cartes perforées et de bandes de papier, lorsque la programmation était beaucoup moins interactive et visuelle. Ou, vraiment, pas du tout interactif. Il était difficile d'entrer des programmes, et les programmeurs avaient donc besoin de compilateurs pour être très intelligents sur l'analyse syntaxique et la récupération d'erreurs.
À cette époque révolue, le cycle d'édition-compilation-exécution aurait pu impliquer la préparation de cartes perforées avec un perforateur de cartes, puis l'alignement sur une fenêtre de soumission de travail où un commis a pris les cartes perforées et les a soumises à la machine. Plus tard, le programmeur collecterait la sortie (imprimée sur papier) d'une autre fenêtre. Si le programme avait des erreurs, la sortie se composerait uniquement des diagnostics du compilateur. Lorsque les délais d'exécution sont longs, le coût supplémentaire de la frappeend if
au lieu de simplement )
est justifié s'il contribue à améliorer la qualité des diagnostics, car le programmeur doit corriger autant d'erreurs que possible en une seule itération pour réduire le nombre de pertes de temps itérations via la fenêtre de soumission des travaux.
Lorsqu'une accolade fermante est manquante, il est difficile de dire quelle accolade ouverte est celle qui n'est pas fermée. (Le compilateur peut devoir analyser l'indentation pour faire une supposition éclairée.) Si vous supprimez une accolade fermante à l'intérieur d'une fonction, il semble que le reste du fichier fasse partie de cette fonction, ce qui entraîne une multitude de messages d'erreur inutiles. Alors que si vous avez unend function
syntaxe, le compilateur peut déduire où se termine la fonction erronée, récupérer et analyser correctement les fonctions suivantes, vous donnant des diagnostics supplémentaires, le cas échéant, qui sont significatifs.
Lorsque vous travaillez dans un éditeur de texte sensible au code qui indente et colorise automatiquement votre code, sur un écran haute résolution où vous pouvez voir soixante lignes ou plus, les arguments pour ces types de langages maladroits ne s'appliquent plus. Vous pouvez éditer et reconstruire de manière incrémentielle des programmes si rapidement que vous ne pouvez traiter qu'une seule erreur à la fois. De plus, en voyant simultanément de grandes sections du programme à l'écran et en conservant une indentation appropriée, vous pouvez réduire l'apparition de ces types d'erreurs d'imbrication en premier lieu. Et un bon éditeur de texte de programmation signalera même certains types d'erreurs de syntaxe lors de la frappe. De plus, il existe des éditeurs pliants qui réduiront les blocs d'un programme en fonction de sa syntaxe, donnant une vue "schématique" de sa structure.
Lisp a utilisé des parenthèses depuis le début et peut-être, pas par coïncidence, les pirates de Lisp ont lancé la programmation comme une expérience interactive en construisant des systèmes qui acceptaient les programmes en petits morceaux (expressions).
En fait, vous n'avez pas du tout besoin de symboles de fin, comme l'illustre le langage Python. L'identification ne peut être que la structure. Les humains utilisent déjà l'indentation pour masquer la structure du code, même dans les langues où la machine s'appuie sur des symboles ou des phrases de fin.