미리 말씀드리지만 오픈소스 코드 리딩 뭐 이런 거 아닙니다. 그저 가을에 어울릴 법한 클래식(classic) 하나 소개할까 합니다. 그렇지만 짬짬이 지하철 2호선 객차 안에서 판매하는 만원에 한 박스씩하는 클래식은 아닙니다. 그저 조금 오랜 옛 이야기입니다.
이 바닥에서 제법 오래 계셨던 분들은 아마 기억하실 겁니다. 안철수 지금의 카이스트 교수가 어셈블리어로 V3 백신의 첫 버전을 막 개발하기 시작하던 무렵, 그리고 또 이찬진 지금의 드림위즈 대표가 파스칼(C가 아니라 파스칼이었죠)로 처음 아래아한글 0.x 버전의 소스를 마소에 공개하던 무렵. 그 무렵에 컴퓨터를 만지작 거리던 사람들은 주로 어셈블리를 써서 기계를 직접 다루곤 했었습니다. 플로피 디스크 하나 짜리 XT 컴퓨터에 들어 있는 CPU는 8088이라는 이름을 가진 조그맣고 까만 벌레 같은 물건이었고 어셈블리는 그 벌레의 몸통에서 삐져나온 여러 개의 다리들(맞습니다. 레지스터를 말합니다)에 자극을 주면서 갖고 놀기엔 제법 추상화(abstraction) 수준이 높은 재밌는 언어 축에 속했습니다. 이걸로 메모리를 건드리고 인터럽트를 가로채고 부트 코드를 주무르던 기억은 이제 정말이지 아련한 추억일 뿐입니다. 굳이 구분하자면 아마도 BM(Before the Matrix) 시대 정도로 부르면 좋지 않을까 싶네요.
옆 사진은 제 방 책장 꼭대기 어느 한 구석에 기념으로 짱박아 둔 어셈블리 책 한 권과 8088 CPU의 도면이 담긴 XT 테크니컬 레퍼런스 매뉴얼입니다. XT 레퍼런스는 얼마 전까지도 요긴하게 사용했었죠. 집에서 라면 냄비 받침으로 말이죠. ㅎㅎ
오늘 인사이트 출판사로부터 책을 한 권 선물로 받았습니다. Programming Windows로 유명한 찰스 펫졸드(Charles Petzold)가 1987년 - 앞에서 말한 바로 그 시절입니다 - 부터 구상하여 2000년에 출간한 "CODE: The Hidden Language of Computer Hardware and Software"라는 책의 역서입니다. 2001년에 한 차례 번역 출간되었다 절판된 책을 이번에 새로 재번역하여 출간하는 책이라는군요.
부끄럽게도 저는 아직 이 책을 읽지 못했습니다. 아니 실은 최근까지 펫졸드가 이런 책도 쓴 줄 몰랐습니다. 그저 윈도우즈 프로그래밍 책만 쓴 줄 알았거든요. 책을 받자마자 역자 서문과 저자 서문을 차례로 읽으면서 실은 이 책이 아주 오래 전부터 내가 하고 싶었던 얘기들, 그리고 듣고 싶었던 얘기들을 아주 쉽고 재밌게 풀어놓은 책이란 것을 알게 되었습니다. 컴퓨터 속으로 들어가 컴퓨터가 어떻게 동작하는지를 그 아주 깊숙한 부분까지 다루고 있습니다. 바로 앞서 소개한 그 80x 계열의 CPU가 달린 컴퓨터 속을 헤짚고 다니면서 말입니다.
그렇다고 너무 오래된 얘기라 치부해 버리면 "클래식(classic)"의 가치를 놓치게 됩니다. 이 책의 역자이신 김현규님도 얘기 하듯 이 책은 정말이지 컴퓨터 프로그래밍에 있어 "고전의 반열"에 오를 책입니다. '클래식=오래된 것'이 아니라 "클래식이란 시간을 뛰어넘는 영원의 생명력을 얻은 작품"이라는 견해에 동의한다면 말이죠. 그저 한두 해, 기껏해야 서너 해 지나면 폐품이 되어버리는 책들(제가 번역한 책들 중에 있습죠^^)과는 차원이 다릅니다.
마침 엊그제 우연한 기회로 인텔에서 주관하는 한 소프트웨어 컨퍼런스에 참석하였더랬습니다. C++ 개발자들이 인텔 멀티코어 CPU 환경에서 병렬(current) 프로그래밍 하는 것을 도와주는 소프트웨어 솔루션을 소개하는 행사였는데, 그 자리에서 최근 CPU를 다루는 기술이 얼마나 발전했는지를 새삼 느낄 수 있었습니다. 클러스트 환경에서 멀티 코어를 쉽게 다룰 수 있도록 함수 클래스를 이용해 스레드(thread)를 한 겹 더 추상화시켜 놓았더군요. 아, 물론 이건 정확한 건 아닙니다. STL과 ATL을 사용했던 기억조차 가물가물한 저로서는 그저 떡밥에만 관심이 있었을 뿐입니다. 끝나고 푸짐한 경품 추첨과 뷔페 식사가 기다리고 있다는 지인의 말 땜에 그저 끝까지 남아 있었던 것 뿐입니다. 에고.
그러고 보니 최근에 MIT에서 프로그래밍 개론 강좌에 사용하는 컴퓨터 프로그래밍 언어를 LISP 계열의 Scheme에서 Python으로 전환했다는 기사도 생각나는군요.
이래저래 추상화 수준은 갈수록 높아질 수 밖에 없습니다. 그렇지만 무조건 높은 추상화 수준에만 머물러서는 안되죠. 가끔은 매트릭스 저 아래까지 한번 내려갔다 올 필요도 있습니다. 물론 위로도 가야하고 아래로도 가야하는 힘든 세상이긴 합니다만, 그래도 클래식을 듣는 기분으로 "CODE 리딩"을 권해 봅니다.
일본에서 책읽기로 유명한 마쓰오카 세이코씨는 최근 출간된 "창조적 책읽기 다독술이 답이다"라는 책에서 "차례 독서 3분이 독서의 운명의 좌우한다"는 말을 하더군요. 올 가을, 혹시 서점에 갈 일 있으면 클래식에 한번 관심을 가져 보시길 권합니다. 굳이 다 읽진 않더라도 목차만이라도 한번 천천히 읽어 보는 감미로운 여유를 가져보시면 어떨까 싶습니다.
옆 사진은 제 방 책장 꼭대기 어느 한 구석에 기념으로 짱박아 둔 어셈블리 책 한 권과 8088 CPU의 도면이 담긴 XT 테크니컬 레퍼런스 매뉴얼입니다. XT 레퍼런스는 얼마 전까지도 요긴하게 사용했었죠. 집에서 라면 냄비 받침으로 말이죠. ㅎㅎ
* * * * *
오늘 인사이트 출판사로부터 책을 한 권 선물로 받았습니다. Programming Windows로 유명한 찰스 펫졸드(Charles Petzold)가 1987년 - 앞에서 말한 바로 그 시절입니다 - 부터 구상하여 2000년에 출간한 "CODE: The Hidden Language of Computer Hardware and Software"라는 책의 역서입니다. 2001년에 한 차례 번역 출간되었다 절판된 책을 이번에 새로 재번역하여 출간하는 책이라는군요.
부끄럽게도 저는 아직 이 책을 읽지 못했습니다. 아니 실은 최근까지 펫졸드가 이런 책도 쓴 줄 몰랐습니다. 그저 윈도우즈 프로그래밍 책만 쓴 줄 알았거든요. 책을 받자마자 역자 서문과 저자 서문을 차례로 읽으면서 실은 이 책이 아주 오래 전부터 내가 하고 싶었던 얘기들, 그리고 듣고 싶었던 얘기들을 아주 쉽고 재밌게 풀어놓은 책이란 것을 알게 되었습니다. 컴퓨터 속으로 들어가 컴퓨터가 어떻게 동작하는지를 그 아주 깊숙한 부분까지 다루고 있습니다. 바로 앞서 소개한 그 80x 계열의 CPU가 달린 컴퓨터 속을 헤짚고 다니면서 말입니다.
그렇다고 너무 오래된 얘기라 치부해 버리면 "클래식(classic)"의 가치를 놓치게 됩니다. 이 책의 역자이신 김현규님도 얘기 하듯 이 책은 정말이지 컴퓨터 프로그래밍에 있어 "고전의 반열"에 오를 책입니다. '클래식=오래된 것'이 아니라 "클래식이란 시간을 뛰어넘는 영원의 생명력을 얻은 작품"이라는 견해에 동의한다면 말이죠. 그저 한두 해, 기껏해야 서너 해 지나면 폐품이 되어버리는 책들(제가 번역한 책들 중에 있습죠^^)과는 차원이 다릅니다.
* * * * *
그러고 보니 최근에 MIT에서 프로그래밍 개론 강좌에 사용하는 컴퓨터 프로그래밍 언어를 LISP 계열의 Scheme에서 Python으로 전환했다는 기사도 생각나는군요.
이래저래 추상화 수준은 갈수록 높아질 수 밖에 없습니다. 그렇지만 무조건 높은 추상화 수준에만 머물러서는 안되죠. 가끔은 매트릭스 저 아래까지 한번 내려갔다 올 필요도 있습니다. 물론 위로도 가야하고 아래로도 가야하는 힘든 세상이긴 합니다만, 그래도 클래식을 듣는 기분으로 "CODE 리딩"을 권해 봅니다.
일본에서 책읽기로 유명한 마쓰오카 세이코씨는 최근 출간된 "창조적 책읽기 다독술이 답이다"라는 책에서 "차례 독서 3분이 독서의 운명의 좌우한다"는 말을 하더군요. 올 가을, 혹시 서점에 갈 일 있으면 클래식에 한번 관심을 가져 보시길 권합니다. 굳이 다 읽진 않더라도 목차만이라도 한번 천천히 읽어 보는 감미로운 여유를 가져보시면 어떨까 싶습니다.
덧글
취미로 마이컴을 만지곤 하는데, 막힐때마다 CPU속으로 들어가고픈 생각이 간절하더군요.
절판되어서 아쉬웠는데, 재출간 된다니 반갑네요.