알골
알골(ALGOL)은 Algorithmic Language의 약자로서, 1950년대 후반 유럽을 중심으로 개발된 프로그래밍 언어이다. 당시 미국 IBM에서 개발한 포트란(Fortran)에 대항하기 위해 1958년 스위스 취리히의 국제회의에서 제안되었다. 알고리즘의 연구 개발에 이용되었으나, 널리 보급되지는 못하였다.
개요
알골(ALGOL)은 알고리즘언어(ALGOrithmic Labguage)의 약자로 이 언어는 계산과정묘사 지향적인 언어이자 알고리즘 묘사 지향적인 언어이다. 대표적인 블록구조 언어이기도하다. 대수 계산이나 논리적인 연산 처리를 하는 경우에 적합한 프로그램 언어이다. 1960년에 ALGOL 60으로서 문법서가 제정되었다. 그 후 ALGOL 69도 발표되었다. [1] 알골은 세계 최초의 구조화언어로서 엄격한 기초이론과 형식화된 어법 규칙을 가진다.
역사
- 알골은 1958년 IBM의 연구 개발팀이 개발한 것으로 같은 해 취히리에서 개최한 국제 상업 학술 컴퓨터 위원회에서 ACM(Association of Computing Machinery) 팀과 당시 연방 독일의 응용수학과 역학협회(GAMM)가 건의한 알고리즘 표시법을 종합해 ALGOL 58을 만들었다. 1959년에 IBM은 ALGOL 코드를 실행시켰다.
- 1960년 국제정보처리학회연합(IFIP)에서 유럽의 학자들을 중심으로 만들어졌다. 1월 튜링상 수상자 앨런 펄리스는 파리에서 열린 전 세계 일류 소프트웨어 전문가들이 참석한 토론회에서 <알고리즘 언어 ALGOL 60 보고>를 발표해, 알고리즘 언어 ALGOL 60을 확립했다. [2] 유럽의 학자들 중심으로 만들어졌기 때문에 유럽쪽에서 많이 사용되었고 미국쪽에서는 포트란을 많이 사용하였다고 한다.
- 알골 58 : 당시 이름은 IAL였다.
- 알골 60 : 1960의 준말로 문법이 BNF 표기법으로 기술,구조화된 프로그래밍의 형태를 갖춘다. BCPL, B, 파스칼, 시뮬라, C 등의 다른 수많은 프로그래밍 언어에 영향을 주었다.또한 알골 60은 어휘 범위의 네스티드 함수 정의를 처음 추가한 언어이다. 알골 60'이라는 새로운 언어는 신대륙의 포트란에 대항하기 위해 만들어졌다.[3]알골은 포트란(FORTRAN) 언어와 비교했을 때 두 가지 장점이 있다.
- 프로그래밍 언어 중에서 처음으로 지역 변수를 사용 : FORTRAN 언어는 전역변수(하나의 변수는 모든 코드에서 하나의 의미로만 사용)만 사용 가능했지만, ALGOL은 지역변수를 사용하면서 하나의 코드 안에서 다른 함수라면 다른 의미를 가질 수 있었다.
- 재귀라는 프로그래밍 설계 사상 : 재귀는 하나의 문제를 여러 개의 작은 문제로 나누고, 각각의 작은 문제 안에서 해결하고 전체적인 답을 얻는 것을 말한다. 포트란 언어의 설계자인 배커스는 ALGOL 문법을 설계하던 중 전후 문맥이 무관한 문법형식이라는 그의 최신 연구 결과를 사용해 ALGOL 언어 회의에서 논문을 교류했다. 마감일을 넘겨 논문집에 실리지는 못했지만 덴마크의 수학자 페테르 나우르가 큰 영감을 받았고 배커스의 문법에 대한 감수와 수정을 해서 더욱 완벽하게 만들었다. 여기서 컴퓨터계의 유명한 베커스-나우르 표기법(BNF)이 탄생했다. 이 표기법은 <알고리즘 언어 ALGOL 60 보고>안에 쓰였다. [2]
- 알골 68 :1968년에는 ALGOL 68이 개발되었다. ALGOL-10과 매우 유사하며, IFIP(국제 정보 처리 학회)에서 발표된 언어의 이름으로 알골 60을 발전시켜 다목적용의 강력한 언어로 만들 계획으로 설계했다. 2단계 문법 Wijngaarden 표기법으로 문법이 기술했고, 다양한 데이터형을 다루는 융통성이 주어져 과학 계산용의 범주를 벗어나 사무 처리용까지 적용범위를 확대했다.[4] 기능이 너무 복잡해 실제로는 많이 사용되지 않고 있다. 일괄처리 체제에 적합한 입출력 방식으로 되어있어 주로 일괄처리시스템에 사용된다.[5]
특징
수치 계산 절차를 표준화된 형태로 정확하게 컴퓨터에 나타내는 데 쓰이는 산술 언어로 이 언어는 컴파일러가 있는 상황에서 컴퓨터에 수치 계산 과정을 인식시키는 것 외에 개인 간에 수치 계산 과정을 전달하기 위한 수단으로도 사용된다. 국제 협약에 의해 표준화된 국제 대수 언어(International Algebraic Lan-guage)는 알골의 전신이다. [6]
프로그램을 여러 단계의 블록으로 나누어 작성할 수 있도록 해 주는 언어의 구조. 즉 프로그램 작성 시 일련의 문장을 하나의 프로시저나 함수로 묶고 이러한 프로시저나 함수들을 계층적으로 조직하여 하나의 프로그램을 만들어 내는 블록구조를 사용하여 하향식 설계를 자연스럽게 구현하여 프로그램을 이해하기 쉽다. 또한 지역 변수와 다른 블록을 포함하며 변수의 유효 범위가 블록 내로 제한되므로, 기억 장소가 절약되고 오류의 가능성이 적다.[7]
ALGOL에서의 서브프로그램은 procedure라고 부르며 넘겨주는 변수가 없다는 것이 특징이다. BASIC언어에서 사용하는 GOSUB와 동일하다고 보면 된다. 즉 서브프로그램에서 사용하는 변수의 이름을 메인프로그램의 변수 이름과 동일하게 해야한다. procedure NAME begin ... end 하지만 ALGOL에서는 다른 언어에서 사용하는 함수기능을 가지고 있다. 함수는 서버 프로그램과 마찬가지로 procedure를 사용한다. 아래는 두개의 정수 n,m을 변수로 받아 큰 수를 찾아주는 larger라는 함수의 예이다.
integer procedure larger(n,m) integer m,n begin
if m>n then larger :=m
else larger := n
end;
첫줄에 나오는 integer는, C언어에서와 마찬가지로 return되는 값의 데이타 타입을 정의하고 있다. C언어는 이 ALGOL을 모태로 탄생되었다. 또한 서브프로그래에 값을 전달하는 방법이 두가지(reference by value, reference by address) 다 가능하다.[8]
스택이란 쌓아 올린 더미를 의미하는데 자료구조에서 기억 장치에 데이터를 일시적으로 겹쳐 쌓아 두었다가 필요할 때에 꺼내서 사용할 수 있게 주기억장치(main memory)나 레지스터(register)의 일부를 할당하여 사용하는 임시 기억장치를 말한다.[9] 알골은 이 스택을 사용하여 기억 영역을 할당하는 기법의 하나로 필요가 발생한 시점에서 적용되는 기준에 따라 프로그램 및 데이터에 대하여 기억 영역을 분배하는 방식인 동적 할당( dynamic allocation)을 사용할 수 있었다. [10]
되부름(recursion)은 주어진 문제를 해결하기 위해 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 방식으로 어떤 루틴이나 프러시저가 자기 자신을 반복 호출하여 문제를 풀어 나가는 알고리즘으로, 이를 이용하기 위해서는 스택을 사용한다. 간단한 루틴을 풀 수 있는 반면 처리 속도가 느리고, 횟수가 지나치게 많으면 프로그램이 정지하기도 한다.
각주
- ↑ 전기용어사전〈알골 - 용어 해설〉 , 《네이버 지식백과》
- ↑ 2.0 2.1 담 정〈제3세대언어-고급언어〉 , 《소프트웨어 문화개론》, 2016-08-31
- ↑ 이성규 기자, 〈IT 거인들은 왜 프로그래밍 언어에 집착할까〉, 《BLOTER》, 2014-06-18
- ↑ 시사상식사전〈용어-시사상식사전〉 , 《네이버 지식백과》
- ↑ 컴퓨터인터넷IT용어대사전〈알골 68〉 , 《네이버 지식백과》
- ↑ 컴퓨터인터넷IT용어대사전〈알골 60〉 , 《네이버 지식백과》
- ↑ IT용어사전〈블록 구조〉 , 《네이버 지식백과》
- ↑ 박홍균〈1960년 ALGOL〉,《원리한자》
- ↑ 두산백과, 〈스택〉, 《네이버 지식백과》
- ↑ 컴퓨터인터넷IT용어대사전, 〈동적할당 - 용어 해설〉, 《네이버 지식백과》
참고 자료
- 전기용어사전, 〈알골 - 용어 해설〉, 《네이버 지식백과》
- 시사상식사전, 〈알골 - 시사상식사전〉, 《네이버 지식백과》
- 컴퓨터인터넷IT용어대사전, 〈알골 68〉, 《네이버 지식백과》
- 이성규 기자, 〈IT 거인들은 왜 프로그래밍 언어에 집착할까〉, 《BLOTER》, 2014-06-18
- 담 정, 〈제3세대언어-고급언어〉, 《소프트웨어 문화개론》, 좋은땅, 2016-08-31
- 박홍균,〈1960년 ALGOL〉,《원리한자》
- 컴퓨터인터넷IT용어대사전, 〈동적할당 - 용어 해설〉, 《네이버 지식백과》
- 두산백과, 〈스택〉, 《네이버 지식백과》
같이 보기