CS(ComputerScience)/프로그래밍언어

Fortran부터 C#까지 찾아나가는 여정(프로그래밍 언어의 역사2)

susong 2022. 11. 1. 17:41
728x90

최초의 하이레벨 언어 Fortran

최초의 하이레벨 언어인 Fortran은 1954년 IBM의 John Backus에 의해 제작되었다.

 

Fortran의 의미는 FORmular TRANslation인데, 이름에서 오는 느낌만 봐도 어떠한

수학적 계산을 위해서 사용되었음이 많이 느껴진다.

 

사실 Computer이라고 생각하면 지금은 우리가 당연히 지금 당신이 이 글을 읽고 있는 

모니터에 연결된 본체(혹은 스마트폰)을 생각하겠지만 이때당시 1954년에 컴퓨터는

사람의 직업 이름이었다. (이를 다룬 영화 히든 피겨스도 한번 보면 좋다 추천!)

 

Computer이란, 이때 당시만 해도 수학 계산을 하는 사람을 지칭하는 단어가 Computer였다.

하지만, Fortran이 나오고 컴퓨터가 수학계산 역할을 대체해나가자 사람들은 이제 

Computer을 사람이 아닌 CPU로 이루어진 연산 장치로 연상하기 시작했다.

 

그렇다면 이 Fortran은 어떤 기능을 가지고 있었을까?

이 Fortran은 계산을 하기위해 만들어진 컴퓨터 답게 매우매우 빠른 특성을 가지고 있었다.

(또한, 당시에는 컴퓨터 성능이 지금 우리가 상상하는 것 이하로 낮았기 느리면 사용될 수 없었다)

 

Fortran은 이런 기능들을 구현해냈는데

1. 정적 메모리 관리기능 (감사합니다!)

2. 기초적인 수학 함수 제공!(당시에는 혁신이었다. 지금이야 import 한줄이면 되는 기능이지만..)

3. 산술 기호 그대로 사용 가능 및 다양한 수학 자료형 제공(복소수 등등)

이런 포트란은 수학적인 계산이 많이 필요한 자연대 및 자연 연구에 많이 사용되게 되었고, 

현재까지도!(거의 C로 대체되었지만 일부는 여전히) Fortran은 수치해석에 사용되고 있다.

 

태양계 밖으로 넘어간 보이저도 이 포트란으로 짜여있는 만큼 인류사에 수학 해석 하나만큼은

이 포트란만큼 영향력이 강한 친구도 없다.

 

당시 작성된 언어답게 모두 대문자로 작성해야하지만, 여전히 사용가능하기에 한번쯤 코딩해보는 것도 권한다.

(물론 아직도 현역으로 돌아가고 있는 COBOL만큼은 아니겠지만

왜 대문자인지 알고 싶다면 링크 클릭

간단하게 요약하면, 그 때 당시에는 소문자를 쓰는 메모리조차 아까웠고, 또 우측과 같은

펀치카드로 돌아가는 컴퓨터에서도 작동해야했기 때문에 모두 대문자로만 작성되어있다.

 

그렇다면, 언제부터 소문자가 언어에 들어오는가?

C 쯤 가서야 이런 소문자 지원이 시작되었다. (링크)

 

 


Fortran과 함께 쌍두마차 COBOL

수학은 Fortran 비즈니스는 COBOL!

 

위의 예문만 봐도, 코볼은 수학 계산을 위해서 나온 언어가 아님을 한번에 알 수 있다.

 

그렇다면 COBOL의 의미는 무엇일까?

코볼은 "COmmon Business Oriented Language"라는 뜻으로 말 그대로 

"비즈니스를 위한 프로그래밍 언어"였다.

 

COBOL은 1959년(Fortran이 나오고 5년후) "최초의 디버거" 미 해군의

Grace Hopper 장군에 의해 제작되었다.

 

Fortran이 만들어지고 난 후, 컴퓨터는 당대에 지식인들이 보기에도 매우 혁신적이고 

놀라운 물건으로 취급되었는데, 그렇기 때문에 이것을 단순한 연구실이 아니라

세상 밖으로 가지고 나가려고 노력한 산물이 COBOL이다. 

 

그 목적에 맞게 코볼은 포트란과 상반되게 일반 업무에 사용되기 위하여 제작되었는데

이러한 이유로 코볼은 아래와 같은 특성들을 가지고 있다.

 

특징

1. 가독성이 매우매우 낮다

   - 일반인들이 사용할 수 있어야되기 때문에, 평서문 형식으로 코딩을 해야한다.

   - 그렇기 때문에 한눈에 알아볼 수 없고 열심히 읽어야된다는 특징이 있다.

2. Record 구조체를 제공했다.

   - 현대 우리가 사용하고 있는 구조체들(C의 struct, C++ Class)의 원조격 되시겠다.

   - 이 구조체를 통해 여러가지 자료를 하나로 처리할 수 있는 단초를 가지게 되었다.

3. 선언부와 실행부가 분리된다.

   - 우리가 함수를 선언하고 난 후 그 안에 자료형을 선언하고 실행부를 작성하는 것은 이때 시작되었다.

   - 지금이야 당연하지만, 이때는 혁신적인 변화였다.

 

조금 더 자세하게 살펴보면 코볼은 4가지 디비전으로 나누어져있는데 

각각은 아래와 같다.

 

1. Identification Division : 누가 언제 작성했는지? (프로그램에 대한 정보)

   - Program-ID, Author, Installation 등등

2. Evnironment Division : 어떤 하드웨어에서 작성되었는지?

   - 해당 시기에는 하드웨어 Independent? 이런 것 없었다.

3. Data Division : 데이터를 표현하는 부분

4. Procedure Division : 실행부를 표현하는 부분

 

코드 안에 우리가 지금은 OS가 처리해주는 부분들도 다 포함되다 보니 코드가 보기에 좋지않고

또 코드를 보면 Z = X + Y 하면 될 것을 아래와 같이 표현해야된다.

MOVE X TO Z.
ADD Y TO Z.

지금 보면 이해가 안가지만, 목적 자체가 일반인도 코딩할 수 있도록 해야되기에

이런 식으로 표현할 수 밖에 없었다.


COBOL의 어머니 그레이스 하퍼

'그레이스 하퍼' 라는 분의 이름을 못들어본 분이 있을지언정

'버그'라는 단어를 안쓰는 프로그래머는 없을 것이다.

 

버그는 에디슨이 자신의 저서에서 언급한 이후 지속적으로 문제에 대하여 사용되어 왔지만

실제로 '버그'가 버그임을 실증해낸 것은 이 그레이스 하퍼 장군이다.

 

그녀는 2차 세계대전 당시 수학자(당시 교수)의 신분으로 미 해군 예비군에 등록한다.

이후 함정국에서 탄도 계산에 참여하던 그녀는 하버드 대학과 진행하던 전산 프로젝트에 배치되었고

이 과정에서 프로그래밍을 처음 시작하게 된다.

컴퓨터를 접한 이후, 프로그래밍 언어와 컴파일러 개발에 매진한 그녀는

COBOL이라는 역작을 만들어 내고 그 과정에서 버그를 실증해내기도 한다.

 

그렇게 그녀는 여성 프로그래머로서는 두번째로 유명한 인물이 되고, 

그녀가 만든 COBOL은 그녀가 돌아가신지 30년이 지난 지금도 작동되고 있다.

 

 

 

 

 

이렇게 이번 글에서는 초기 하이레벨 언어 쌍두마차 Fortran과 Cobol을 알아보았다. 

다음 글에서는 Algol, Pascal 그리고 C언어에 대하여 다뤄볼 예정이다.

728x90