Ursprünge der Codeeinrückung

31

Ich bin daran interessiert herauszufinden, wer den Code-Einzug eingeführt hat und wann und wo er eingeführt wurde.

Das Codeverständnis scheint so kritisch zu sein, aber es war nicht universell. Die meisten Fortran- und Basic-Codes waren (sind?) Nicht eingebunden, und das Gleiche gilt für Cobol.

Ich bin mir ziemlich sicher, dass ich sogar alten Lisp-Code als fortlaufenden Zeilenumbruch gesehen habe. Sie mussten Klammern in Ihrem Kopf zählen, nur um es zu analysieren, egal, es zu verstehen.

Woher kam also eine so große Verbesserung? Ich habe nie eine Erwähnung seiner Herkunft gesehen.

Neben originellen Beispielen für die Verwendung suche ich auch originelle Diskussionen über Einrückungen.

Daniel Mahler
quelle
Ich bin nicht sicher, ob es einen einzigen Ausgangspunkt gibt. Außerdem wäre für einige frühe Codes der von den Leerzeichen selbst belegte Speicherplatz ein Problem gewesen.
Jack Aidley
1
Eigentlich Fortran wurde eingezogen. In gewisser Weise. Es war in Spalten angeordnet, wobei die erste für den CCharakter reserviert war , wenn Sie einen Kommentar machten.
Jonathan Landrum
Abgesehen von Fällen, in denen Einrückungen verwendet werden, um die semantische Bedeutung von Code zu ändern (d. H., Wenn Einrückungen in Schleifen oder als Teil von ifa la F # geändert werden ), handelt es sich bei Einrückungen nicht wirklich um Sprachfunktionen, sondern um IDE- Funktionen ( und ein bisschen im Compiler, um führende Leerzeichen zu ignorieren). @Jacks Recht - ursprünglich wurden Programme auf Karten gestanzt, und Einrückungen waren im Speicher buchstäblich nicht vorhanden (und sollten es jetzt vielleicht auch nicht sein). Columnar RPG verwendet keine Einrückung (und Sie haben sowieso nur ~ 20 Zeichen pro Zeile frei), aber die IDE kann den Code für Sie "weich" einrücken.
Clockwork-Muse
6
Wenn ich über Nacht darüber nachdenke, fällt mir ein, dass Einrückungen in bedeutendem Maße wahrscheinlich älter sind als Programmierungen. Einrückungen wurden wahrscheinlich in Anweisungslisten verwendet, bevor Computerprogramme geschrieben wurden. Ich versuche ein Beispiel zu finden.
Jack Aidley
@ Clockwork-Muse Indentation war bis vor etwa 20 Jahren ein Sprachfeature in COBOL ("A-Bereich", "B-Bereich" usw. ).
Ross Patterson

Antworten:

21

Die Ursprünge des eingerückten Codes sind wahrscheinlich in ALGOL zu finden :

ALGOL führte Codeblöcke und die Paare beginund endzur Abgrenzung ein und war auch die erste Sprache, die verschachtelte Funktionsdefinitionen mit lexikalischem Geltungsbereich implementierte.

Greg Hewgill
quelle
Das klingt vernünftig, obwohl ich mich frage, ob Lisps Prognose möglicherweise nicht an erster Stelle steht. In jedem Fall bin ich wirklich hinter den Einzelheiten der Einführung von Einrückungen her.
Daniel Mahler
4
@DanielMahler - Durchsuchen Sie das Programmierhandbuch für LISP 1 und überzeugen Sie sich selbst. Ein Teil des Beispielcodes ist eingerückt, aber bestenfalls willkürlich. Der größte Teil des Beispielcodes ist linksbündig.
David Hammen
@DavidHammen Das muss eine der schlimmsten Schreibmaschinen gewesen sein.
Panzercrisis
6
Ich denke nicht, dass der zitierte Text tatsächlich die Verwendung / Existenz von Einrückungen unterstützt . Das ist die Unterstützung für das Aufteilen von Code. Java verwendet eckige Klammern ( {}), um Blöcke abzugrenzen, und Sie können verschachtelte Funktionen definieren, aber das sagt mir nichts darüber aus, ob der Code tatsächlich eingerückt ist.
Clockwork-Muse
12

Der eingerückte Code muss vor 1958 eingetroffen sein, da er in LISP und ALGOL vorhanden - aber nicht allgegenwärtig - war. Das früheste, das ich finden kann, ist COMTRAN, das 1957 eingeführt wurde, obwohl ich nur das Handbuch von 1960 finden kann (siehe Seite 90). Diese Einrückung unterscheidet sich von der modernen Konzeption, da COMTRAN die Blockstruktur der meisten Sprachen seit ALGOL fehlt, aber ich denke, es sollte immer noch zählen.

Ich vermute, dass dies nicht das erste Beispiel ist, aber ich kann es nicht früher finden.

Aktualisiert

Es ist mir in den Sinn gekommen, dass Einrückungen wahrscheinlich vor dem Programmieren liegen. Einrückungen wurden wahrscheinlich in Anweisungslisten verwendet, bevor Computerprogramme geschrieben wurden. Leider kann ich keine guten Beispiele dafür finden.

Jack Aidley
quelle
-1

Eine Erweiterung von Ross Pattersons Kommentar - COBOL-Compiler (oder zumindest IBMs Compiler, die ich in meiner Karriere als Pre-Open-System-Compiler verwendet habe) erzwangen Einrückungen (die von ihm erwähnten Bereiche "A" und "B"). Wenn eines der Elemente, die sich in diesen Bereichen befinden mussten, nicht exakt platziert wird, schlägt die Kompilierung Ihres Codes fehl. Darüber hinaus war jedoch keine spezielle Einrückung erforderlich - dies führte häufig zu Problemen, wenn der Code eines anderen Entwicklers geändert wurde, dessen Einrückungsstil von Ihrem abweicht -. Die Etikette legt nahe, dass Sie dem vorhandenen Muster folgen, da dies den Frieden unter Kollegen bewahrt. Darüber hinaus erschweren verschiedene Stile in derselben Quelle die Darstellung und wirken fast wie Tetris.

Es ist Jahre her, dass ich über COBOL und seine Einrückung nachgedacht habe - danke, dass Sie die Frage gestellt und einen kleinen Ausflug in die Vergangenheit gemacht haben!

Marty

Marty Power
quelle