misc.log2006. 10. 9. 08:45

"지정문답 XXX"놀이. 나에게는 당연한 귀결인지는 몰라도 '프로그래밍'이란 주제가 떨어졌다.

 

최근 생각하는 『프로그래밍』
 화가는 그림으로 자신의 세계에 대한 생각을 표현하고, 소설가는 소설을 씀으로써 자신의 세계에 대한 생각을 표현한다. 마찬가지로, 프로그래머는 프로그래밍을 함으로써 자신의 세계에 대한 생각을 프로그램으로 표현한다.

 화가가 처음 그림을 배울 때는 직선 긋는 훈련, 원을 그리는 훈련, 색을 보는 훈련을 거치고, 음악가가 처음 음악을 배울 때도 음을 구별하는 법, 악기를 다루는 법, 악보를 읽는 법등의 기본기를 거친다. 그 후에는 기술의 유무보다는 저작자 자신의 아이디어와 개성이 최종 저작물의 질을 결정하게 된다. 프로그래밍도 마찬가지여서, 언어의 문법, 개발툴의 사용법, 기본라이브러리, 몇가지 기초 학문의 지식만 있다면, 그 뒤의 작업은 프로그래머 자신에게 달린 문제다. 지금 하고 있는 일만 해도, 5년전에 익힌 기술 이상의 기술을 필요로 하지를 않는다. (하긴, 엔진이 5년전 엔진이니) 새기술의 습득보다는 내 스타일의 확립이 중요하다고나 할까.

 

이 『프로그래밍』에는 감동

"프로그래밍"은 '프로그램을 짜는 작업'을 지칭하는 것이므로, 나로서는 다른 사람이 어떻게 작업을 하는지 알 수 없다. 어떻게 한 소설가가 다른 소설가가 타자기를 놀려 소설을 완성해 나가는 작업을 평가할 수 있겠는가.

다만, "프로그램"이라면 평가의 대상이 될 수 있다. 내가 지금까지 접해본 것중 가장 훌륭한 프로그램을 말하자면, MS엑셀이다. 효율성부터 설계의 일관성까지 어느 것 하나 놓치지 않은 정말 훌륭한 프로그램이다. 나중에 '조엘 온 소프트웨어'를 읽고 나서 속으로 "이런 훌륭한 사람이 참여해서 만든 프로그램이라 훌륭했구나"라는 생각을 했을 정도.

* 효율성 : 엑셀은, 조엘의 말을 빌자면 "번개같이 빠른" 프로그램이다. 방대한 양의 계산을 순식간에 처리해 낸다. 단순히 컴퓨터니까 계산을 빨리 한다는 의미가 아니다. 같은 일을 하는 다른 프로그램에 비했을 때 속도가 월등히 빠르다. 계산 뿐만 아니라, 사용자 인터페이스도 번개같이 빠르다. 아래한글이나 MS워드에서 표를 만들고 표 구분선을 마우스로 드래그해서 움직일 때의 반응성과, 엑셀의 셀 구분선을 드래그해서 움직일 때의 반응성을 비교해보라. 엑셀은 정말 끔찍히도 효율적인 프로그램이다.

* 설계의 일관성 : 엑셀 매크로를 써 본 적이 있는가. 사실 매크로의 기본은 작업 내용을 기록해서 나중에 다시 반복하게 해 주는 기능이다. 그런데 MS에서는 이러한 기본 기능을 확장하고 추상화하여 '작업 내용'을 객체로 간주하고 이를 비주얼 베이직의 문법으로 접근할 방법을 마련했다. 이것이 VBA, visual basic for application 이고, 엑셀에는 당연히 엑셀VBA가 매크로로 탑재되어 있다. 엑셀의 모든 구성요소가 객체 단위로 일관성 있게 구성되어 있기 때문에 가능한 기능이다. 그러기에 엑셀VBA를 이용하면 엑셀을 거의 완전히 내 손에 맞는 전용 툴로 개조할 수 있다. 더군다나 어떤 매크로가 포함된 문서를 여느냐에 따라 외양과 기능이 완전히 달라지는 유연한 전용 툴이 되는 것이다.

보통 프로그램은, 유연하면 속도가 느리게 마련이고, 속도를 빠르게 하려면 유연성이 떨어지게 마련인데, 엑셀은 그 둘을 다 충족시켜 버렸다. 감동적이다.

 

직감적 『프로그래밍』, 좋아하는 『프로그래밍』, 그리고 싫어하는 『프로그래밍』
기획안에서 머릿속에 프로젝트의 모든 구성요소의 설계가 이루어질 때가 있다. 일관성 있게 잘 짜여진 기획안이라면, 코드의 설계도 일관성 있게 잘 짜여지게 된다. 심지어는, 어서 설계를 그려놓고 이 설계에 맞는 코드를 써 넣고 싶어서 안달이 날 지경.

그러한 설계를 구현할 때에는 손가락이 키보드 위를 달리는 느낌, 혹은 손가락과 키보드가 일체가 되는 듯한 느낌, 혹은 손가락이 키보드에게 말하고 있는 듯한 느낌, 혹은 코드가, 전체 설계가, 전체 시스템이, 하나의 세계가 손가락 끝에서 뿜어져 나오고 있는 듯한 느낌.

분명, 이 세계를 신이란 존재가 만들었다면, 분명 신도 그러한 일관성있는 짜임새를 목표로 하고 세계를 만들면서 즐거워 했을 거라고 생각한다.

 

반면, 일관성이 떨어지거나 전혀 종잡을 수 없는 설계로 작업할 수 밖에 없는 상황도 분명 존재한다. 그럴 때는 코드 한줄 한줄 을 쓸 때마다 하품이 나오고 따분하다. 말할 것도 없이 최악의 상황.

 

세계에 『프로그래밍』이 없었다면

프로그래밍이 존재하지 않는다는 말은, 프로그래머나 프로그램 역시 존재하지 않는다는 것이고, 이는 곧 컴퓨터가 존재하지 않는 세상을 암시한다. 그럼 인류는 달에도 가지 못했을 것이고, 원자력 발전소도 수시로 폭발했을 테고, 인간 게놈도 밝혀내지 못했을 테지. 그리고 아마 사람들은 컴퓨터를 붙잡고 있는 대신 친근한 사람들과 조금이라도 더 많은 시간을 보냈을 지도 모른다. (하지만 아마 컴퓨터 대신 TV를 붙잡고 있을 공산이 크다고 생각한다)

나? 컴퓨터가 없는 세상이었다면, 아마 어렸을 적, 컴퓨터를 몰랐던 때의 장래 희망처럼 이론물리학을 하거나... 도서관 사서, 그런 것을 하게 되지 않았을 까 싶다. 더 나은 것인지 아닌지는 모르겠다. 지금도 그리 나쁘진 않으니까.

 

바톤을 받는 5명 (지정과 함께)

- 징 : 무협

- 미러 : 하루키

(더이상 이 블로그에 오는 사람이 없음. 생략)

 

Posted by uhm