'김창준'에 해당되는 글 2건

  1. 2008.12.08 [펀글] 허버트 사이먼- 김창준 by 당신은 천하보다 귀중합니다. av930
  2. 2008.12.03 영어? 넌 도대체 뭐냐? 난 프로그래밍이 하고 싶을 뿐이고... by 당신은 천하보다 귀중합니다. av930
김창준김창준 juneaftn@hanmail.net

현재 애자일컨설팅 대표로 있으며 주로 소프트웨어 개발 조직의 생산성과 인간성 모두를 증진하기 위해 컨설팅, 코칭, 교육 등을 하고 있다. 애자일이야기(http://agile.egloos.com)라는 블로그를 운영중이다.

2008년 4월 22일


[편집자 주] 이 글에서 출처를 표기하지 않은 사진은 모두 위키백과(http://en.wikipedia.org)에서 가져온 것입니다.

우리는 각기 다른 분야를 칸을 나눠 공부한다. 그러다가 우연히 그런 분야들을 관통하는 주제나 인물들을 만나고는 지식이 서로 하이퍼링크로 연결되는 느낌을 받게 되는데, 이 하이퍼링크의 느낌이야말로 진정 공부하는 즐거움 중 최고라고 할만하다. 모아두었던 구슬들이 꿰어져 예상 못한 목걸이가 만들어지는 느낌이라고나 할까. 이런 경험을 몇 번 하다 보면 어느 순간 전체적인 그림을 조망하는 눈을 갖게 되기도 한다. 안타깝지만, 때로는 학교 교육을 통해 감쪽같이 속았다는 느낌을 받기도 한다. 철학의 데카르트랑 수학의 데카르트 좌표의 데카르트가 같은 사람이었단 말이야?

컴퓨터 분야에도 이런 연결고리가 많이 있다. 이번 글에서는 주로 컴퓨터 분야 안에서의 목걸이 하나를 살펴보겠다. 구슬 중에는 이른바 허브라고 할만한 단골 손님들도 있다. 이 과목을 공부하다가도 만나고 저 과목을 공부하다가도 만나는 그런 사람인데, 필자에게는 허버트 사이먼(Herbert Simon)이 그런 존재였다(나는 사실 이 사람을 생각하면서 노스모크의 YouAreMySuperset 페이지를 만들었다). 아니 이 사람은 내가 공부하고 싶어하는 것들을 이미 모두 연구했다니!

하버트 사이먼
허버트 사이먼

이번 여정은 우선 테러리스트로부터 출발을 해보자. 시어도어 카진스키(Theodore John Kaczynski). 세간에 유나바머(Unabomber)라고 더 알려진 테러리스트다. 그는 기술의 진보가 인간을 망친다고 보고 수년에 걸쳐 여러 과학자와 사업가에게 폭탄 편지를 보냈고, 많은 사상자를 냈다.

그 중 하나가 데이비드 걸런터(David Gelernter)다. 그는 예일대의 전산학과 교수인데 1993년 유나바머가 보낸 폭탄 편지에 중상을 입는다. 다행히 목숨은 견졌으나 손과 눈에 치명적인 손상을 입게 되었다. 그는 터플스페이스(Tuple Space) 모델을 만들어 병렬 계산 쪽에 큰 기여를 했다. 터플스페이스는 일종의 병렬 프로그래밍 모델로 칠판 아키텍처(blackboard architecture, 자세한 내용은 POSA1 참고)와 비슷하며, 병렬/분산 프로그래밍을 상당히 단순화할 수 있다. 참고로 내가 생각하는 또 다른 돌파구는 파이프라인 아키텍처와 유사한 CSP(Communicating Sequential Processes)다. 참고로 이 CSP는 퀵소트의 아버지 토니 호아(Tony Hoare)가 만들었다. 썬의 공동창립자 빌 조이(Bill Joy, 자바의 실질적 아버지이자 vi 제작자이기도 하다)는 이 터플스페이스에서 영감을 받아 Jini, JavaSpaces를 만들었다.

토니 호아
토니 호아

빌 조이
빌 조이



위로


걸런터는 특히 현 PC에서 지배적인 책상 위 파일 메타포(예컨대 폴더에 어떤 파일을 넣거나 데스크톱으로 옮기는 등)와 다른 독특한 컴퓨터 메타포를 주창했는데, 그것이 라이프 스트림(Lifestreams)이다. 이 모델은 모든 것을 시간순으로 배열한다는 점이 특징이다. 이 모델은 여러분이 널리 사용하는 프로그램에 일부 들어가기도 했다. 걸런터의 학생 중 하나였던 에릭 프리만(Eric Freeman)은 그와 함께 터플스페이스, 라이프 스트림 등을 공동 작업했다. 그는 또한 "헤드퍼스트 디자인 패턴"이라는 책을 공저했다. 이 책은 오라일리의 헤드퍼스트 시리즈 중 하나로 인지심리학/교육학적인 접근법을 디자인 패턴 교재에 적용했고 상당한 성공을 거뒀다. 디자인 패턴은 소프트웨어 설계에서 반복적으로 발생하는 문제에 대한 해결책을 모은 것으로, 건축가였던 크리스토퍼 알렉산더(Christopher Alexander)의 패턴 언어에서 영향을 받았다.

에릭 프리만
에릭 프리만

크리스토퍼 알렉산더
크리스토퍼 알렉산더

알렉산더는 이제까지 나온 사람들과 마찬가지로 전형적인 천재다. 캠브릿지 대학에서 화학, 물리학, 수학을 공부하고 건축으로 학사, 수학으로 석사 학위를 받고, 하버드에서 건축으로 다시 박사 학위를 받은 다음 MIT에서 전산학, 교통이론(transportation theory)을 연구하고, 하버드에서 다시 인지학 연구를 했다. 그는 건축에서 자주 발생하는 문제 상황과 그에 대한 해결책을 묶어 하나의 패턴으로 만들고 다시 이 패턴들을 모아 패턴 언어를 만들었다. 그는 이 패턴 언어를 사용하면 집에서 살 사람과 그 집을 만드는 사람이 좀 더 긴밀하게 협력할 수 있다고 믿었다. 그의 책 The Timeless Way of Building을 대학 서점에서 선 채로 (몇 달에 걸쳐) 완독해 버린 전산학과 학생이 있었으니 그가 켄트 벡이었다.

켄트 벡
켄트 벡

켄트 벡은 이후 텍트로닉스(Tektronix)에서 워드 커닝햄이라는 멘토와 만나면서 패턴 개념을 컴퓨터 프로그램 설계에 적용해 보기로 한다. 여기에서 이른바 디자인 패턴 운동이 불붙게 되었다. 그와 커닝햄은 디자인 패턴 운동에 큰 기여를 하고 그 이후에 다방면에 걸쳐 놀라운 일들을 해냈다. CRC 카드(CRC는 워드 커닝햄의 막내 아들 이름의 두문자이기도 하다)라는 독특한 협업적 설계 기법을 함께 만들었고, 익스트림 프로그래밍의 씨앗을 얻기도 했다.

워드 커닝햄
워드 커닝햄



위로


켄트 벡은 익스트림 프로그래밍을 만들고 전파하면서 애자일 방법론이라는 소프트웨어 개발 방법론 학파를 구성하는 중심 인물이 되었다. 그는 최근 글에서 술회하길, XP의 씨앗이 된 것 중에는 톰 길브(Tom Gilb)의 사상도 포함된다고 했다.

톰 길브
톰 길브(사진 출처는 길브의 홈페이지)

톰 길브는 "이득이 큰 부분부터"(Juicy Bits First)라는 원칙을 만들었는데 애자일 방법론의 철학과 일치한다. 그는 1980년대부터 이러한 점진적 전달, 개발 방식을 주장해 왔다.

프로젝트에서 가장 이득이 큰 부분부터 전달을 한다면, 사람들이 꿈꿨던 모든 것을 제공하지 않는 것이나, 혹은 사람들이 희망하는 만큼 값싸고 빨리 제공하지 못하는 것에 대해 용서받을 것이다. --톰 길브

If you deliver the juiciest bits of the project first, you will be forgiven for not providing all they dreamt about, or for not doing it as cheaply and quickly as they hoped. --Tom Gilb

그는 현재 컨설턴트로 일하면서 그만의 애자일 방법론을 만들어 일하고 있고 전반적으로 애자일 방법론을 지지한다. 그와 초기에 많은 협력을 했던 사람 중 하나가 제럴드 와인버그(Gerald Weinberg)인데, 두 사람은 몇 번 책을 공저하기도 했고, 친구 사이기도 하다.

제럴드 와인버그
제럴드 와인버그 (사진 출처는 와인버그의 홈페이지)


와인버그는 아마 컴퓨터 프로그래머 사이에 가장 널리 알려진 컨설턴트일 것이다. 컴퓨터 역사 초기부터 여러 프로젝트에 참여했고(예를 들면 미국 최초의 우주선을 띄운 머큐리 프로젝트의 매니저 중 하나였다), 수십 권이 넘는 베스트 셀러를 출간했다. 그는 뛰어난 멘토, 선생으로도 유명한데 특히 프로그래머 교육 과정에서 루이스 캐롤의 "이상한 나라의 앨리스"와 "거울 나라의 앨리스"를 교과서로 사용했다. 한 인터뷰에서 가장 좋아하는 프로그래밍 책이 무었이냐는 질문에 그 두 권이라고 답하고, 다음 질문이었던 가장 좋아하는 비 프로그래밍 책은 뭐냐는 질문에 "상동"이라 답했다. 최초의 튜링상 수상자 앨런 펄리스(Alan Perlis)도 이 책을 추천한 바 있다.


일반인을 위한 프로그래밍 책 중 최고는 이상한 나라의 앨리스이다. 그 이유는 그 책이 어떤 주제에 대해서건 일반인을 위해서라면 최고의 책이기 때문이다. --앨런 펄리스

The best book on programming for the layman is Alice in Wonderland; but that's because it's the best book on anything for the layman. --Alan Perlis


제럴드 와인버그
앨런 펄리스(사진 출처는 버지니아 대학 컴퓨터 역사 사이트에서)

앨런 펄리스는 1965년 카네기 멜론 대학에서 허버트 사이먼과 함께 전산학과를 만든 바 있다. 허버트 사이먼은 튜링상과 노벨 경제학상을 모두 수상한 허브 중의 허브로 그가 연구한 분야는 인지심리학, 전산학, 행정학, 경제학, 경영학, 과학철학, 사회학 등이다.
이상한 나라의 앨리스 애호가들 사이에서 유명한 주석서로는 "The Annotated Alice"(번역본이 있다)가 있다. 와인버그도 인터뷰에서 이 책을 추천한 바 있다.


위로


이상한 나라의 앨리스
이상한 나라의 앨리스


그 책은 수학 저술가인 마틴 가드너(Martin Gardener)가 썼다. 그는 여러 가지 수학 퍼즐을 잡지에 연재했고, 그것들을 모아 책을 내기도 했다. 그는 사이언티픽 아메리컨(Scientific American)이라는 대중 과학 잡지에 수 년에 걸쳐 수학 퍼즐을 연재했는데, 그 잡지에 수학 퍼즐을 연재했던 또 다른 사람으로 데니스 샤샤(Dennis Shasha)가 있다.

마틴 가드너와 그의 Annotated Alice
마틴 가드너와 그의 Annotated Alice(사진 출처는 squaring.net에서)

샤샤는 전산학자로, 역시 퍼즐에 많은 관심이 있어서 잡지에 연재했던 문제들을 모아 몇 권의 책을 냈다. 최근에 낸 "Puzzles for Programmers and Pros"라는 책은 번역되기도 했다. 그는 초기에 특히 데이터베이스 쪽에 관심이 많았는데, 데이터베이스 쪽에 대한 기여로 튜링상을 받은 짐 그레이(Jim Gray, 지난해 바다에서 실종되었다)와 논문을 공저하기도 했고, 데이터베이스에 대한 책을 쓰기도 했다. 그의 이러한 전적 덕분에 도움을 받은 친구가 있었으니 아서 휘트니(Arthur Whitney)다. 두 사람은 친구 사이로 함께 논문을 쓰기도 했다.

짐 그레이
짐 그레이

아서 휘트니
아서 휘트니 (사진 출처는 vector)



위로


휘트니는 천재 프로그래머의 전형으로 K라는 언어를 만들었다. 그는 샤샤에게서 SQL이라는 언어에 대해 듣고 많은 관심을 갖게 되어 kdb(최근 비상업용 라이선스 버전이 공개되었다)라는 고성능 데이터베이스를 만들게 된다. 현재 이 시스템은 제이피모건, 모건 스탠리, 골드만 삭스 등 극단적 성능을 요구하는 금융계에서 널리 쓰이고 있다. 휘트니가 K라는 언어를 만들게 된 과정을 거슬러 올라가 보면 켄 이벌슨(Ken Iverson)과의 만남이 있다. 켄 이벌슨은 휘트니 아버지의 절친한 친구였다(두 사람 모두 하버드대학에서 수학을 공부했고 같은 고향 출신이다).

켄 이벌슨
켄 이벌슨(사진 출처는 ACM 사이트)

이벌슨은 휘트니가 11살 때(1969년) 그에게 APL이라는 언어를 보여주었다. APL은 기존 프로그래밍 언어와는 획기적으로 달랐다. 명령 하나가 하나의 글자에 해당했고(새로 만든 문자를 사용하기도 해서 APL 전용 키보드도 있었다), 모든 명령은 단수개나 복수개의 자료에 똑같이 적용되었다 -- 즉 반복문이 불필요했다. 휘트니는 큰 감명을 받았고 이후 1980년에 들어서 이벌슨과 함께 APL을 개선하는 작업을 했다.

그 작업 이후에 J 언어가 나왔다. 휘트니는 이 J 언어의 첫 번째 프로토타입을 구현했는데, C 언어로 한 쪽 분량이고 오후 몇 시간 동안(평균적 프로그래머가 이해하는 데는 적어도 며칠이 걸린다) 코딩해 나온 결과다. J 언어는 이벌슨, 로저 후이(Roger Hui), 아서 휘트니 등의 협력 작품으로 볼 수 있다. 유진 맥도넬(Eugene McDonnel)도 J에 많은 기여를 했다. 후이와 맥도넬은 모두 강한 수학적 배경을 갖고 있으며, 덕분에 에르되시 수가 2다. 맥도넬의 집은 휘트니의 집과는 걸어서 몇 발자국 거리였기 때문에 맥도넬이 K 언어 매뉴얼을 만들어 주기도 했다. 맥도넬은 컴퓨터 아키텍처로 유명한 존 헤네시(John Hennessey)와도 이웃이었다. 존 헤네시는 현재 스탠포드대의 총장이다.

로저 후이
로저 후이(사진 오른쪽, 출처는 vector)

유진 맥도넬
유진 맥도넬

존 헤네시
존 헤네시(사진 출처는 스탠포드대 사이트)

J는 튜링상 수상자였던 존 바쿠스(John Backus, 포트란과 BNF의 아버지)의 함수수준(function-level) 프로그래밍 패러다임을 계승했다. 휘트니는 J 이후에 다시 이를 개량해 K를 만든다. 이벌슨은 J나 K의 직계 아버지뻘인 APL에 대한 공로로 튜링상을 받게 된다. 이 이벌슨과 한 스승 밑에서 동학을 하던 친구 중에 또 다른 영웅이 있었으니, 그가 프레드 브룩스(Fred Brooks)다.

존 바쿠스
존 바쿠스

프레드 부룩스
프레드 브룩스 (사진 출처는 제프 서덜랜드의 블로그)



위로


사실 브룩스는 자신을 켄 이벌슨의 첫 제자라고 말하기도 한다. 그만큼 그로부터 많은 것을 배웠다. 브룩스는 소프트웨어 공학의 선구자적 인물로 역시 튜링상을 수상했다. 그는 IBM OS/360의 PM으로 널리 알려져 있다. 이벌슨은 이 OS/360의 스펙을 APL로 작성하기도 했다(두 사람은 Automatic Data Processing이라는 책을 공저했고, 그것이 APL을 만드는 토대가 되었다). 브룩스는 컴퓨터 공학 쪽의 최고의 베스트셀러 "맨먼스 미신"(The Mythical Man-Month, 지난해 번역본이 출간됨)의 저자이기도 한데, 그는 이 책을 통해 알려진 "브룩스의 법칙"으로도 유명하다. "늦어진 프로젝트에 인력을 충원하면 더 늦어지게 된다" 브룩스의 논문 심사 위원장(동시에 이벌슨의 심사 위원장)은 하워드 에이컨(Howard Aiken)이었다. 그는 최초의 자동 계산 기계인(혹은, 그렇게 불리우기도 하는) 마크 원(MARK I)의 개발 책임자였다. 그가 학생들을 가르칠 때 일화인데, 그의 제자 중 하나는 자신의 멋진 아이디어가 복제될까 두려운 나머지 모든 논문에 "기밀"(confidential)이라는 도장을 찍었다. 에이컨은 그 학생에게 다음과 같은 이야기를 해줬다.

하워드 에이컨
하워드 에이컨

마크 원
마크 원

사람들이 네 아이디어를 훔칠까봐 걱정하지 마라. 네 아이디어가 조금이라도 훌륭하다면, 사람들이 그걸 받아들이도록 억지로 강요해야만 할 것이다.

Don't worry about people stealing your ideas. If your ideas are any good, you'll have to ram them down people's throats. --Howard Aiken

그가 만든 마크 원의 주요 프로그래머 중에 현재 여성 프로그래머들의 우상이 있었으니, 바로 그레이스 호퍼(Grace Hopper)다. 그는 컴퓨터 프로그래밍 언어 컴파일러를 최초로 만들었다. 그는 코볼(COBOL)의 어머니로 불리운다. 컴퓨터계에 너무도 많은 기여를 하였기에 종종 어메이징 그레이스(Amazing Grace, 놀라운 은총)라는 애칭으로 불리기도 했다. 버그(벌레)라는 단어가 컴퓨터 프로그램의 결함으로 불리게 된 것은 호퍼 때문이다. 컴퓨터에 나방이 들어가서 오작동을 일으켰는데 그것을 제거하는 작업을 디버깅(벌레 제거)이라고 불렀고, 그것이 기원이 되었다.

그레이스 호퍼
그레이스 호퍼

실제로 컴퓨터에서 발견된 것으로 추정되는 진짜 벌
실제로 컴퓨터에서 발견된 것으로 추정되는 진짜 벌레

이렇게 해서 테러리스트로부터 버그까지의 긴 여정은 끝나게 된다. 하지만 서울로 가는 방법은 여러 가지가 있다. 이 사람들이 다른 순서로 연결될 수도 있다. 그러면 또 다른 목걸이가 생기는 셈이고, 또 가지치기도 가능하다. 중간에 몇 명을 더 끼워넣을 수도 있고, 또 뺄 수도 있을 것이다. 한번 해보라. 의외로 재미도 있고, 배우는 것도 많을 것이다. 연결 외에 묶기도 가능하다. 예를 들어, 간단하게는 튜링상 수상자들만 뽑아볼 수 있다. 여러분은 이 글을 통해 벌써 여러 명의 튜링상 수상자를 접하게 되었다. 또, 약간 독특하게 가족이 함께 일을 하는 사람을 묶어 볼 수 있는데, 켄트 벡은 자신의 아내인 신시아 벡(심리학 전공)의 도움으로 익스트림 프로그래밍 2판을 썼고, 소위 XP 버전 2를 만들어 냈다. 컨설팅시에 두 사람이 함께 작업하기도 한다. 워드 커닝햄도 자신의 부인과 함께 회사를 세웠다. 회사 이름이 "커닝햄 & 커닝햄"이다. 와인버그도 부인(문화인류학 전공)과 함께 컨설팅, 교육을 진행한다. 길브는 자신의 아들과 함께 컨설팅을 한다.
Posted by 당신은 천하보다 귀중합니다. av930

댓글을 달아 주세요


내 인생의 최대의 걸림돌...

배우는게 좋다. 하루하루 알아가는 재미가 솔솔하다.
Georgia Tech 졸업장을 받은지 반년밖에 안지났는데, 영어는 잊어버린지 오래다.

하루를 길게도 회사에서 보내고 나면, 나에게 남는건 잠에 대한 욕망뿐이다.
그렇다고 하루를 되돌아 보아도 코드량이 몇백라인을 넘어간 적도 없는것 같다.
부족한게 왜이리 많지..

하지만 IT업계에 획은 그은 대가들의 글은 그들의 표현방식으로 보고 싶다는 생각이 간절하다.
점점 알아갈수록 욕망은 커지나 시간은 반비례한다.
내 손에서 번역책을 언제나 떼어버릴려나?..
난 언제쯤 그들과 담화를 나눌수 있을까?

아~~ 그들만의 리그에서 뛰고쉽다. 비록 후보선수일지라도....

그래도 위안이 된다.
이번에 회사에서 하는 Agile 프로그래밍 강좌에 기대가 높기 때문이다.
한국에서 보고싶은 사람이 직접 강좌를 하니.
김창준 ->켄트백 -> 다 만나봐야지..

그런데, 스티브 멕코넬이나 와츠 험프리는 만나기 싫다.
Posted by 당신은 천하보다 귀중합니다. av930

댓글을 달아 주세요