직업은 선물 트레이더

프로그래밍 언어의 세대 구별방법

잊어버린 과거

우리가 평소 사용하기로는 '세대'라고하면

이전의 세대가 더 안좋다거나 오래되었다거나 하는 의미로 사용되지만,

컴퓨터과학분야의 프로그래밍 언어에서의 '세대'란

단순히 조금더 나중에 개발되거나 혁신적인 개념이 개발되어 이전의것과 단순히 '구분'되는 역할만을 합니다.

그러니 이전의 것이 안좋다는의미는 포함되지않는 '세대'의 단어 사용이라고 할 수 있겠습니다.


1세대 언어

컴퓨터는 0과 1로만 작동하도록 되어있습니다. 전기가 들어오면 1, 안들어오면0이 되겠죠.

0과1이 표현 가능한 이진수를 여러자리 묶어 숫자를 표현하기도하고 문자를 표현하기도합니다. 프로그램들이 전무 0과 1로만 구성되어있으므로, 프로그램을 만드는 프로그래밍 언어에서도 비켜갈 수 없는 요소입니다.


여기서 이제 0과1로 만들어진 프로그램을 짜기 위해선, 프로그래머는 책자나 이런것을 보면서 사람이 알아들을 수 없는 숫자들의 입력으로 프로그래밍을 했습니다. 예를들어 4번 레지스터에서 5번 내용을가져와라 같은 단순히 기계수준에서 할 수 있는 명령들이 전부이고 이것은 이진수로 나타내게되고 길이가 길기 때문에 이 작업은 상당히 까다롭고 지치는 작업입니다. 이것을 우리는 이제 기계가 알아들을 수 있는 언어다 라고해서 '기계어'라고 부릅니다. 



2세대 언어

1세대 언어는 너무 복잡하고 오류를 잡아내기도 쉽지가 않습니다. 때문에 어떠한 의미를 나타내는 이진수의 집합을 하나의 문자로 나타내기 위한 시도를 합니다.


00000001 00000101 00000110 00001100 과 같은 기계어를 이제 문자로 쓰려고 시도합니다. 그럼 위와같이 길고 복잡한 작업이 Load R5, glass 와같이 짧아지게 됩니다.

이는 그당시 상당히 혁신적인 언어로 생각되어 2세대 언어로 분류되었습니다. 문법은 영어권나라에서 만들어진만큼 영어식을 따르는편이죠 아무래도. Load 해라 R5의 데이터를 glass 에다가. 이런식입니다.


3세대 언어

3세대 언어의 큰 특징이라면 이제 2세대까지 존재했던 기계와 관련된 명령인 레지스터에 로드하라, 어디서 무얼 불러와라. 이런식의 기계와 직접적으로 관련된 명령이 아니라는 점입니다.

예를들어 2세대 언어에서는 못쓰던 다음과같은 명령어들을 사용할 수 있습니다. A = R+E 같은거 말이죠. 의미는 변수 A에다가 R에담긴값과 E에담긴값을 더하여 A에 넣으세요 라는 명령입니다.

이런 명령어들은 여러개의 2세대 언어의 조합으로 만들어 지는 쓰기에는 안복잡하지만 내용은 복잡한 명령어 입니다.


이후세대의 언어에 관하여서는 여기서 언급드리지 않겠습니다;; 이후 언어들의 주요 요점은 3세대 언어에서 보여준 고급단어사용으로 이제 컴퓨터와 대화가 가능하지 않을까 혹은 컴퓨터에게 생각을 시킬 수 있진 않을까의 생각까지 미치고 있다는 것 밖에 모릅니다 사실 ㅠㅠㅠㅠㅠ