infatuation

누가 소프트웨어의 심장을 만들었는가? 본문

Study

누가 소프트웨어의 심장을 만들었는가?

화령 2011. 3. 2. 13:49
광야의 외침: 선지자의 시대

Alan Turing(1911~1954) : 현대 컴퓨팅의 아버지 

컴퓨터의 실체가 존재하지 않았던 20세기 초반, 대부분의 사람들은 특정한 일이나 계산을 자동으로 수행하는 기계를 만들려면 매번 그에 맞는 새로운 기계가 필요하다고 생각했다. 그리고 그들을 동작시키려면 기계 외부의 스위치나 버튼, 선, 천공 카드 등을 조작하여 기계에게 명령을 내려야 한다고 가정하였다. 1930년대, 겨우 20대였던 앨런 튜링은 현대 컴퓨터와 프로그램이 동작하는 원리가 설명된 추상적인 수학 모델을 세상에 내놓았다. 그것이 바로 '튜링 머신(Turing Machine)'이다. 그 결과 존 폰 노인만(John von Neunman)을 비롯한 과학자들은 수많은 계산 방식을 자동으로 수행하는 디지털 컴퓨터의 핵심에 접근하게 되었다.

튜링 머신 시뮬레이터, 존 폰 노인만식 컴퓨터 아키텍처를 설명한 보고서, 컴퓨팅 기계와 지능, 뢰브너상, A.L.I.C.E


Vannevar Bush (1890~1974) : 컴퓨터를 사용한 인류 지식의 확장

20세기 초반, 에니악과 같은 초창기 컴퓨터들은 엄청난 비용을 들여 개발되었고 더군다나 크기도 거대했기 때문에 주로 국가나 기업의 툭수한 목적으로 활용되었다. 일반 개인들이 사사로운 일과 업무를 처리하기 위해 그런 거대한 컴퓨터를 사용한다는 것은 상상할 수 없었다. 배니바르 부시는 인간의 지능과 기억을 보완하고 개선할 수 있는 개인용 컴퓨터 시스템인 메멕스(Memex)를 수미터 높이의 거대한 1세대 컴퓨터들 앞에 당당히 내놓았다. 이후 부시의 비전에 심취한 뛰어난 과학자들 덕분에 우리는 지금 개인용 컴퓨터 앞에서 사무를 처리하며, 웹 브라우저를 통해 전 세계의 정보를 검색할 수 있게 된 것이다.

우리가 생각하는 것처럼(As We May Think), 마제스틱 21, 세계 최초의 위키, MyLifeBits


Ivan Sutherland (1938~) : 컴퓨터와 인간의 그래픽 대화

텍스트 기반 운영체제인 MS-DOS를 썼던 사용자들은 지금의 GUI 환경이 얼마나 편리한지 설명하지 않아도 알 것이다. 화면에 나열된 정교하고 예쁜 아이콘을 마우스로 누르면 컬러풀한 프로그램이 나의 손이 움직이기를 기다린다. 이반 서덜랜드는 컴퓨터와 인간 사이에 그래픽이란 중간 매개체를 놓았다. 그 덕분에 우리는 정밀한 하드웨어 덩어리를 예쁘게 사용하고 있다.

스케치패드


Douglas Engelbart (1925~) : 마우스 그 이상의 발명

컴퓨터 마우스를 최초로 개발한 과학자다. 그가 쌓은 다른 중요한 업적들은 그 빛에 가려 잘 보이지 않아 오히려 과소평가되는 면이 없지 않다. 마우스와 하이퍼텍스트의 만남, 혁명적인 GUI는 1968년에 수백여 명의 청중을 깜짝 놀래킨 바로 '그 데모(The Demo)'로부터 시작되었다.

회고록, 인간의 지능을 확장시키기: 개념적 프레임워크, 21세기에 조직을 스스로 부흥시키기 위한 전략적 프레임워크, SRI


Richard Stallman (1953~) : 자유 소프트웨어의 깃발

지금은 바야흐로 오픈 소스의 시대다. 리눅스를 필두로 아파치, MySQL과 같은 놀라운 성능의 오픈 소스들은 독점 소프트웨어의 횡포에서 우리를 자유롭게 해준다. 리처드 스톨만은 기업의 독점 재산권으로 묶여 있는 소프트웨어에게 자신이 정의한 '자유'를 부여하려는 혁명 전사다. 그가 내세운 '자유 소프트웨어'의 기치로 말미암아 전 세계의 프로그래머들은 수많은 양질의 소프트웨어의 내부를 누구나 들여다보고 이용할 수 있게 되었다.

자유 소프트웨어 재단, 왜 자유 소프트웨어가 오픈 소스보다 좋은가?, 성당과 시장, GNU, OSI, MIT 인공지능 연구소, 한국 오픈 소스, 자유 소프트웨어 사이트, 이클립스 프로젝트




프로그래밍의 풀무질: 장로들의 대활약

Dennis Ritchie (1941~) : C 언어의 아버지

오늘날 가장 많이 사용하는 컴퓨터 언어는 무엇일까? 컴퓨터 언어의 보통 명사처럼 되어버린 C 언어를 부정하는 사람은 없을 것이다. 작은 핸드폰에서 가전 제품, 의료 기기, 개인용 컴퓨터, 워크스테이션, 심지어는 우주로 여행을 떠나는 우주선까지 C 언어를 이용하지 않는 경우는 보기 힘들다. 데니스 리치와 그의 충실한 친구 켄 톰슨(Ken Tompson)은 유닉스를 만들다가 우연히 이 희대의 언어를 만들었다.

멀틱스, C 언어의 개발


Edsger W. Dijkstra (1930~2002) : 구조적 프로그래밍의 발견

goto 문이 프로그래밍의 강력한 도구로 사용되던 시절이 있었다. 언제 어디서든지 프로그램의 진행 흐름을 자유롭게 옮길 수 있는 매력에 혹한 개발자들에게 그 뒤편에 숨겨진 어둠을 드러낸 다익스트라는 "goto 문장은 해롭다"라는 에세이 한편으로 구조적 프로그래밍의 새벽을 밝혔다.

구조적 프로그래밍에 대한 단상, 무엇이 구조적 프로그래밍에 대한 단상이란 글을 쓰게 만들었는가?


Alan Kay (1940~) : 객체 지향의 완성자

"미래를 예측하는 가장 좋은 방법은 직접 미래를 만드는 것이다." 엘런 케이는 자신이 뱉은 이 말을, 삶에서 직접 입증하였다. 그는 노트북과 타블릿의 원형에 해당하는 아이디어를 제시했고 현재 프로그래밍 패러다임의 주류인 객체지향 프로그래밍을 완성하였다. 그에 대한 공로로 2003년에 튜링상을 수상하였다.

어떻게 객체지향 프로그래밍이 시작되었는가?, 스몰토크에 숨겨진 설계 원리, Smalltalk, Squeak(한국), Viewpoint Research


James Gosling (1956~) : Java의 아버지

자바가 대성공을 거둔 건 결코 우연이 아니다. 1995년도에 웹이 폭발적으로 확산되는 틈 속에서 치열한 프로그래밍 정글에 무혈 입성한 언어라는 소수 일각의 평은 제임스 고슬링과 그 일원들이 겪은 고난의 행군을 무시한 무지의 결과다. "정녕 두드리면 열릴 것이다." 자바는 웹이 출현하기 훨씬 이전부터 네트워크 컴퓨팅의 불확실한 미래를 향해 끊임없이 발길질했던 선구자들에게 내려진 보상이며, 앞으로 다가올 유비쿼터스 세계의 서곡이다.

자바의 역사




소프트웨어 개발의 정글 탐험: 은총알을 찾아서

Frederick P. Brooks, Jr. (1931~) : 인간의 편에 선 소프트웨어 공학

개발 기간이 지연되는 소프트웨어 프로젝트의 관리자가 있다. 그는 원래 의도한 날짜에 프로젝트를 마치기 위해 더 많은 인력을 추가했다. 그 결과는 어떻게 되었을까? 지금도 수많은 프로젝트 관리자가 고민하고 있는 이 질문에 대해 프레더릭 브룩스는 이미 1975년에 답을 했다. 그 답은 소프트웨어 공학이 필요하고 유용하다는 것이고, 그는 이 사실을 널리 인식시켰다.

은총알은 없다, '은총알은 없다'를 재고하며, SWEBOK


Watts S. Humphrey (1928~) : CMM 제국의 황제

이제 우리나라에서 ISO 9000이라는 단어를 들어 보지 못한 사람은 거의 없을 것이다. 그만큼 먹고 살만한 단계를 넘어선 후의 핵심 이슈는 바로 '품질'이다. 와츠 험프리는 소프트웨어 및 시스템을 개발하는 회사의 품질 관리 기준과 개선 시스템을 '프로세스'의 관점에서 확립하였다. 그 결과, 미국뿐만 아니라 전 세계의 소프트웨어 개발 회사들이 프로세스 개선에 관심을 집중하게 되었다.

CMM, CMMI, CMM의 역사


Erich Gamma (1957~) : 디자인 패턴의 보급자
권투 도장에 막 들어온 신참내기는 스파링 때마다 지기만 한다. 그는 선배의 비밀 노트를 열어 본다. 거기에는 상대방의 주먹을 피하는 패턴, 훅을 날리는 패턴 등이 나열되어 있었다. 그는 드디어 1승을 올리게 된다. 소프트웨어 개발자들은 설계라는 전투에서 항상 고전한다. 에리히 감마는 그들에게 디자인 패턴이라는 강력한 무기를 만들어 손에 쥐어 주었다.


Grady Booch, Ivar Jacobson (1938~), James Rumbaugh : RUP와 UML의 아버지 

세 명의 아미고(Amigo, 스페인어로 친구라는 뜻)인 그래디 부치, 이바 야콥슨, 제임스 럼바우는 자신들이 만든 객체지향 개발 방법의 노하우를 UP(Unified Process)라는 이름으로 융합했다. 수많은 프로젝트의 경험을 기반으로 좋은 개발 원리와 지침들을 집합해 놓은 UP는 소프트웨어 개발 방식의 표준처럼 받아 들여졌다. 또한 그들이 제시한 UML이란 모델링 언어는 소프트웨어 개발뿐만 아니라 비즈니스 분석에 이르기까지 널리 쓰이는 소프트웨어 산업계의 모델링 표준 언어가 되었다.


Kent Beck (1956~) : Agile 방법론의 선봉, XP의 창시자

요즘 들어 리팩토링(Refactoring), xUnit을 사용한 단위 테스팅, 테스트 주도 개발 방법에 대한 관심이 높다. 이들의 인기는 디자인 패턴의 씨앗을 뿌리 보헤미안 프로그래머, 켄트 벡이 주창한 XP 개발 방법론의 인기와 맞물려 있다. XP는 기존의 대형 방법론이 놓치고 있던 개발 지혜들을 통합하여 가볍고 민첩한 애자일 방법론(Agile Methodology)의 시대를 열고 있다.




네트워크의 혁명: 새로운 황금시대


Vinton G. Cerf (1943~) : 인터넷의 아버지, TCP/IP의 개발자

인터넷이 없는 세상은 상상할 수 없다. 이제 논문을 찾으려고 에이전시를 섭외하여 비싼 돈을 지불하며 몇 주 동안 기다려야 하는 상황은 없다. 빈톤 서프는 서로 다른 네트워크 사이에 다리를 놓았다. 그것은 '인터넷'이라는 네트워크의 접착제가 되었다. 전 세계의 네트워크가 연결되어 데이터가 오고 갈 수 있는 길을 터놓은 그는 배니바르 부시의 놀라운 비전이 심겨질 토양을 개척하였다.


Tim Berners-Lee (1945~) : World Wide Web의 아버지

월드 와이드 웹이 등장하면서 소수의 학계나 산업계에서 연구 목적으로 사용되던 인터넷은 완전히 대중화되었다. 웹을 사용하여 하이퍼링크 방식으로 전 세계에 산재되어 있는 멀티미디어 정보를 실시간으로 손쉽게 검색할 수 있게 된 것은 인류 역사에 있어서 중요한 의미를 갖는다. 개인이나 국가, 메이저 언론이 정보를 독점하는 시대는 무너지고 일반 개인들이 정보 시장에 독립적인 주체로서 활동하는 시대가 온 것이다. 팀 버너스 리가 아이디어를 낸 월드 와이드 웹은 인터넷 위의 조그만 서비스로 시작했지만 지금은 인터넷 자체를 상징하는 표식이 되었다.


Marc Andreesen (1971~) : 웹 최초의 킬러 애플리케이션 개발자

위대한 업적의 뒤에는 대부분 두 종류의 사람들이 있다. 비전을 제시하는 사람과 그것을 구현하는 사람이다. 배니바르 부시가 주장한 메멕스의 비전을 더글러스 엥겔바트가 NLS를 만들어 부분적으로 구현하였다. 그리고 팀 버너스 리에와서 가시화 되었지만 마무리가 아쉬운 때에 한 대학생이 홀연히 나타나 결정적인 한방을 날린다. 마크 앤드리슨은 누구나 손쉽게 사용할 수 있는 웹 브라우저를 만들어 월드 와이드 웹을 대중화시켰다.



<박지훈, 누가 소프트웨어의 심장을 만들었는가, 한빛미디어, 2005>에서 발췌