Wie waren Fortrans ursprüngliche Kontrollstrukturen unzureichend?

8

In meiner Klasse Programming Language Concepts wurde nebenbei erwähnt, dass Fortrans ursprüngliche Kontrollstrukturen unzureichend waren. Es wurde angedeutet, dass sie den Maschinenanweisungen für die IBM 704 zu ähnlich waren. War dies der Fall? Was genau hat sie unzureichend gemacht?

Weltingenieur
quelle
Die arithmetische IF von FORTRAN war im Wesentlichen eine Optimierung der Sprungoperation des IBM 704.
Yannis

Antworten:

10

Nun, mal sehen, frühe Versionen von Fortran hatten IF GOTOund DO.

Es gab verschiedene Variationen von IF und GOTO, einschließlich ASSIGNED GOTOs und berechneter GOTO, die einer CASE-Anweisung ähnelten.

Abgesehen von den DO-Schleifen waren alle Steueranweisungen Variationen von IF und GOTO, die hartcodierte Anweisungsnummern enthielten. Das Ergebnis waren mehr Fadennudeln als Spaghetti.

Die DO-Schleife selbst war insofern problematisch, als sie ausschließlich mit dem Test am unteren Ende der Schleife "do till" durchgeführt wurde. Daher gab es keine Möglichkeit, die erste Iteration zu überspringen, außer ihr eine weitere "IF (cond) GOTO 9999" vorauszugehen. .

Da die meisten Kontrollstrukturen "GOTO-Leinennummer" waren, würde jede wesentliche Änderung des Codes viele fehleranfällige Änderungen der Zielzeilennummern mit sich bringen.

Die DO-Schleife musste mit einem GOTO ergänzt werden, um daraus ein DO WHILE zu machen.

Die frühesten Fotrans hatten ein "GOTO" der Form.

IF (VAR) 100,200,300

Was bedeutet, wenn VAR <0 ist, dann gehe zu Anweisung 100. Wenn = 0, dann Anweisung 200, wenn> 0, dann Anweisung 300.

Im Großen und Ganzen war es kein schlechter Versuch. Die Tatsache, dass Sie Formeln schreiben konnten, die denen ähnelten, die Ihr Professor an die Tafel geschrieben hatte, war das Killer-Feature von FORTRAN. Der Programmablauf musste einige Jahre warten, um aufzuholen.

James Anderson
quelle
-1

Das Schlechte an FORTRAN IV war, dass alle Kontrollstrukturen (einschließlich Schleifen) von Etiketten abhingen. Sie sorgten also für unstrukturierte Kontrolle. Sie waren zu mächtig. Wie wäre es zum Beispiel, in eine Beschriftung innerhalb einer Schleife zu verzweigen und später wieder zu verzweigen ...

Richard John Botting
quelle