Fortranの元の制御構造はどのように不十分でしたか?


8

私のプログラミング言語の概念クラスでは、Fortranの元の制御構造では不十分であると言っていました。それらはIBM 704の機械語命令に似すぎていると言われていました。これは本当ですか?どうして彼らを不十分にしたのですか?


FORTRANの算術IFは、本質的にIBM 704のスキップ操作の最適化でした。
yannis

回答:


10

まあのは、Fortranの初期バージョンが持っていた見てみましょうIF GOTODO

ASSIGNED GOTOおよびCASEステートメントのような計算されたGOTOを含む、IFおよびGOTOにはいくつかのバリエーションがありました。

したがって、DOループを除いて、すべての制御ステートメントは、IFとGOTOのバリエーションであり、ハードコードされたステートメント番号が関係しています。結果はスパゲッティよりも春雨でした。

DOループ自体には問題があり、ループの最後のテストで厳密に "do until"になるため、さらに別の "IF(cond)GOTO 9999"を前に置く以外に、最初の反復をスキップする方法はありませんでした。 。

そのため、ほとんどの制御構造は「GOTO行番号」であったため、コードに大幅な変更を加えると、ターゲット行番号に多くのエラーが発生しやすい変更が加えられます。

DOループをDO WHILEに変換するには、GOTOで補足する必要があります。

最古のFotransには、「GOTO」という形式のフォームがありました。

IF (VAR) 100,200,300

つまり、VARが<0の場合はステートメント100に進みます。= 0の場合はステートメント200、> 0の場合はステートメント300に進みます。

全体として、それはそれほど悪くない試みでした。あなたが教授が黒板に書いたものに似た式を書くことができたという事実は、FORTRANのキラー機能であり、プログラムの流れは追いつくのに数年待たなければなりませんでした。


-1

FORTRAN IVの悪い点は、すべての制御「構造」(ループを含む)がラベルに依存していることでした。したがって、それらは非構造化制御を提供しました。彼らはあまりにも強力でした。たとえば、ループ内のラベルに分岐してから、後で再び分岐する場合はどうでしょうか。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.