-
프로그래밍의 시작
컴퓨터는 1946년 에니악을 최초의 컴퓨터로 시작되었다.
에니악은 한쪽 벽면을 가득 채운 상자들이었고, 당시의 프로그래밍은 연구원들이 약 6000개의 전기 케이블의 배선을 바꾸는 것으로 이루어졌다. 에니악은 당시에는 뛰어난 계산 능력을 가지고 있었지만, 뜨거운 진공관을 식히기 위해서는 매일 반나절은 운영을 멈춰야 했고, 무엇보다 프로그램을 교체하려면 6000개의 배선을 교체해야 하는 문제가 있었다.
에니악은 1951년 존 폰 노이만의 손을 거쳐서 에드박으로 다시 태어났다.
에드박은 중앙처리장치, 기억장치, 프로그램, 데이터로 이루어진 슈퍼 컴퓨터부터 스마트폰에 이르기까지 현존하는 모든 현대 컴퓨터의 조상이 됐다.
하지만 에드박 이후에도 1950년대까지는 한동안 하드웨어를 중심으로 발전했고, 프로그래밍 방식은 여전히 0과 1의 비트로 구성되는 기계어를 조합하여 프로그램을 작성하는 수준에 머물러 있었다. 예를 들면
' 앞으로 가 ' 라는 명령을 내리려면
' 허리를 바로 세우고 왼팔을 앞으로 내저으며 오른팔을 뒤로 내저어라. 동시에 몸의 중심을 .... '
이런 식으로 해야하는 모든 동작을 알려줘야하는 셈인데 컴퓨터는 이렇게 세세하게 지시해주지 않으면 아무것도 하지 못한다. 이런 점을 역으로 이용하여 개발된 프로그래밍 언어가 바로 어셈블리어(Assembly) 이다.
어셈블리어
어셈블리어는 복잡한 기계어 명령을 사람이 이해할 수 있는 기호나 단어로 바꿔 만들었다. 예를 들어서
' 01001100 00001000 ' 같은 기계어 명령어를 어셈블리어에서는 'MOV' 라고 하면 된다.
훨씬 간결하고 이해도 쉬워졌다. 물론 컴퓨터는 'MOV' 라는 명령어를 전혀 이해하지 못한다.
컴퓨터는 오직 0과 1만 알아듣기 때문이다.
그래서 이 어셈블리어는 일종의 번역 과정을 거쳐서 컴퓨터가 이해하는 기계어 코드로 변환된다.
이것을 컴파일(Compile) 이라고 한다. 프로그래머가 어셈블리어로 프로그램 코드를 작성한 후에는 컴파일러라는 소프트웨어를 이용하여 실행 파일을 만들어내는데, 이 실행 파일이 바로 프로그램이다. 어셈블리어처럼 프로그램을 작성하기 위해 만들어진 인공 언어 체계를 '프로그래밍 언어' 라고 한다.
포트란의 탄생
1948년, 컴퓨터는 기술적으로 그 발명에 비견할 만한 도약을 하게 된다. 트랜지스터가 등장하면서 진공관의 종말을 고했고 곧이어 수천, 수만 개의 트랜지스터를 하나의 칩에 집적한 마이크로 칩이 발명되면서 컴퓨터는 급속도로 발전해 나갔다.
성능은 빠른 속도로 향상됐고 가격을 빠른 속도로 하락했다. 컴퓨터의 보급도 빨라졌다. 컴퓨터 시장이 확대되면서 많은 돈이 컴퓨터 산업계에 유입됐고, 이 돈은 다시 더 향상된 컴퓨터를 개발하기 위한 연구에 투입됐다.
이때만 해도 가정에 컴퓨터가 보급되는 일은 몇 사람을 제외하면 누구도 상상하지 못했지만, 컴퓨터가 널리 보급되고 사람들은 더 많은 업무를 컴퓨터로 해결하고 싶어졌다.
그런데 여기서 문제가 발생했다.
필요한 프로그램은 늘어가는데, 아무리 똑똑한 프로그래머라고 해도 기호와 다름없는 어셈블리어로는 그 프로그램을 빠르게 만들 수가 없었다.
여기서 어셈블리어를 잠깐 살펴보자면 5+1 식을 계산하는 코드는 다음과 같다.
Data var1 DWORD 1 var2 DWORD 2 .code mov eax, var1 add eax, var2
언어가 이렇게 어려우니.. 프로그래밍 자체가 전문 과학자나 아주 똑똑한 사람들의 전유물이었다.
하지만 존 배커스가 IBM에 입사하자마자 당시 한창 개발 진행 중이던 일종의 어셈블리어 번역기인 스피드 코딩 프로젝트에 참여했다. 그리고 1957년, 스피드 코딩 프로젝트 경험을 기반으로 사람의 언어에 가까운 최초의 프로그래밍 언어인 '포트란' 과 컴파일러를 개발했다.
포트란으로 위의 식을 쓰면 다음과 같다.
a = 5 + 1
이부분은 마치 우리가 현재 사용하는 언어들과 견주어도 손색이 없다. 이러한 포트란의 성공은 다른 컴퓨터 과학자들을 자극했고, 이후 이들에 의해 1천여 가지가 넘는 프로그래밍 언어들이 탄생하고 또 사라져갔다.