Origines de l'indentation du code

31

Je souhaite savoir qui a introduit l'indentation de code, ainsi que quand et où il a été introduit.

Cela semble si critique pour la compréhension du code, mais ce n'était pas universel. La plupart des codes Fortran et Basic étaient (n'est?) Pas indentés, et il en va de même pour Cobol.

Je suis quasiment sûr d'avoir vu du vieux code Lisp écrit sous forme de texte continu, avec des lignes. Vous deviez compter des parenthèses dans votre tête juste pour l'analyser, sans parler de le comprendre.

D'où vient donc une telle amélioration? Je n'ai jamais vu aucune mention de son origine.

Outre des exemples originaux de son utilisation, je recherche également des discussions originales sur l'indentation.

Daniel Mahler
la source
Je ne suis pas sûr qu'il ait un seul point d'origine. De plus, pour certains premiers codes, l'espace occupé par les espaces eux-mêmes aurait été un problème.
Jack Aidley
1
En fait, FORTRAN était en retrait. En quelque sorte. Il était disposé en colonnes, la première étant réservée au Cpersonnage si vous faisiez un commentaire.
Jonathan Landrum
À l'exception des cas où l'indentation est utilisée pour changer la signification sémantique du code (c'est-à-dire, lorsque la modification de l'indentation le mettra en boucles ou dans le cadre d'un if, à la F #), l'indentation n'est pas vraiment une fonctionnalité de langage, c'est une fonctionnalité IDE ( et un peu dans le compilateur, pour ignorer les espaces de tête). @ Jack a raison - à l'origine, les programmes étaient perforés sur des cartes, et l'indentation n'existait littéralement pas dans le stockage (et ne devrait peut-être pas l'être maintenant non plus). Le RPG en colonnes n'utilise pas l'indentation (et vous n'avez de toute façon que ~ 20 caractères libres par ligne), mais l'EDI peut "soft" indenter le code pour vous.
Clockwork-Muse
6
En y réfléchissant du jour au lendemain, il me semble que, dans une large mesure, l'indentation est antérieure à la programmation. L'indentation était probablement utilisée dans les listes d'instructions avant que quiconque n'écrive des programmes informatiques. J'essaie de traquer un exemple.
Jack Aidley
@ Clockwork-Muse Indentation était une fonctionnalité linguistique dans COBOL jusqu'à il y a environ 20 ans ("zone A", "zone B", etc. ).
Ross Patterson

Réponses:

21

Les origines du code en retrait se trouvent probablement dans ALGOL :

ALGOL a introduit des blocs de code et les paires beginet endpour les délimiter et il a également été le premier langage à implémenter des définitions de fonctions imbriquées à portée lexicale.

Greg Hewgill
la source
Cela semble raisonnable, bien que je me demande si le progn de Lisp n'est peut-être pas venu en premier. Quoi qu'il en soit, je suis vraiment à la recherche de détails sur l'introduction de l'indentation.
Daniel Mahler
4
@DanielMahler - Parcourez le manuel de programmation LISP 1 et voyez par vous-même. Certains des exemples de code sont en retrait, mais au mieux, ils sont aléatoires. La plupart de l'exemple de code est aligné à gauche.
David Hammen
@DavidHammen Ce devait être l'une des pires machines à écrire ... Vous auriez pensé qu'ils venaient d'écrire le tout à la main.
Panzercrisis
6
Je ne pense pas que le texte cité supporte réellement l'utilisation / l'existence de l' indentation . C'est la prise en charge du code de sectionnement. Java utilise des crochets ( {}) pour délimiter les blocs, et vous pouvez définir des fonctions imbriquées, mais cela ne me dit rien si le code est réellement en retrait.
Clockwork-Muse
12

Le code en retrait doit être arrivé avant 1958, car il était présent - mais pas omniprésent - dans LISP et ALGOL. Le plus ancien que je peux localiser est COMTRAN qui a été introduit en 1957, bien que je ne trouve que le manuel de 1960 uniquement (voir page 90ish). Cette indentation diffère de la conception moderne car COMTRAN n'a pas la structure de blocs de la plupart des langages depuis ALGOL mais je pense qu'elle devrait quand même compter.

Je soupçonne que ce n'est pas réellement le premier exemple mais je ne peux pas en trouver plus tôt.

Mis à jour

Il m'est venu à l'esprit que, dans une large mesure, l'indentation est probablement antérieure à la programmation. L'indentation était probablement utilisée dans les listes d'instructions avant que quiconque n'écrive des programmes informatiques. Malheureusement, je ne trouve aucun bon exemple de cela.

Jack Aidley
la source
-1

Une extension du commentaire de Ross Patterson - les compilateurs COBOL (ou du moins les compilateurs IBM, que j'ai utilisés dans ma carrière de systèmes pré-ouverts) ont imposé une indentation (les zones "A" et "B" qu'il mentionne). Si l'un des éléments qui devaient se trouver dans ces zones n'était pas placé exactement, votre code échouerait à la compilation. Cependant, au-delà de cela, aucune indentation spécifique n'était requise - cela entraînait souvent une saisie lors de la modification du code d'un autre développeur dont le style d'indentation était différent du vôtre - l'étiquette suggérerait que vous suiviez le modèle existant car cela préservait la paix entre pairs; en outre, des styles différents dans la même source seraient aggravants à voir, presque en forme de Tetris.

Cela fait des années que je n'ai pas pensé à COBOL et à son indentation - merci d'avoir posé la question et d'avoir fait un petit voyage dans le passé!

Marty

Marty Power
la source