한국   대만   중국   일본 
알골 (프로그래밍 言語) - 위키百科, 우리 모두의 百科事典 本文으로 移動

알골 (프로그래밍 言語)

위키百科, 우리 모두의 百科事典.

ALGOL 2.0의 1965年 매뉴얼

알골 (ALGOL, Algorithmic Language의 준말) [1] 은 1950年代 美國에서 만들어진 포트란 에 對抗하여 유럽의 學者들을 中心으로 開發된 프로그래밍 言語이다. 알고리즘 의 硏究開發, 數値 計算과 論理 演算 에 利用하기 위한 目的으로 만들어졌다. ALGOL은 여러 ALGOL界 言語의 總稱으로 ALGOL이란 이름의 프로그래밍 言語는 存在하지 않는다.

歷史 [ 編輯 ]

1958年 취리히 에서 열린 國際會議에서 提案된 것이 그 起源으로 여겨진다. (이 言語는 後에 ALGOL 58로 불리게 되지만, 當初의 이름은 IAL이었다.)

1960年에 提案된 ALGOL 60 은 그 文法이 BNF 表記法 으로 記述되었으며 構造化된 프로그래밍의 形態를 갖고 있었다.

ALGOL 60은 節次型 言語로는 最初로 再歸呼出이 可能한 프로그래밍 言語였다. 또한 PL/I , 파스칼, C 言語 等 以後 言語의 發展에 큰 影響을 주었다. 그러나 現在는 거의 利用되지 않고 있다. 人者 傳達에 있어서 알골에 特徵的이었던 "이름 傳達" 方式도 以後의 言語에서는 거의 찾아볼 수 없게 되었다.

標準으로 IFIP TC/WG2.1에서 ALGOL 60이 制定되었다. 以後에는 이어지는 標準化 作業은 進行되지 않고 1984年에야 ALGOL 60에 相當하는 것이 ISO 標準으로 指定되었다. z 1968年에는 ALGOL 68이 開發되었다. ALGOL 68에서는 2段階 文法 Wijngaarden 表記法으로 文法이 記述되었다. ALGOL 60의 後繼 言語가 制定되기까지 파스칼을 設計한 Wirth의 ALGOL W를 비롯한 여러 候補者가 있었지만, 結局은 ALGOL 68이 後繼로 指定되었다. 그러나 너무 複雜하고 厖大한 辭讓을 要求했기 때문에 ALGOL 68 컴파일러는 實際 具現이 어려웠고, Wijngaarden 表記法 또한 難解하여 實用的으로 普及되지 못했다.

規格 [ 編輯 ]

  • 알골 58 - 本來 IAL (International Algebraic Language)이라는 이름으로 提案됨
  • 알골 60 - 1960年代 中盤부터 1963 改正 時까지 X1 ALGOL 60이라는 이름으로 처음 具現 [2] [3]
  • 알골 68 - 1973年 改正 [4]

예제 [ 編輯 ]

다음은 n×m의 2 次元 配列 中 절대값이 가장 큰 要素를 찾아, 그 絶對 값을 y에, 籤子를 i와 k에 貯藏하는 函數이다.

  • 알골 60
PROCEDURE Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k) ;
     VALUE n, m ; ARRAY a ; INTEGER n, m, i, k ; REAL y ;
 COMMENT The absolute greatest element of the matrix a, of size n by m
     is transferred to y, and the subscripts of this element to i and k ;
 BEGIN
     INTEGER p, q ;
     y := 0 ; i := k := 1 ;
     FOR p := 1 STEP 1 UNIT n DO
         FOR q := 1 STEP 1 UNTIL m DO
             IF abs (a[p, q]) > y THEN
                 BEGIN
                     y := abs (a[p, q]) ;
                     i := p; k := q
                 END
 END Absmax
  • 알골 68
PROC ABS max = ([,]real a, REF real y, REF int i, k)real:
 COMMENT The absolute greatest element of the matrix a, of size ?a by 2?a
 is transferred to y, and the subscripts of this element to i and k; COMMENT
 BEGIN
    real y := 0; i := ?a; k := 2?a;
    FOR p FROM ?a TO ?a DO
      FOR q FROM 2?a TO 2?a DO
        IF ABS a[p, q] > y THEN
            y := ABS a[p, q];
            i := p; k := q
        FI
      OD
    OD;
    y
 END # abs max #

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. The name of the family is sometimes given in mixed case ( Algol 60 ), and sometimes in all uppercase ( ALGOL68 ). For simplicity this article uses ALGOL .
  2. Backus, J. W.; Bauer, F. L.; Green, J.; Katz, C.; McCarthy, J.; Perlis, A. J.; Rutishauser, H.; Samelson, K.; Vauquois, B.; Wegstein, J. H.; van Wijngaarden, A.; Woodger, M. (May 1960). Naur, Peter, 編輯. 《Report on the Algorithmic Language ALGOL 60》. Copenhagen. doi : 10.1145/367236.367262 . ISSN   0001-0782 .  
  3. “Revised Report on the Algorithmic Language Algol 60” . 1963. 2007年 6月 25日에 原本 文書 에서 保存된 文書 . 2007年 6月 8日에 確認함 .  
  4. “Revised Report on the Algorithmic Language ALGOL 68” (PDF) . 1973 . 2014年 9月 13日에 確認함 .  

外部 링크 [ 編輯 ]