2007년 1월 29일 월요일

휴가 다녀오겠습니다.

제가 오늘 저녁부터 25일까지 휴가를 다녀옵니다.

그 사이에 올리신 질문들에 대해서는 휴가를 다녀와서 답변을 드리도록 하겠습니다.

그럼 다녀오겠습니다~~~

2007년 1월 27일 토요일

난 어디에 있나?

나 자신은 cutting-edge(최첨단)에 있을까? 아니면 niche(틈새)에 있을까?

최신이 최첨단인가?(mp3가 재생되는 전자사전이 최첨단은 아니지 않은가?)

난 내 분야에서 선진에 있는가? 후진에 있는가?

그것을 측정할 yardstick이 있을까? 없다면 어떻게 만들지?

내가 후진에 있다면, 어떻게 선진을 따라잡으며, 추월할수 있을까?

질투는 나의 힘!!!!

2007년 1월 18일 목요일

스티브 잡스와 애플, 그리고 MS

요 몇 달동안 iPhone 때문에 IT 업계가 시끌시끌했습니다. iMac, iPod의 성공의 후광을 입고 있기에 iPhone에 대한 기대가 엄청나게 커졌기 때문이지요. 결국 몇 일 전에 iPhone이 그 모습을 드러냈습니다.

뉴스를 통해 특징을 정리해본 결과, iPod를 담은 PDA 전화기라는 판단을 했습니다. 이런 물건때문에 사람들을 그렇게 기다리게 헀나 싶기도 해서 조금 허탈해지기도 헀습니다. 하지만 그 디자인만큼은 상당히 산뜻했는데(할 뻔했는데), 그마저 LG의 프라다 폰을 베낀게 아니냐는 의혹을 받고 있습니다.

야구에서 타자가 3할 정도를 치면 아주 잘한다고 할 수 있습니다. 투수가 던지는 공 10개 중 3개를 안타로 만들기만 해도 우수한 선수가 되는데, 스티브 잡스는 NeXT와 같은 뼈저린 실패를 경험하기도 했지만, 상당히 우수한 타율을 자랑하고 있습니다. 그것도 아주 대형 홈런으로 말이죠. 이번에도 iPhone을 가지고 iPod처럼 만루홈런을 만들어낼 수 있을지 귀추가 주목됩니다.

잡스가 자신이 창업한 애플에서 몇년 쫓겨나 있긴 했어도, 그는 애플의 아이콘과 같은 존재입니다. 청바지를 입고 신제품 런칭 쇼를 하는 스티브 잡스가 없는 애플은 상상할 수 없습니다. 그런 점에서 MS의 변화는 아주 주목할만 합니다.

소프트웨어 업계의 제왕으로 군림하고 있는 MS는, 자사의 아이콘이라 할 수 있는 빌 게이츠를 많이 지워내고 있습니다. 이미 유능한 후계자 후보가 MS에서 활약하고 있고, 그의 친구이자 現 회장인 스티브 발머가 MS를 앞에서 이끌고 있습니다. 빌 게이츠는 현재 기술 부문만을 이끌고 있고 몇 년 후엔 은퇴할 것임을 공식적으로 발표하기도 했습니다.

놀랍게도 MS가 내놓고 있는 주요 제품들은 개발 과정에서 빌게이츠의 반대를 무릅쓴 아이디어들을 채택하고 있습니다. 대표적인 것이 바로 인터넷 익스플로러입니다. 넷스케이프가 전 세계 웹 브라우저를 거의 독점하고 있다시피 했을 때, MS는 인터넷 시대의 사업에 대해 준비되어 있는 것이 없었습니다. 이미 인터넷 시대가 도래했음을 깨달았을 때는 시간이 많이 흐른 뒤였죠. 그런데 그 때 이미 회사 몰래 인터넷 응용 프로그램을 준비해오던 이들이 있었고, 이들에 의해 인터넷 익스플로러가 탄생합니다. 지금은 넷스케이프 웹 브라우저는 찾아보기가 어렵죠.
그 외에도 Xbox 게임기에서 윈도우를 제거한 일이나, 쥰 Mp3 플레이어를 내놓는 일 등을 보면 MS는 포스트 빌게이츠들이 준비되어 있는 것으로 보입니다.

제가 하고 싶은 이야기는 애플이 향후 몇년 동안 현재와 같은 비즈니스를 이어갈 수 있을 것인가 하는 점입니다. 스티브 잡스가 또 홈런을 만들어 낼 수 있을까요? 설령 만들어 낸다 하더라도 그 다음 타석에서 NeXT와 같은 끔찍한 실패를 저지르지 않을 수 있을까요?

iPhone을 보면서 든 생각이었습니다.


즐프하세요~

2007년 1월 12일 금요일

프로그래밍의 역사

섭씨 50도의 열과 소음이 가득 채운 커다란 방에서, 한 여자 연구원이 노트를 들고 30 미터에 이르는 방 한 면을 가득 메운 상자들에 꽂혀 있는 전기 케이블의 배선을 바꾸고 있었다. 노트에는 대포의 탄도 계산에 필요한 방정식이 기록되어 있고, 연구원은 그 노트에 따라 꼼꼼하게 케이블을 점검해 나갔다. 6000개에 이르는 전기 케이블을 점검한 후, 계산에 사용할 실험 수치가 기록된 카드들을 기계에 밀어 넣고 스위치를 올렸다. 잠시 후 한쪽에 설치된 천공기(punching machine)가 계산 결과를 카드에 출력했다.

이 광경은 최초의 컴퓨터, 에니악(ENIAC)을 운용하던 모습이다.  한 쪽 벽면을 가득 메우고 있던 상자들은 에니악(ENIAC)이었고 전기 배선은 에니악(ENIAC)이 계산할 때 사용하는 "논리"로써, 현대의 컴퓨터로 치자면 "프로그램"이었다. "프로그래밍"이 프로그램을 제작하는 일을 뜻하니, 연구원이 전기 배선을 하던 그 모습은 바로 프로그래밍이었다고 할 수 있다.

에니악은 당시 엄청난 계산 능력을 갖고 있었지만(286 PC와 비슷했다.), 단점 또한 그 덩치만큼이나 대단했다. 진공관 발열 문제로 인해 거의 매일 반나절은 운영을 멈춰야 했고,  무엇보다 프로그램을 변경하려면 6000개에 이르는 배선을 교체해야 했다. 이후에 이 괴물은 맨해튼 프로젝트에도 참여했던 천재 과학자 존 폰 노이만(John von Neumann)의 마법을 거쳐 조금 더 신뢰성 있는 컴퓨터인 에드박(EDVAC)을 탄생하게 했고, 에드박은 중앙 프로세서, 기억장치, 프로그램, 데이터로 구성된 현대 컴퓨터의 구조를 갖춘 현대 컴퓨터의 조상이 되었다.

노이만 이후 컴퓨터의 발전은 가속도를 더해갔으며, 프로그래밍 방식 또한 컴퓨터의 발전에 발맞춰 나아가게 됐다. 전선으로 구성됐던 프로그램이 이제 거대한 방에서 조그만 상자로 그 "장소"를 옮기게  된 것이다. 
트랜지스터와 이 트랜지스터를 하나의 칩에 집적한 마이크로칩이 개발되면서 컴퓨터는 운영 체제와 기본적인 프로그램, 그리고 명령어들을 자체 내장했다. 그리고 프로그래머는 CPU가 제공하는 기본적인 명령어를 조합하여 보다 효율적인 방법으로 프로그램을 작성할 수 있었다.

이 명령어들이 바로 어셈블리어이다. 프로그래머가 어셈블리어를 이용하여 프로그램 원천 코드를 작성하면,  컴파일러(Compiler)라는 소프트웨어를 이용하여 실행 파일을 만들어 냈다. 그리고 이 실행 파일이 바로 프로그램이었다.

컴퓨터가 보급되면서, 사람들은 보다 많은 업무들을 컴퓨터에 맡기고자 했다. 그러나 필요한 프로그램들은 늘어나는데, 기호와도 다름없는 어셈블리어로는 그 속도를 맞춰나갈 수 없었다. 예를 들어 5+1 식을 계산하는 코드는 어셈블리어로 하면 다음과 같다. (이해하지 못해도 좋다. 아니, 여러분이 이해 못한다면 필자가 아래의 코드를 보여주고자 한 의도가 성공한 것이다.)

data
var1 DWORD 1
var2 DWORD 5
.code
mov eax, var1
add eax, var2 ;

(위 코드는 물론, 그 때 당시에 사용하던 코드는 아니다. 이것은 현재 우리가 많이 사용하고 있는 인텔 계열의 80X86 CPU에서 동작하는 코드이며, 50년 전에 사용되던 코드 샘플은 필자는 안타깝게도 구할 수 없었다.)
프로그래밍 언어가 이렇게 어렵게 생겼으니, 프로그래밍은 전문 과학자나 아주 똑똑한 사람들의 전유물이었다. 하지만 존 배커스(John Backus) 때문이 상황이 달라졌다. 그는 수많은 학교에서 퇴학당한 문제아였지만, 좋은 스승을 만나 컬럼비아 대학을 마치고, 이후 IBM에 입사하게 된다. IBM에 입사하면서 그는 IBM에서 개발이 진행 중이던 일종의 어셈블리어 번역기인 스피드 코딩(Speed Coding) 프로젝트에 참여하고, 이 경험을 기반으로 1957년에는 사람의 언어에 가까운 최초의 프로그래밍 언어, 포트란(Fortran) 언어와 컴파일러를 개발했다. 포트란은 연구소와 과학 기술자를 중심으로 엄청난 인기를 얻어 나갔다. 어떻게 인기를 얻었냐고? 잠시 후에 알게 된다.

포트란 언어의 덧셈 코드는 다음과 같다.

a = 5 + 1

어셈블리 코드와 비교해 보라. 이 이상 단순해질 수 없을 정도로 단순해졌다. 프로그래밍 코드답게 생긴 것은 앞에서 선보인 어셈블리어 쪽이지만, 이해하기에는 포트란 쪽이 어셈블리어보다 100배는 더 낫다. 우리가 수학 시간에 배운 덧셈과 등가 기호만으로 덧셈 연산이 가능하지 않은가?

포트란 이후, 1천여가지가 넘는 프로그래밍 언어들이 수 없이 탄생하고 사라져갔다. 그러던 중 1964년, 베이직(BASIC : Beginner's All - Purpose Symbolic Instruction Code) 언어가 미국 다트머스 대학의 존 케머니(John Kemeny)와 토마스 쿠르츠(Thomas Kurtz) 교수에 의해 탄생됐다. 이들은 컴퓨터 프로그래밍이 더 이상 과학자나 엔지니어의 전유물로 남지 않길 바랬다. 그래서 학생부터 청소부까지 누구라도 배워 사용할 수 있는 언어를 고안해 냈고, 그것이 바로 베이직이다.

이 베이직 언어는 너무 사용하기 쉬웠기 때문에 수많은 컴퓨터 광들을 프로그래밍의 세계로 끌어들일 수 있었다. 레이크사이드 스쿨에 다니던 앳된 중학생 빌 게이츠(Bill Gates)와 폴 앨런(Paul Allen)도 예외는 아니었다. 당시 컴퓨터는 엄청나게 비싼 기계였지만, 레이크사이드 스쿨은 재정적으로 풍부한 사립 학교였고, 어머니회의 후원으로 컴퓨터와 터미널을 보유할 수 있었다. 게이츠와 그의 친구들은 그야말로 하루종일 베이직 프로그래밍에 빠져들었다. 빌 게이츠는 학교를 졸업하고 하버드에 진학하지만, 얼마가지 않아 중퇴하고 마이크로소프트를 창업한다(많은 사람들이 빌 게이츠가 공부에 염증을 느꼈다고 생각하지만, 그것은 사실이 아닌 것으로 보인다. 그저 앞으로 도래할 미래가 뻔히 보이는 상황에서 기회를 놓치고 싶지 않았기 때문에 학교를 포기했던 것이다.). 그리고 마이크로소프트의 첫 번째 제품이 바로 베이직 인터프리터(BASIC Interpreter)였다.

컴파일러와 인터프리터

앞서 어셈블리 언어와 포트란 언어에서는 "컴파일러"라는 단어를 사용했고, 베이직 언어에서는 "인터프리터"라는 단어를 사용했다. 프로그래밍 언어에는 크게 두 가지 종류가 존재한다. 하나는 소스 코드에서 실행 파일로 변환하는 과정을 거치는 컴파일 방식의 언어이고, 또 다른 하나는 소스 코드를 실시간으로 읽어 해석하여 프로그램을 실행하는 방식의 인터프리트 방식의 언어이다.  컴파일 언어의 장점은 작고 효율적인 실행 파일의 생성에 있고, 인터프린트 언어의 장점은 소스 코드를 작성해서 바로 실행해 볼 수 있기 때문에 프로그램 개발이 용이하다는 데 있다.

마이크로소프트의 베이직은 IBM이 개발한 PC(그렇다. 우리가 사용하고 있는 그 PC)에도 이식되었고, PC의 수많은 응용 프로그램을 탄생시킬 수 있도록 했다. 이 베이직 언어는 이후에도 마이크로소프트가 윈도우를 출시 했을 때 비주얼 베이직(Visual Basic)으로 새롭게 거듭나면서 윈도우 응용프로그램을 보급하는 일등 공신이 된다.

* 이 포스트에는 오류가 있을 수 있으며, 추후 고증 검증 절차에 의해 변경될 수 있습니다.
* 제 블로그의 글들은 모두 저작권의 보호를 받습니다. 무단 복사 및 전제를 금합니다.

2007년 1월 8일 월요일

새 해 복 많이 받으세요~

다들 힘찬 2007년 시작하고 계시죠?

연초부터 정신이 없어 새해 인사도 늦었습니다. 모두들 새해 복 많이 받으시고, 건강하시기 바랍니다. ^^

지금 가벼운 글을 한편 준비하고 있습니다. 어떤 청소년 단체 회지에 기고할 글인데, 블로그에도 곧 포스팅 할테니 기다려 주시기 바랍니다. 이번 주나 지나야 제대로 된 블로그를 관리를 재개할 수 있을 듯 합니다. 이해해 주세요 ^^;

이만 줄이겠습니다. 그럼 모두들 즐프~~