본문 바로가기
기술공학/세상을 바꾼 IT

[세상을 바꾼 IT: 태동] COBOL, 세상에 등장한 고급 프로그래밍 언어

by 롱카이 2024. 4. 22.
반응형
  • 기계어와 어셈블리어
컴퓨터에 삽입하는 천공카드
컴퓨터에 삽입하는 천공카드

1940년대 말에 등장한 컴퓨터는 천공카드의 구멍을 읽어 명령어를 읽는 기계였습니다. 천공카드나 테이프에 구멍을 뚫는 등 표식을 해 컴퓨터에 삽입했고 컴퓨터가 그것을 읽는 시스템으로 돌아갔습니다. 이는 컴퓨터에 명령을 내리는 사람이 천공카드나 테이프에 구멍을 뚫어 명령을 입력해야 함을 의미했고 천공카드의 구멍의 규칙에 대해 깊은 이해도를 가진 사람만이 컴퓨터에 명령을 내릴 수 있음을 의미했습니다. 때문에 컴퓨터를 사용하기 위해서는 천공카드에 대해 또 따로 공부해야 하는 귀찮음이 있었습니다.

캐서린 부스의 어셈블리어
캐서린 부스의 어셈블리어

컴퓨터의 태동기 때부터 천공카드에 대한 불편함에 대한 말이 나왔고 천공카드 대신 인간이 사용하는 언어로 바꾸면 좋겠다는 의견이 나왔습니다. 영국에서 태어나 남편과 함께 미국을 여행하던 그녀는 존 폰 노이만으로부터 폰 노이만 구조에 대해 학습했고 천공카드에 구멍을 뚫는 기계어에 불편함을 느껴 이를 인간이 사용하는 단어로 바꾸려는 시도를 했습니다. 1947년 그녀는 남편과 함께 Coding for A.R.C라는 논문과 함께 기계어를 영어 단어로 바꾼 어셈블리어를 발표했습니다.

어셈블리어 예시
어셈블리어 예시

존 폰 노이만은 기계어가 아닌 어셈블리어로 입력하는 것을 불필요한 일이라 생각했지만 존 폰 노이만처럼 천재적인 사람이 아니고서는 기계어를 이해하기가 어려워 많은 사람들이 어셈블리어를 찾았습니다. 1951년 케임브리지대학교에서는 EDSAC의 사용법을 설명하는 책에 프로그래밍을 어셈블리어로 명령하도록 제시했고 많은 사람들이 어셈블리어로 프로그래밍을 했습니다. 방법은 여전히 천공카드나 자기 테이프에 키보드로 입력하는 것이었지만 전에는 001001100처럼 0과 1로 프로그래밍하던 시대에서 키보드로 알파벳을 입력하면 그걸 기계어로 바꾸는 방식으로 프로그래밍하는 것이었습니다. 그럼에도 불구하고 어셈블리어는 단어만 있는 형태로 인간 언어의 문법과도 달라 여전히 불편했습니다.
 
 
 

  • 프로그래밍 언어 간 번역, 컴파일러
어셈블리어(후에는 고급 프로그래밍 언어)를 기계어로 번역하는 컴파일러
어셈블리어(나중에는 고급 프로그래밍 언어)를 기계어로 번역하는 컴파일러

1947년 최초의 어셈블리어가 등장한 이후 새로운 컴퓨터가 출시될 때마다 그 컴퓨터에 맞는 어셈블리어가 등장했습니다. 처음에는 컴퓨터 전용 언어가 등장해서 좋았지만 여러 컴퓨터가 등장하자 각기 다른 어셈블리어 때문에 컴퓨터 종류마다 새로운 어셈블리어를 배워야한다는 귀찮은 점이 등장했습니다. 1952년 미국의 수학자 그레이스 호퍼는 미해군에 복무하며 컴퓨터를 다뤘는데 처음 다루는 컴퓨터 언어에 많은 실수를 저질렀습니다. 이에 그녀는 사람들이 컴퓨터에 명령어를 입력하는데 실수하지 않도록 어셈블리어를 기계어로 번역하는 번역기를 구상했습니다. 그리고 미해군이 사용하던 A-0 system 언어를 기계어로 번역하는 컴파일러를 개발했습니다. 이 컴파일러는 완벽하지 않았지만 컴파일러 개념이 등장한 덕분에 컴퓨터과학자들은 더 과감한 고급 프로그래밍 언어를 만들고 이를 컴파일러를 이용해 기계어로 번역할 수 있게 되었습니다.
 
 
 

  • 계산을 위한 프로그래밍 언어 FORTRAN과 ALGOL
FORTRAN 예시
FORTRAN 예시

1950년대 레밍턴 랜드와 IBM 등 컴퓨터 제조기업들이 컴퓨터 생산에 뛰어들며 컴퓨터는 점점 발전했습니다. 그리고 당시에 컴퓨터는 복잡한 계산을 빨리 하는 사무도구로 사용되었기에 컴퓨터로 하는 일은 계산을 입력하고 계산결과를 출력해 사람이 읽는 것이었습니다. 덕분에 프로그래밍 언어 역시 계산 입력에 맞춰 성장했습니다. 다양한 타겟층에 컴퓨터를 판매하는 전략을 고수한 IBM이 컴퓨터 판매에 적극적이었고 IBM은 컴퓨터 하드웨어 뿐만 아니라 그 컴퓨터를 사용할 소프트웨어도 만들어 함께 판매했습니다. IBM의 존 베커스는 IBM 컴퓨터를 사용하기 편하게 하기 위해 FORTRAN이라는 어셈블리어 수준의 프로그램 언어를 만들었고 IBM 704 컴퓨터의 프로그램으로 탑재했습니다. 그래서 IBM 704 컴퓨터를 구매한 사용자들은 키보드로 FORTRAN으로 공식을 입력해 계산 명령을 쉽게 내릴 수 있었습니다.

ALGOL 예시
ALGOL 예시

FORTAN은 어셈블리어이지만 직관적인 문법과 간단한 단어 덕분에 명령을 내리기 쉬웠습니다. 또한 과학 연구에 집중된 언어로 공식과 변수 입력에 최적화되었습니다. 때문에 미국 과학자들과 기관은 예전처럼 직접 컴퓨터 설정을 만지는 것 대신 키보드로 FORTRAN을 이용해 명령어를 입력하면 되었고 상당히 편해졌습니다. 미국에서 FORTRAN이 대성공을 거두자 유럽 과학계는 FORTRAN에 대항해 1958년 ALGOL이라는 프로그래밍 언어를 개발해 사용했습니다. FORTRAN과 ALGOL 모두 고유의 컴파일러를 보유해 어떤 종류의 컴퓨터에서도 명령을 입력하면 기계어로 번역해 입력함으로서 명령을 잘 입력할 수 있었습니다. 덕분에 컴퓨터를 사용하는 주 고객층인 과학계는 FORTRAN과 ALGOL이라는 프로그래밍 언어를 사용하며 컴퓨터를 활발하게 이용했습니다.
 
 
 

  • 사무용 프로그래밍 언어로 자리잡은 COBOL
COBOL 교재
COBOL 교재

FORTRAN과 ALGOL이 등장하는 1950년대 말기는 여러 프로그래밍 언어들이 태동하는 격동기였습니다. 하지만 대부분의 프로그래밍 언어는 특정 용도로만 사용하는 언어였습니다. 그러다보니 컴퓨터 기업들은 특정 용도만을 위한 새로운 프로그래밍 언어를 만들고 출시했으며 새로운 프로그래밍 언어를 만들 때마다 비용은 증가하는데 정작 사람들은 또 프로그래밍을 배워야 한다는 비용부담이 커 구매하지 않는 문제가 발생했습니다. 이에 1959년 컴퓨터과학계는 학회를 열어 사무용으로 사용할 수 있는 범용 프로그래밍 언어가 필요하다는 의견을 공유했고 미국 국방부의 예산지원을 받아 CODASYL 단체를 설립하고 기존 프로그래밍 언어를 분석했습니다.

COBOL 언어와 천공카드 입력
COBOL 언어와 천공카드 입력

CODASYL은 기존 언어의 문법을 수정해 보다 보편적인 문법을 만들었고 1959년 1년이 가기 전에 COBOL이라는 이름으로 프로그래밍 언어를 개발했습니다. COBOL은 수학 계산용이 아닌 사무용으로 사용되어 문법에 더 집중했는데 이 때문에 기존 프로그래밍 언어보다 더 복잡하고 난해하다는 단점이 있었습니다. 하지만 사무용 프로그래밍 언어라는 범용성을 포기할 수 없던 미국 국방부는 COBOL을 지원했고 COBOL은 여러차례 개선을 거쳐 더 편리한 고급 프로그래밍 언어로 성장했습니다. COBOL은 이후 등장할 프로그래밍 언어의 문법 개념을 제시한 선구자였으며 절차 지향형 언어로 시작해 개량을 거쳐 객체 지향형 언어로 변화했습니다.

지금도 사용되는 COBOL
지금도 사용되는 COBOL

1970년대에 이르러 COBOL은 전세계 표준 프로그래밍 언어로 자리잡았고 이후 등장하는 거의 대부분의 고급 프로그래밍 언어는 COBOL의 영향을 받았습니다. 그리고 지금도 금융전산 분야 등에서 COBOL이 여전히 사용되고 있습니다. COBOL은 문법이 비효율적이지만 어찌되었든 세계 최초의 사무용 고급 프로그래밍 언어였고 고급 프로그래밍의 시대를 연 주인공입니다.
 
 
 
 

반응형

댓글