뻘짓 하며 얻은 기본기 6 컴퓨터 언어의 기원
프로그래밍 언어란 컴퓨터가 계산할 수 있도록 돕는 언어이다.
위 그림은 자카드식 문직기 라고 한다. 왜 컴퓨터 언어를 설명하는데 제일 먼저 등장하냐 하면 이게 프로그래밍 언어의
기원이라고 한다. 자카드 직기가 무엇이나면 식탁보에 있는 레이스 같은 천을 보면 다양한 패턴이 있다.
이런 패턴을 예전에는 직접 손으로 만들다가 베틀같은 것을 이용하여 제작하였다. 그런데 복잡한 패턴같은 것을
만들려면 날실을 구성하는 수백개의 실들 중 수십개를 손으로 고르고 들어올려 만들어야 했다.
이를 돕기 위해 천공카드가 등장. 이러한 부분들을 구멍뚤린 카드인 천공카드를 이용하여
실을 넣고 패턴을 유지했다. 패턴에 맞는 실을 짜려면 천공카드들의 구멍이나 순서가 중요했고
천공카드의 배치나 구멍의 배치가 패턴의 다양화에 따라 발전하였다.
초창기의 컴퓨터는 0과 1을 구분하여야 했고 천공카드에 구멍을 뚫고 이를 읽어서 0과 1을 구분하였다.
천공카드에 구멍을 뚫는 행위가 오늘날 하드디스크에 데이터를 쓰는 것과 비슷하려나?
아무튼 이처럼 컴퓨터는 천공카드를 읽어서 연산처리를 하였는데 이러한 천공카드를
순서대로 읽어야 했고 자카드식 문직기의 천공카드처럼 구멍의 패턴이나 배치가 중요했다.
그것들이 모이면 하나의 연산이 가능했기 때문에 천공카드를 뚫고 배치하는 것이 바로
프로그래밍의 언어의 기원인 것이다.
최초의 프로그래밍 언어는 Plankalkül,에니악 코딩 시스템 과 같이 1940 대에 나왔다고는 하는데
현대식 프로그래밍 언어로는 1950년 정도 되어야한다. 위 그림은 그 현대 프로그래밍 언어의 3대장인
포트란(1954) 리스프(1958) 코볼(1959) 을 보여준다. 위 언어들이 중요한 이유는
각각이 현대 프로그래밍 언어에 직접적인 영향을 주었기 때문이고, 목적에 따라 언어의 탄생이 다르기 때문이다.
깊게 설명하기 시작하면 끝도 없는 부분이지만 간단히 설명하자면
포트란은 IBM에서 과학 계산을 하기위해 시작된 언어이다. 따라서 과학계산에 특화되어있다
연산같은건 c보다도 빠르다.
리스프는 대표적인 함수형 언어이며 괄호를 사용하는 문법으로 유명하다.
그리고 코볼은 다른 언어와 다르게 일반 업무에서 사용할 목적으로 만들어졌고 실제로 미국 정부에서
사용했다고 한다. 따라서 지금도 오래된 증권사 같은 시스템에는 코볼로 짜져 있어서
코볼 개발자를 육성하기 위해 도제방식으로 개발자를 양성한다는 컴퓨터공학식 유머 또한
전해내려오고 있다. (유머가 아닐꺼다.)
그리고 한참뒤에 나온 C (1972) 이 언어는 컴퓨터를 제어하기 위해 B언어의 특성을 물려받아서
C라는 언어가 되었다고 하는데 최초의 C 컴파일러는 어셈블리어로 쓰였다고 한다.
근데 뒤늦게 나온 C가 왜 컴퓨터 언어의 중심인 것 처럼 보일까?
당시에는 어플리케이션이 아닌 운영체제를 어셈블리어가 아닌 언어로 작성하는 것은 금기였다고 한다.
항상 체제를 무너뜨리게 되면 역사에 남는거 같다. C는 그 금기를 어기고
고수준 언어로 운영체제를 작성하는데 시도했고 발전하여 오늘날의 c 언어의 입지를 만들었다.
이는 컴퓨터 평균 성능을 놀랍도록 발전시켰다고 하고 운영체제 역시 효율성이 초기와 비교도
안되게 좋아졌다고 하니 왜 지금까지도 C가 컴퓨터 교육에 기본이 되는지 알만도 하다.
우리가 대게 들어본 C++ , JAVA, Python, C#은 모두 c에 영향을 받은 언어들이다.
물론 목적이 아예 다른 SQL 같은 언어도 존재한다.
데이터 베이스 스스템의 자료를 처리하기 위해 만들어진 목적부터 다른 언어이고
간단히 쿼리형 언어라고 한다. 쿼리는 다음에 공부하도록 하자.
하지만 여기서 C++과 JAVA같은 친구들은 왜 유명한 걸까? 단순히 C의 자식이라서?
바로 여기서 부터 객체지향이라는 개념이 등장하기 때문이다.