2004년 9월 22일 수요일

소설가와 프로그래머 - avatar

소설가와 프로그래머도 공통점이 있다.
그들은 동시에 여러 character를 소화할 수 있다.
소설가는 소설을 쓰면서 등장 인물 모두를 모델링하고 자신만의 세계를 만든다.
모든 등장인물을 구성해내고 에뮬레이션하고 그들간의 관계를 만들어 낸다.
주인공도 소설가의 생각의 일부이고 엑스트라도 그렇다.


등장인물 모두는 소설가 한 사람의 생각이지만 그는 모두가 다른 사람인양 태연하게 글을 써나간다.
소설가는 전지적인 능력을 지니고 있으므로 등장인물 모두를 제어할 수 있고 등장인물 모두의 생각과 정보,
배경/환경의 변화를 제어할 수 있다.
하지만 그는 각각의 인물에게 물리적 한계를 주고 그 한계를 넘지 않게 한다.
혼자서 북치고 장구치고 다하는 셈이다.


셰익스피어의 로미오와 줄리엣을 보자,
작가는 로미오의 죽음이 가짜라는 것을 알지만 줄리엣은 그것을 모른다고 가정한다.
그래서 줄리엣 역할을 하면서 줄리엣을 자살하게 만든다.
죽은 척 하는 로미오의 역할과 줄리엣의 역할, 약사의 역할, 주인공의 친척 역할 등..
모든 역할을 해낸다.
마치 다중인격자 같다. 좀 더 재미난 소설을 위해 그런 노력을 하는 것이다.


프로그래머도 사실 비슷하다.
한 user가 여러개의 계정을 가지고 프로그램의 여러부분을 동시에 설계하고 구현하곤 한다.
root 계정을 가졌을 때는 신(god)인 척하고 일반 계정을 가졌을 때는 평민인 척한다.
언제든 su, sudo 등의 명령으로 신이 될 수 있지만 일반 계정에 만족하고 일을 수행해 나간다.
때로는 Administrator가 되어 전체 환경을 관리하고 때로는 architect가 되서 설계하고
coder가 되어 코딩도 한다. tester가 되어 자신이 만든 프로그램을 black box test하기도 한다.
open box가 가능함에도 가능한 자신이 구현한 내용을 잊어버리고 black box test를 시행하기도 한다.
감사관이 되서 자신의 프로그램을 평가할 때도 있다.
Wrapper function을 만들고 layer를 만들어서 아래단계를 구현한 후에는 아래단계를 잊고
윗 단계에 집중한다. (OOP의 private member, protection 등..)
동시에 client, server 역할을 모두 해내면서 protocol의 ping, pong을 에뮬레이션하기도 한다.
나는 한 명인데 수십개의 e-mail을 관리하면서 각자의 e-mail 계정에서 서로 다른 role(역할)을 가진다.


학교 메일 계정 상으로 나는 학생이고, 회사 메일 계정상으로는 회사의 내부 직원이다.
Google 계정을 쓸 때는 일반적인 internet user가 된다.


동시에 3~4개의 프로그램을 돌리고 디버깅하기도 한다.
채팅을 하면서 컴파일을 하고, 음악을 듣고, e-mail을 읽고, reference를 읽고, coding을 한다.


'Google의 나'가 'KAIST의 나'에게 말을 걸 수도 있다. (E-mail을 보낼 수 있다.)


--------------------------------------------
소설 드래곤 라자에도 주인공이 여러 역할을 독립적으로 수행한다는 데, 소설을 안되서 모르겠군.
인도 신화에서는 Avatar(분신, 현신)라고도 한단다.
http://en.wikipedia.org/wiki/Avatar

댓글 없음:

댓글 쓰기