跳至內容

ALGOL 58

維基百科,自由的百科全書
ALGOL 58
編程範型過程式, 指令式, 結構化
設計者Friedrich L. Bauer英語Friedrich L. Bauer, Hermann Bottenbruch英語Hermann Bottenbruch, Heinz Rutishauser英語Heinz Rutishauser, Klaus Samelson英語Klaus Samelson, 約翰·巴科斯, Charles Katz英語Charles Katz, 艾倫·佩利, Joseph Henry Wegstein英語Joseph Henry Wegstein
面市時間1958年,​66年前​(1958
啟發語言
FORTRAN, IT, Plankalkül[1], Superplan英語Superplan, Sequentielle Formelübersetzung
影響語言
ALGOL 60,以及類ALGOL語言

ALGOL 58(源自英語:ALGOrithmic Language 1958的縮寫),最早稱為國際代數語言(英語:International Algebraic Language,縮寫為IAL)[2],一種程式語言,是ALGOL家族的第一個成員。它在1958年問世,ALGOL 60即是它的基礎上開發而成。

ALGOL 58介入了複合語句的基礎概念[3],但只局限於控制流程,它沒有以ALGOL 60中的那種方式,結合上標識符作用域

歷史

[編輯]

1958年,ACM小組和以當時聯邦德國的應用數學和力學協會英語Gesellschaft für Angewandte Mathematik und Mechanik(GAMM),在蘇黎世把他們關於算法表示法的建議綜合為一從而形成IAL(國際代數語言)[4],後來改稱ALGOL 58。

ALGOL 58變體時間線

[編輯]
名稱 作者 國家 描述 目標CPU
ZMMD實現 1958 Friedrich L. Bauer英語Friedrich L. Bauer, Heinz Rutishauser英語Heinz Rutishauser, Klaus Samelson英語Klaus Samelson, Hermann Bottenbruch英語Hermann Bottenbruch  德國 ZMMD是ZürichMünchenMainzDarmstadt的縮寫 Z22英語Z22 (computer)
NELIAC英語NELIAC 1958 海軍電子實驗室英語Navy Electronics Laboratory  美國 AN/USQ-17英語AN/USQ-17
JOVIAL 1960 Jules Schwartz英語Jules Schwartz  美國 DODHOL,先於Ada 多種
BALGOL英語BALGOL 1960 Joel Merner等人  美國 Burroughs公司英語Burroughs Corporation B220
MAD英語MAD (programming language) 1960 密西根大學  美國 IBM 7090/7094主機,接著在1960年代中期移植到Univac 1108英語Univac 1108
ALGO英語ALGO 1961 Bendix公司英語Bendix Corporation  美國 Bendix G-15英語Bendix G-15
ALGOL 30英語Dartmouth ALGOL 30 1962 達特茅斯學院Thomas Eugene Kurtz英語Thomas Eugene Kurtz等人  美國 後來演進成ALGOL 60 LGP-30英語LGP-30
SUBALGOL 1962 史丹佛大學Bob Braden英語Bob Braden, Lawrence M. Breed英語Lawrence M. BreedRoger Moore英語Roger Moore (computer scientist)  美國 BALGOL擴展 IBM 7090

例子代碼

[編輯]

下面是語言報告中的例子代碼,採用辛普森積分法計算函數F(x)的積分,函數F(x)的值由假定存在的函數例程提供:

procedure Simps(F(), a, b, delta, V);
comment a, b are the min and max, resp. of the points def. interval of integ.
        F() is the function to integrated.
        delta is the permissible difference between two successive Simpson sums.
        V is greater than maximum absolute value of F on a, b;
begin
Simps:  Ibar := V×(b-a)
        n    := 1
        h    := (b-a)/2
        J    := h×(F(a)+F(b))
J1:     S    := 0;
  for   k    := 1 (1) n
        S    := S+F(a+(2×k-1)×h)
        I    := J+4×h×S
  if    (delta < abs(I-Ibar))
begin   Ibar := I
        J    := (I+J)/4
        n    := 2×n; h := h/2
        go to J1 end
        Simps := I/3
return
integer (k, n)
  end   Simps

這裡的非實數類型聲明放在了過程的末尾。原文中的斜體顯示改為了粗體,下面再將其調整為ALGOL 60開創的縮進格局:

procedure Simps(F(), a, b, delta, V);
comment a, b are the min and max, resp. of the points def. interval of integ.
    F() is the function to integrated.
    delta is the permissible difference between two successive Simpson sums.
    V is greater than maximum absolute value of F on a, b;
begin
Simps:
    Ibar := V×(b-a)
    n := 1
    h := (b-a)/2
    J := h×(F(a)+F(b))
J1: S := 0;
    for k := 1 (1) n
        S := S+F(a+(2×k-1)×h)
    I := J+4×h×S
    if (delta < abs(I-Ibar))
    begin
        Ibar := I
        J := (I+J)/4
        n := 2×n; h := h/2
        go to J1
    end
    Simps := I/3
    return
    integer (k, n)
end Simps

引用

[編輯]
  1. ^ Rojas, Raúl; Hashagen, Ulf. The First Computers: History and Architectures. MIT Press. 2002: 292 [October 25, 2013]. ISBN 978-0262681377. (原始內容存檔於2020-08-04). 
  2. ^ Perlis, A.J. Talk on Computing in the fifties. ACM National Conference. Nashville,. TN. (Transcript in J. A. N. Lee (ed.), Computer Pioneers, IEEE Computer Society Press, Los Alamito, CA, 1995, 545-556). 1981. 
  3. ^ Perlis, A. J.; Samelson, K. Preliminary report: international algebraic language (PDF). Communications of the ACM (New York, NY, USA: ACM). 1958, 1 (12): 8–22 [2023-02-20]. doi:10.1145/377924.594925. (原始內容存檔 (PDF)於2023-02-20). Strings of one or more statements may be combined into a single (compound) statement by enclosing them within the "statement parentheses" begin and end. Single statements are separated by the statement separator ";". 
  4. ^ Perlis, A.J.; Samelson, K. Preliminary report: international algebraic language. Communications of the ACM. 1958, 1 (12): 8–22. doi:10.1145/377924.594925. 

外部連結

[編輯]