Bongta      

code - ③

소요유/묵은 글 : 2008.02.16 19:51


전회에 Hardware에 대해 알아보았습니다.
그 차가운 기계에 어찌 숨을 불어넣을 것인가 ?
아마, 이를 제대로 설명하려면 폰노이만, 튜링 등
역사적인 이야기로부터 시작되어야 할 것입니다.
하지만, 지금 저의 목표는 “code”이기 때문에,
번거로움을 덜고, 바로 질러 나아갈 것입니다.

Human interface

그림에서 보시면 맨 상단에 Man(인간)이 놓여져 있습니다.
자, Hardware가 있고 Man이 있습니다.
이 양자가 상호 대화를 나누어야 합니다.
차가운 기계덩어리인 Hardware가 무엇인가 인간의 요구에 응하여 계산을 하고,
그 결과를 인간에게 전해야 합니다.
이 양자의 소통(communication)을 위한 고안장치를 우리는 Human interface라 부릅니다.

사용자 삽입 이미지

© bongta

interface는 inter와 face의 결합어입니다.
inter는 거의 정확히 한자로 사이간(間)에 해당되며,
face는 얼굴면(面)입니다.
하니 interface는 면대면(面對面, face to face)을 의미합니다.
즉 기계(hardware)와 인간(human) 간의 상호 접점을 의미한다 하겠습니다.
우리가 흔히 쓰는 internet이라는 것도 net to net사이의 관계를 의미하는 것이니,
너와 나의 관계가 net(網)으로 연결된 상태를 뜻하는 것이지요.
사실 internet이란 말은 부르는 것만으로도 얼마나 짜릿하며, 놀랍습니까 ?
이를 통해 전세계인이 함께, 그것도 동시에
손잡고(hand to hand) 마주할 수 있다는 것이니 참으로 황홀한 세상입니다.
유사한 말인 intranet에서의 intra는 한자로는 내(內)를 의미하니,
국지적인 사내망처럼 그 범위가 제한된 망을 의미하게 됩니다.

다시 돌아와 Human interface 이야기입니다.
기계(Hardware)와 인간이 어떻게 대화할 것인가 ?
이를 위해 고안된 것이 무엇입니까 ?
마우스, 키보드, 모니터, 스피커 등이 대표적인 그것들입니다.
마우스, 키보드등을 통해 인간은 기계에게 일거리를 전(명령)하게 됩니다.
반대로 그 결과를 토출하여 인간에게 전하는 장치로서 모니터, 프린터 등이
채비되고 있는 것이지요.
참고로 모니터는 softcopy, 프린터는 hardcopy라고도 합니다.
이상은 Hardware 측면에서 살펴보았습니다만,
그림의 중간에 그려져 있는 Software야말로 실인즉 Human interface의 핵심입니다.

###

Software

Software는 크게 두가지로 나누어 볼 수 있습니다.
OS(operating system)와 좁은 의미의 software(util,program)로 나누어집니다.

우리가 흔히 말하는 “윈도우즈”라는 것은 OS의 상품명입니다.
OS에도 종류가 많은데,
대부분의 PC는 마이크로소프트사에서 만든 브랜드 Windows를 사용하고 있는 것이지요.
이게 Windows 3.x, 98, 2000, XP 등으로 판을 달리하여 진화하고 있는 것입니다.

자 그럼, OS 란 무엇인지 알아봅니다.

한가지 예를 들어보겠습니다.
모니터 좌측상단에 “가”라는 글자를 하얀 바탕화면에 검게 표시하려고 한다 칩시다.
모니터의 해상도가 지금 1280*1024이라면 좌표 (0,0)부터 시작하여
“가” 에 해당되는 검은 부분의 위치에 해당되는 곳은 어둡게 하고
나머지 부분은 하얗게 빛나게 하여야 합니다.
인간으로부터 이런 명령이 떨어지면, 기계는 이 작업을 수행하여야 합니다.
그런데, 명령 전달 체계가 제대로 갖추어져 있지 않다면,
이 단순한 글자 한자 쓰는 게 보통 일이 아닙니다.
명령 내리는 것도 어렵지만, 설혹 명령을 내렸다 한들,
적절한 신호를 내서 모니터 특정 위치에 발광하게 하는 과정은
실로 상상을 초월할 정도로 어렵고도, 엄청난 작업량을 필요로 합니다.
이런 것을 수동으로 하는 것은 거의 불가능합니다.

하지만, 일련의 작업 프로세스를 미리 준비하여 두었다면, 일은 한결 수월할 것입니다.
이 일을 담당하는 것이 OS입니다.
OS는 Hardware를 상대로 행할 수 있는 (미리 만들어진) 명령들의 집합입니다.
개념상으로는 OS는 컴퓨터가 할 수 있는 일들에 관한
명령서 또는 요리법같은 레시피(recipe)의 묶음이라고 생각하여도 좋습니다.
사전에 할 수 있는 큰 줄거리 일들의 과정을 미리 마련해 두는 것이지요.
때문에 그림에서 Man이 무슨 일을 하려고 할 때는 직접 Hardware를 상대하는 것이 아니라,
레시피 묶음집에서 원하는 일의 메뉴만 선택하면 되는 것입니다.
그 이후의 일(요리)은 거기 적혀 있는 작업 프로세스를 따라 자동으로 수행하게 되는 것입니다.
이 일련의 과정은 앞에서 다룬 CPU가 명령을 가져와(fetch) 解讀하고,
적절한 hardware를 통제, 작동시키는 흐름인 것입니다.

OS는 그럼 누가 만드는가 ?
이것은 상업적으로 제품으로 만들어지기도 하고, 무료로 제공되기도 하는 것입니다.
우리가 쓰는 Windows는 MS사에서 상업용으로 만들어 판매하는 것이고,
우리들 PC 사용자 대부분은 이를 구매하여 사용하는 것입니다.
반면 Linux는 무료입니다만, Windows만큼 아직 널리 사용되고 있지는 않습니다.

하여간 이런 OS가 준비가 되면 이제 사람들은 Hardware를 직접 핸들링할 필요없이
OS를 상대하면 됩니다.
그런데, 이 OS도 직접 다루기기엔 너무 벅찬 상대입니다.
특히 일반인들의 경우엔 거의 불가능한 수준의 것입니다.

여기까지를 다시 정리하여 비유하자면 이런 것입니다.
요리를 한다고 합시다.
요리 재료들이 준비되어 있습니다.
이 재료를 Hardware라고 생각하여 주십시오.
재료만 갖고는 요리가 되지 않습니다.
여러 음식들의 요리법이 적혀 있는 것이 레시피(recipe)가 있다면,
이제 이것을 참고하며 요리를 만들면 요리를 잘 만들 수 있을 것입니다.
이 레시피(recipe)에 해당하는 것이 OS에 비견되는 것입니다.
전문가가 미리 만들어 놓은 요리법같은 것이 OS인 것입니다.

그런데, 초보자라면 이 레시피(recipe)를 보고 요리하는 것도 만만치 않지요.
이 때 우리는 이 레시피(recipe)를 많이 알거나, 잘 다룰 수 있는 요리사를
고용하여 요리를 만들게 할 수 있습니다.

요리사를 고용하게 되면, 이젠 요리 재료, 레시피(recipe) 등에 전혀 신경 쓸 필요가 없습니다.
이 요리사에 해당하는 것이 우리가 흔히 말하는 program 또는 util에 해당하는 것입니다.

이 때에 이르러, 우리는 비로서 Hardware, OS 등에서 벗어나,
program만 상대하면 우리가 원하는 작업을 손쉽게 할 수 있게 되는 것입니다.

이 program을 OS 또는 Hardware를 직접 다룰 수 있는 전문집단에서 일반인을 상대로
특정 작업에 적합한 것들을 상업적으로 만들어 판매하는 것이지요.
예컨대,
문서 작성 전문프로그램인 editor 또는 word processor로서
상용의 ms-word, 아래한글이 상품으로 나와 있으며,
인터넷이 가능하게 하는 프로그램인 web browser로서
IE(internet explorer), FoxFire 등의 개별 프로그램들이 그것들인 것이지요.

자 이제 Man은 직접 Hardware 또는 OS도 상대할 필요가 없습니다.
단지 자신이 하고자 하는 작업에 알맞은 program만 준비하면 되는 것이지요.
복잡한 일을 하려면 program도 덩달아 복잡해지지 않을 수 없습니다.
지금 시대엔 그 program 익히는 것만도 버거운 세상을 우리는 지나고 있습니다.

사용자 삽입 이미지

이제 Hardware에 Software가 채비되므로서 저 차가웠던 기계덩어리가
아연 생기를 띄게 됩니다.
저는 이것을 animism의 부활이라고 부릅니다.
고대에 주변을 둘러싼 모든 자연물에 영혼이 깃들었다고 생각하고
이를 신앙의 대상으로 삼았습니다.
하지만, 지금은 모래(silicon)에 불과한 돌덩이들을 극미의 세계에 재배치하여
사원(Hardware)을 짓고, 거기 현대인 자신의 입김을 불어넣는 주술을 부려
천기(天機)를 엿보고자 하고 있는 것입니다.

animism에서는 자연물 자체가 혼을 가지고 있다고 생각하지만,
따지고 보면, 인간 자신의 공포, 願望 의식의 투사에 다름 아닐 것입니다.
Hardware에 생기를 불어넣는 Software를 준비하는 마음 역시
인간의 원망(願望)과 희구(希求)의 소산입니다.
이런 의미에서 보자면 이 양자의 인간사적 위치는 다를 바도 없어 보입니다.

하지만, 이 양자에서 결정적인 차이는 무엇입니까 ?
전자는 미신(迷信)임을 알지 못하고 주술을 걸며 찰진 원망을 의탁합니다.
후자는 정치(精緻)한 기하학적 합리성, 차가운 이성으로 감히 하늘 문을 뻐개고자 합니다.

과연 그러한가요 ?

전자를 미신(迷信)이라고 말했지만, 그것은 이쪽 현대인들이 바라보는 견해이고,
그것을 이성에 對한 직관이라고 말한다면 어찌되겠습니까 ?
한편, 현대에선 컴퓨터 만능이란 의식이 널리 자리잡고 있습니다.
컴퓨터가 없으면 현대사회는 그 자리에서 멈추고 말 것입니다.
실인즉, 컴퓨터에 주박(呪縛)된 이 현실이야말로 미신의 결정(結晶) 아닌가요 ?

프레이저가 아직 살아 있다면,
그는 아마 주술과 종교의 진화 마지막 章에
“컴퓨터”를 껴넣지 않을 수 없었으리란 상상을 해봅니다.
司祭의 살해 현장이 컴퓨터에 의해 지금 재현되고 있습니다.
황금가지는 다시 꺽여지고, 
그것은 인류의 미신(迷信)이 현재진행형으로 유전(遺傳)되고 있음을 증거하고 있습니다.

(※. 프레이저著 황금가지 : 새로운 사제가 되려면, 기존의 사제를 죽이고 황금가지를 꺽어야 한다고 합니다. 이유인즉슨 사제의 권능이 황금가지와 연결되어 있다는 것입니다.)

###

지금까지 컴퓨터의 기초적인 얼개를 살펴보았습니다.
컴퓨터를 저는 계산기와 다를 것이 하나도 없다라고 말했습니다.
일반 계산기라면 숫자를 다룹니다.
컴퓨터 역시 숫자를 다루는 것은 틀림없습니다만,
단순한 아리비아 숫자를 넘어 무엇인가 의미있는 숫자를 다룹니다.
그게 무엇일까요 ?

과일 장수가 여기에 있습니다.
과일 장수가 판매하고자 하는 것은 사과, 배와 같은 과일들입니다.
이들을 판매하여 수익을 얻기 위해, 과일 장수는 점포를 얻고,
진열장(showcase)을 갖추어, 과일들을 진열합니다.
점원을 고용하기도 하고, 혹간은 가락시장에 가서 물건을 떼오기 위해서는 트럭도 필요할 것입니다.

자 여기서, 퀴즈입니다.
사과 장수의 과일에 해당되는 것이 컴퓨터에서는 무엇일까요 ?
사과 장수 상행위의 제일차적인 객체인 과일에 해당되는 것이 컴퓨터에서는 무엇인가 ?
상인은 이 과일을 반들반들 닦아, 예쁘게 진열하여 두고,
비싼 값에 팔아 높은 이문을 얻기를 기대합니다.
지금 당신은 상인의 점포, 점원 등에 해당하는 Hardware, Software를 갖추고 있는 중입니다.
컴퓨터를 이용하는 자는 무엇인가를 대상으로 이를 가공하여 원하는 결과를 얻어내고자 합니다.

그 무엇이 무엇입니까 ?
그 무엇들이 연쇄적으로 앞의 무엇을 묻고 있다면,
그 무엇의 무엇인 원론적인 의미의 그것, 즉 계산의 객체가 되는 것이 무엇입니까 ?

###

계산의 객체

사과 장수의 사과에 해당되는 것 그것이 컴퓨터에선 무엇인가 ?
짐작들이 서셨는지요 ?
제가 실제 주위의 컴퓨터 초보자에게 이런 질문을 하였을 경우,
제가 원하는 답변을 한 사람이 한 1% 정도 되더군요.

그것을 저는 data(자료), 또는 information(정보)이라고 생각합니다.

information은 data의 가공물이지만,
이 역시 2차, 3차... 등으로 거듭 가공할 수도 있습니다.
어쨋건, 컴퓨팅(계산,computing)의 대상은 data와 information 이 양자가 됩니다.

컴퓨터에선 숫자를 대상으로 일을 처리할 수 있을 뿐입니다.
때문에 이들 자료, 정보를 숫자로 바꾸어야 합니다.
量으로 되어 있는 것은 당연 숫자로 셀 수 있습니다만,
질적인 것은 적절히 조작하여 숫자로 바꾸어야 합니다.

(※ 여기서는 편의상 숫자라고 하였으나,
보다 정확히는 ALU에서 보았듯이 산술, 논리연산의 객체형식을 의미한다.)

예컨대, 어떤 물건들의 색깔을 조사한 보고서가 있다고 할 때,
색깔은 질적인 것이지만, 이를 컴퓨터로 다루려면 이를 양적인 것으로 바꾸어야
컴퓨터가 다룰 수 있습니다.
예컨데, 검정은 0, 파랑 1, 초록 2, ...하양 15 등등의 숫자로 대응시켜 미리 약속해두어야 합니다.
이처럼 질적 내용을 양적인 것으로 바꾸는 것을 양화(量化,quantification)라 부릅니다.

이번 글의 주제를 벗어납니다만,

질을 양으로 바꿀 수 있는가 ?
질을 양으로 온전하게 바꿀 수 있는가 ?
또는 바꾸는 것 자체가 가능한 일인가 ?
거꾸로 양적 계산 결과에서 질적 전망을 이끌어내는 작업은 유효한 것인가 ?

이에 대한 의문은 다음에 이어질 “코드”란 글과 관련지어 나름대로 궁리되어야 할 것입니다.
이 의문이 “코드(code)”란 고안을 통해 극복될 수 있는가 ?
아니면 별도의 다른 전망이 필요할 것인가는
요번 저의 일련의 글을 통해 모색되어지길 기대합니다.
저의 최종 글제인 “코드”는, 사실 이 의문을 여러분에게 던지기 위해 쓰여졌기도 합니다.


==================================================================================

댓글 모음

bongta :

말씀대로 code가 곧 언어입니다.
컴퓨터 프로그래밍어 역시 이 세계에서는 그저 언어라 부르기도 합니다.
C, pascal, assembler, LISP, PROLOG...
다양한 언어가 생멸, 진화를 거듭하고 있습니다.
프로그래밍 언어의 발전 속도는 인간의 언어 발전 속도보다 오히려 더 빠른 느낌입니다.

“목수 연장 탓하다”란 말이 있습니다.
이게 의미하는 바는 실력도 없는 게 애궂은 다른 것을 빌어 투정한다는 말이겠습니다만,
혹여 연장이 부족하여도, 실력만 좋으면 충분히 능력 발휘할 수 있다라는
말로 새겨지는 것은 반드시 옳은 말이라 할 수 없다는 생각입니다.
솜씨 좋은 목수는 필요에 알맞은 다양한 연장을 충분히 갖추어야 더 뛰어난 성과를 낼 수 있습니다.

컴퓨터 프로그래밍 언어도 나날이 발전하여,
그에 맞추어 이를 익히지 않으면 아무리 실력이 좋아도 능률적으로 일을 하기 어렵습니다.
그러하니, 2류 인사들은 프로그래밍 자체의 실력도 문제지만,
최신 프로그래밍 언어 배우는 것 자체만으로도 버겁기 짝이 없는 형편이지요.
이게 의사, 목수 등, 어떠한 장인, expert의 세계에서도 매 한가지라고 저는 생각합니다.
물론 그럴 필요가 없는 부문도 있겠지만, 일반적으로 계속 발전하는 동네라면
이 사정을 피해갈 수는 없으리라고 저는 생각합니다.

그렇다고 가부좌 틀고 앉아 명상하는 것만으로 해결되는 것도 아닌 게,
우리네 세속적인 인간살림살이인 것이니,
code로 의미 지어진 가상공간을 벗어날 길은 실로 요원한 것입니다.
아니, 오히려 그 code 자체에 집중하여,
그를 개량하거나 새로운 code를 만들어 실공간을 해석해내려는 부단한 시도가
단꿀 탐하는 벌레처럼 이악스럽게 행해지고 있습니다.

제가 언젠가 스님 한분의 컴퓨터 공부를 살펴준 적이 있습니다.
초보자인 그 분의 컴퓨터 바탕화면에 만다라 그림이 깔려 있더군요.
그의 방 사방엔 각종 불문(佛紋)이 새깃털처럼 붙어 있었습니다.
풋중의 산속 살림이라지만, 聖俗이 하나같이 symbol을 여의지 못하고
그를 마치 장님 지팡이인 양 의지하고 있음이 아니겠습니까 ?

하여, 컴퓨터, 인터넷이란 게 바로 저 만다라와 다를 바 없음이며,
스님은 이제 또 하나의 만다라를 배우고자 길 떠나고 있음이니,
그 고초와 번거로움을 이겨낼 수 있겠음이뇨 ?
이리 여쭈어본 적이 있습니다.

앞 길이 가물가물한 할머니들이 “다라니”를 절에 가서 미리 사오십니다.
이를 장농에 잘 보관하였다가, 당신이 돌아가실 때,
이 다라니를 시신에 덮고자 함이지요.
그 할머니가 미리 준비한 다라니라는 게 무엇입니까 ?
부적처럼, code 자체가 영험한 기운을 낸다는 믿음의 소산인 게지요.
즉 거기엔 decoding에 대한 소구가 없습니다.
code 자체가 공간에 의미를 뿌려내는 것이지요.
도피안(到彼岸)의 열망인즉 그게 할머니의 다라니 꽃으로 화한 겝니다.

이게 무엇입니까 ?
decode란 징검다리를 건너오는 시도조차 부질없다는 것이 아니겠습니까 ?
decoding 해보았자,
실상의 세계는 아지랑이 낀 봄들처럼 아련하니 가늠조차 아니 되고,
하니 차라리 code 발치에 엎어져 그를 경배함이 외려 남는 장사가 아닐런가요 ?
decoding되지 않는 code인즉 곧 그게 부적이고,
feedback없는 열정인즉 곧 그게 "빠돌이"가 된다는 생각입니다.

이게 종말론이 먹히고,
빠돌이가 이 징한 세상을 건너는 독도법(讀圖法)인 겝니다.

빠돌이라는 이름은 무엇입니까 ?
그는 decoding할 짬도 없고, 아니 不要합니다.
그 code를 그저 쳐다만보아도
흐믓하니 침이 고입니다.
머릿속은 박속처럼 하얗게 환희가 그득 차오르고,
사타구니가 촉촉이 젖어들며 ecstasy의 황홀경에 빠져듭니다.

그러하기에 일찍이 指月을 嘆한 게 아닙니까 ?
달 가리키는 손가락.
구지선사는 어디에 숨어 게으름을 피우시기에
휘엉청 밝은 달밤인데도 이토록
비릿한 손가락질, 아우성만 흥건하답니까 ?

月印千江,
水月을 水卵 뜨듯 건져보자라는 作心 일어난 자리,
무릇 이게 coding 아닙니까 ?
그러하니, coding客들은 자신들이 指月임을 알아야 할지니,
불연인즉, 이내 빠돌이란 이름을 얻으리.

즉 그들은 자신이 지월임을 아는 한에 있어서,
비록 달이란 당체를 모른다하여도
최소한 불성실하다는 지탄을 받지는 아니할 것입니다.

이 부분은 次回에 보충하겠습니다.

'소요유 > 묵은 글' 카테고리의 다른 글

code - ⑥ 終回  (0) 2008.02.17
code - ⑤  (0) 2008.02.17
code - ④  (0) 2008.02.16
code - ③  (0) 2008.02.16
code - ②  (0) 2008.02.15
code - ①  (0) 2008.02.15
문.무(文.武)의 진실과 그 화해를 위하여  (0) 2008.02.15
Bongta LicenseBongta Stock License bottomtop
이 저작물은 봉타 저작자표시-비영리-변경금지 3.0 라이센스에 따라 이용행위에 제한을 받습니다.

  댓글 쓰기