강좌 & 팁
안녕하세요. 조형기입니다.
몇가지 좋은 소식으로 글을 시작하겠습니다.
제가 올해 5월에 한국에 가게 되었습니다. 5월 14일부터 25일까지 2주간 꿈 같은 휴가를
가지게 되었습니다. 모든 원인은 저의 자전거 트랙킹 논문이 ICRA라고 하는 로봇 컨퍼런스에
억셉이 되어서요, 상하이를 가게 되었거든요. 그래서 내친 김에 한국에 가기로 결정하였습니다.
적당한 날을 잡아서 falinux에 당연히 놀러가야 겠지요. 개발자님들 만나보고 싶네요.
자 그럼 각설하고....
컴퓨터 언어에 역사에 대해서 학부 3학년 때 공부한 기억에 납니다. 도서관에 꽤 오랫동안
파무쳐서 컴퓨터 프로그래밍 랭귀지가 어떻게 생겨나고 발달했는지를 공부했던 기억이 나네요.
그렇습니다. 저는 원래부터가 역사에 관심이 많은 놈입니다. ㅋㅋ
그때 당시 저는 C++을 공부하고 있었는데요, 객체 지향 언어라는 것이 어떻게 프로시저 지향 언어와
다르고 왜 그렇게 디자인 되었는지에 대해서 관심이 시작되었구여... 그러다가 역사로 가게 되었지요.
최초의 컴퓨터에는 어떤 프로그래밍 언어를 사용했을까요 ? 그렇지요. 머신 코드(Machine language)를
사용했지요. 그때는 프로그래머가 극도로 전문가였죠, 즉, 컴퓨터 과학자들 이었죠. 그들은 그들이
설계한 이진 코드, 즉 머신 코드를 사용하여 프로그램을 작성하였었죠.
최초의 컴퓨터인 하워드 에이켄 (Howard Aiken)의 Harvard Mark I 이나 에커트 와 모클리의 에니악 (ENIAC)
등의 컴퓨터가 그 대표적인 예가 되겠지요. 1944년 ~ 1946년의 이야기이지요.
그 다음 머신코드를 프로그램의 작성하는 것이 극도록 피곤한 작업임을 안 과학자들은 니모닉을 사용하여
프로그램을 작성하는, 어셈블리 언어 (Assembly language) 를 만들게 되었습니다. 이것으로도 프로그래밍
속도가 많이 향상되었겠지요. 보통 이 두가지 언어를 로우 레벨 랭귀지라고 하지요.
최초의 하이 레벨 언어의 애호가는 그레이스 호퍼(Grace Murray Hopper) 입니다. 그녀는 Mark I 컴퓨터에서
작업을 하였었는데, 서브루틴들을 라이브러리로 만드는 아이디어와 디버그 라는 말을 만들어낸 장본인
이지요. 그리고 그녀는 A-0라는 최초의 컴파일러를 만들었습니다. 나중에는 1959년 , 미 국방성과 계약하고
COBOL 언어를 개발하였습니다.
최초의 성공적인 하이 레벨 컴퓨터 언어는 포트란이라고 알여져 있습니다. 1954년 개발되기 시작하여
1957년에 공식적으로 발표된 이 언어는 IBM의 존 박쿠스(John Backus)와 그의 역사저인 팀에 의해서
만들어 졌습니다. (IBM 704 메임프레임을 위해서). 이 성공적인 프로그래밍 언어는 그 후에 프로그래밍
언어에 엄청난 영향을 끼쳤습니다.
1960년에 다트머스 대학의 존 케메니(Jone Kemeny) 와 토마스 커츠(Thomas Kurtz)가 BASIC 언어를 개발하였지요.
저는 1992년도 정도에 열심히 BASIC을 사용하여 그래픽 프로그램을 작성하였던 기억이 있습니다. 초등학교때죠.
그리고 중요하게, 1970년에 Bell Lab의 데니스 리치 (Dennis Ritchie)에 의해 C 언어가 개발되었습니다.
켄 톰슨의 유닉스 OS를 PDP-7 에서 PDP-11 으로 포팅하는 가운데, 그들은 C언어를 사용하기로 하였었죠.
성공적으로 unix 를 C언어로 포팅하여 컴퓨팅의 또 하나의 중요한 이벤트가 되었죠. 당시는 OS를 하이 레벨
랭귀지로 작성한다는 것 자체가 새로운 시도였으니까요, 혁신적인 일이지요. (지금 우리가 생각하면 당연한
것이지만요, 애초부터 당연한 것은 없습니다. 누군가의 끈질긴 연구와 노력으로 우리가 당연하게 생각하는
것이지요. 애초에는 모든 것이 불분명하고 애매합니다. ㅎ)
자, 약간 방향을 틀어서, C언어가 성공적으로 사용되고 포트란이나 C언어, 즉, 프로시저 지향 컴퓨터 언어를
사용하여 산업이 발정하기 시작하였습니다. 모든 산업 기반이 전산화가 되고 모든 사회의 서비스들이
컴퓨터를 이용하기 시작하면서 프로그래밍의 수요는 폭발하기 시작하였습니다. 1970년대 1980년대를 거치면서
좀 더 일반적으로 말하여, 소프트웨어에 대한 수요는 폭발적으로 증가하였습니다. 물론 C, Fortran등의 절차
지향 언어가 어셈블리어 언어 보다는 생산성이 크게 좋지만, 그래도 소프트웨어의 수요를 따라가기
역부족인 사태가 발생한 것이지요. 이를 80년대의 '소프트웨어의 위기'라고 표현을 사용합니다.
이런한 소프트웨어의 위기를 극복하기 위해서 과학자들은 또 프로그래밍의 생산성을 극도로 향상시킬 수
있는 방법을 고안합니다. 이것이 바로 객체 지향 언어의 패더다임의 등장 배경입니다. 기존의 c나 fortran처럼
기술에 의해 드리븐 된 것이 아니라 산업의 수요에 의해 개발된 것이지요. 이것을 이해하는 것이 참 중요하다
고 생각합니다. 그래서 C++ 이나 자바 등등이 나온 것이지요. 파이썬과 같은 맥락이구요...
빅 픽처를 위해서 언어 역사에 대한 그림을 첨부하면서 글을 마감하여고 합니다.
컴퓨팅의 역사에 대한 글을 3편 써는데요, 저는 개인적으로 참 좋아하는 글들입니다. ㅋ
다음에는 로봇의 역사에 대한 글을 쓰려고 합니다.
감쏴~