In che modo le strutture di controllo originali di Fortran erano insufficienti?

8

Nella mia classe Concetti di programmazione linguistica è stato accennato di passaggio che le strutture di controllo originali di Fortran erano insufficienti. Si è detto che erano troppo simili alle istruzioni della macchina per l'IBM 704. Era così? Cosa li ha resi davvero insufficienti?

    
posta World Engineer 22.05.2012 - 07:11
fonte

2 risposte

10

Bene, vediamo che le prime versioni di Fortran avevano IF GOTO e DO .

Ci sono state diverse varianti su IF e GOTO, inclusi GOTO ASSEGNATI e GOTO calcolato, che era un po 'come un'istruzione CASE.

Quindi, a parte i loop DO, tutte le dichiarazioni di controllo erano variazioni su IF e GOTO che coinvolgono numeri di istruzioni hard coded. Il risultato è stato più vermicelli che spaghetti.

Il ciclo DO stesso era problematico in quanto era strettamente "do until" con il test in fondo al ciclo, quindi non c'era modo di saltare la prima iterazione se non precedendola con un altro "IF (cond) GOTO 9999 ".

Quindi, poiché la maggior parte delle strutture di controllo era "GOTO linenumber", qualsiasi modifica sostanziale del codice comporterebbe modifiche molto inclini agli errori nei numeri di linea di destinazione.

Il ciclo DO doveva essere integrato con un GOTO per trasformarlo in un DO WHILE.

I primi Fotrans avevano un "GOTO" del modulo.

IF (VAR) 100,200,300

Il che significa che se VAR è < 0 allora vai all'istruzione 100. Se = 0 allora l'istruzione 200, se > 0 quindi la dichiarazione 300.

Nel complesso non è stato un tentativo troppo brutto. Il fatto che tu potessi scrivere formule che assomigliavano a ciò che hai scritto tu professore sulla lavagna era la caratteristica killer di FORTRAN, il flusso del programma doveva aspettare qualche anno per recuperare.

    
risposta data 22.05.2012 - 08:26
fonte
-1

La cosa brutta di FORTRAN IV era che tutte le "strutture" di controllo (inclusi i loop) dipendevano dalle etichette. Quindi hanno fornito il controllo non strutturato. Erano troppo potenti. Che ne dici, ad esempio diramazione in un'etichetta all'interno di un ciclo e poi, in seguito, di nuovo in uscita ...

    
risposta data 22.05.2012 - 10:01
fonte

Leggi altre domande sui tag