January 2007
M T W T F S S
« Dec   Feb »
1234567
891011121314
15161718192021
22232425262728
293031  

2007년 01월 15일에 쓴 글들

객체 지향 프로그래밍 재미

[ 2007-Jan-15, 23시 46분] [ Category : 나른한 오후의 단상 ] [ 엮인글수 : 10 ]

난 프로그래밍에 대해선 철저한 사파이다.

잠깐. 프로그래밍 사파에 대해 설명을 할 필요가 있다. 프로그래밍 사파란, 책 파고 들어 제대로 프로그래밍 언어나 기법을 익히지 않고, 떠돌아 다니는 예제를 잘라다 써먹어보거나 누군가 만들어 놓은 원 재료(source)를 발라 먹으며 굳이 하지 않아도 될 삽질을 골라하는 길을 뜻한다. 난 C 언어를 빼고 내가 현재 어줍잖게나마 만지작거리거나 소스(source)를 보며 이해를 할 수 있는 언어는 모두 이런 식으로 익혔다. (c, c++(좀 구분을 하자면 win32api와 mfc도 포함), basic, perl, python, asp, php, sql, html)

사파는 대체로 깊이가 없다. 내공이 중후하게 쌓이면 사실상 정파나 사파 구분이 모호해지긴 하지만, 내공이 몇 갑자 쌓이기 전엔 정파보다 시작은 경쾌하나 조금 시간이 지나면 얕은 내공 때문에 하지 않을 수 있는 삽질을 한다.

그런데 난 사파인데다 프로그래밍을 취미로 한다. 취미로 하면 재밌는데 먹고 살려는 일로 하면 재미가 없어서 취미로만 프로그래밍을 한다. 취미로 해도 깊이 파고 들면 모르겠는데 난 성격상 취미건 먹고 사는 일이건 깊이 파고 들지 않는다. 깊이 파고 들어 장풍 쏘는 일은 나 말고도 세상에 할 사람 많으니 난 그 사람들을 알아볼 정도만 하자는 얄팍한 잔머리를 굴리며 살기 때문이다. 그래서 난 사파 중에서도 유달리 프로그래밍 실력이 부족하다.

내가 객체 지향 프로그래밍(OOP)를 처음 접한 때는 1998년이다. c++과 java를 구경하다 본 건데 한 눈에 봐도 내 취향이 아니었다. 난 c처럼 단순한(?) 놈이 좋았다. 그래서 perl이나 html같은 뻔한(?) 언어를 좋아했다(지금은 좋아하지 않는다). 물론, 단순히 취향 탓만으로 c++이나 java를 싫어한 건 아니다. 이미 c식 언어 운용에 머리가 익숙해져 객체라는 개념을 머리에 새기는데 노력이 필요했고, 노력을 들이다 흥미를 잃었다. 여전히 java를 하지 못하는 이유이다.

심심해서 Windows server용 서버 무른모(software)와 맞물려 돌아가는 일기장(?)을 만들려고 win32api와 mfc를 건드리면서 좋건 싫건 객체를 이해하게 됐다. 아, 좋네! 근데 이렇게(객체 안쓰고) 안하고 이렇게(함수형으로) 해도 잘 되네, 뭐. 개뿔이 코드(code) 재사용이야. 투덜 투덜. 어쨌건 객체를 이해하긴 했는데 별로 탐탁치 않았다.

요즘 php와 javascript를 써서 웹 관리 도구를 만들고 있다. DB를 비롯해서 기획 등등 많은 기반이 바뀌어서 저번에 만들던 것은 버리고, 새로 만들고 있다. 시간 낭비이긴 한데, 저번엔 삽질로 떡칠을 한 탓에 다시 쓸 엄두가 나지 않는다. 나보다는 덜 사파인 꺼칠이님 도움을 받아 javascript는 prototype을 비롯해 여러 쓸모 있는 것들을, php에선 json, adodb 등을 쓰고 있다. 즉, 누군가 만들어 놓은 꾸러미(library)를 가져다 쓰는 건데, 얘네들은 거의 모두 객체로 꾸려놨다.

자연스레 객체와 자꾸 부대끼고, 그러다보니 어느 새 정이 들기 시작했다. 그래서 내가 만든 함수 중 묶어 줄 수 있는 것은 클래스(class)로 묶기 시작했다. 클래스를 쓴다고 해서 객체 지향 프로그래밍이라 부르긴 민망하다만, 보란 듯이 함수로 싹 짜던 옛 습관에서 벗어나 클래스를 쓰는 지금 모습만으로도 나한텐 많은 발전이다!

아직 객체화 해서 뭐가 확 좋아졌는지는 잘 모르겠다. 쓰는 이유는 알겠는데 확 끌어 당기는 맛은 아직 별로 못느꼈다. 그런데도 class를 쓰는 건 this 쓰는 재미와 객체 연결하는 재미가 솔솔하기 때문이다. 참조(reference) 걸거나 전역 변수 걸다가 실수해서 비명 지르곤 했는데 this 하나만으로 이런 삽질이 꽤 줄었다. 더구나 캡슐화도 재밌어서 소스(source)를 웃기게 짜도 흐름을 이해하기 좋다. 소스로 장난치기는 객체 지향 프로그래밍 언어가 훨씬 훌륭하다는 걸 느낀다.

사실 php나 javascript에 있는 객체 프로그래밍 지원이 시덥잖긴 하다. 객체에 객체에 객체에 객체… 이렇게 꼬리에 꼬리를 물고 들어가는 모습을 보면 소스 그 자체가 무척 귀엽게 느껴지는데(처음에 javascript 소스를 어딘가에서 따오는데 객체에 객체에 객체 참조하는 꼴을 보고 귀여워서 깔깔깔 웃었다. 고슴도치 몇 마리가 앞선 놈 꼬랑지 물고 한 줄로 서있는 것 같아), php나 javascript는 그렇게까지 하면 애들이 멍청해지고 한다. 따지고 보면 그렇게까지 할 이유도 없다만.

아, 난 객체에 객체가 줄줄이 달리는 소스를 보면 이런 그림이 머리 속에 그려진다.
세상~~(덥썩)~~꿈틀이관리자~~(덥썩)~~현재꿈틀이~~(덥썩)~~목~~(덥썩)~~두성~~(덥썩)~~목떨기~~(덥썩)~~소리크기(30);
아, 귀여워 !!! 각 낱말을 고슴도치라 상상해보면 고슴도치 6~7마리가 앞선 놈 꼬리를 물고 있는 그림이다. 맨 마지막에 있는 놈은 똥 뿌지직.

python을 보면 객체는 이렇게 쓰면 사람을 널리 이롭게 하는구나 깨닫는다. 점 찍으며 객체가 앞선 객체 꼬리 물게 줄 세우다 보면 무척 재밌다. 근데 python 좀 보려고 하면 주변 몇 몇 사람은 Ruby를 보라고 한다. 더 간단하고 재밌댄다. 근데 Ruby는 이유 모를 이유 때문에 java처럼 내가 흥미를 느끼지 못하고 있다. -_-a 나도 이유를 정말 모르겠다. 아무튼 취향이 아닌고로 당분간 python으로 꼬리 물기하며 놀 것 같다.

아, 문득 mfc가 생각난다. 참 엿같은 놈이긴 하지만 객체를 갖고 놀며 이해하기엔 나쁘지 않는 교육 도구이다. OOP에서 private 이니 뭐니 하는 각종 OOP 개념도 mfc 갖고 놀며 익혔다. 지나치게 뚱뚱하고 멍청해서 많이 친해지고 싶지 않고, 객체를 알고 싶다면 mfc보다는 python을 보라고 권하겠다만 어쨌건 나한테 도움을 준 놈이니까 마냥 욕하기도 부담스럽다.

아아, 프로그래밍 사파로 시작해서 어느 덧 삼천포에 무사히 도착했다. 좀 더 가면 제주도도 금방이겠구만. 이때다! 어퍼컷! 후다닥.

Prison Break. Episode Hannal

[ , 10시 49분] [ Category : 나른한 오후의 단상 ] [ 엮인글수 : 4 ]

어떤 이유인지는 모르겠지만 난 구치소에 수감 됐다. 하늘색 촌스러운 활동복을 입히고 내 머리카락을 밀려 했으나 마침 오늘 ‘미용의 날’이라며 다음 날로 미뤄졌다.

나는 탈출을 계획했다. 이곳은 깐깐하기로 유명한 성동 구치소. 하지만, 내 머리는 잔머리 100만개를 뭉쳐 놓았다고 해도 누구나 믿을만큼 잘잘하게 돌아가지 않던가. 곧 잘잘한 발상을 묶어 계획을 완성했다.

성동 구치소는 곧 퇴소하는 이들에겐 주황색 활동복을, 남아 있는 이들에겐 하늘색 활동복을 입혔다. 나는 퇴소하는 사람처럼 보이기 위해 매점에서 주황색 활동복을 사입고 자연스럽게 행동했다. 생김새 때문에 간수에게 걸릴 수 있기 때문에 왼쪽 가르마를 오른쪽으로 옮기고 안경도 벗었다. 벨릭 간수장이 날 의심스레 쳐다봤지만 따로 불러내진 않았다.

퇴소자 무리 중 1조가 먼저 나갔다. 2조가 문 앞에 섰는데 불평하면서 되돌아 온다. 내 계획이 탄로난건가? 나는 3조 사람들과 함께 창고 뒤로 갔다. 발 빠른 누군가 2조와 접촉해 이유를 알아 냈다. 몇 몇 사람들이 갑자기 자신의 주황색 활동복을 찢으며 옷을 망가뜨리더니 어딘가로 달려갔다. 열심히 옷을 뜯는 옆 사람에게 물어봤다. 간수들이 대놓고 돈을 달라고 할 수 없으니 활동복을 다시 매점에서 사입게 하려고 활동복이 깨끗치 못한 사람을 골라내 새 옷으로 바꿔 놓으면 내보내주겠다고 했다는 것이다. 옷이 깨끗한 사람은 이유 없이 개인 면담을 당하고 있다고 한다. 나는 서둘러 팔 부분을 떼어냈다.

구치소 출입문 앞에 서있는 3조 사람들과 그 속에 섞여 있는 나. 벨릭 간수장은 여전히 나를 의심스레 쳐다봤지만 이미 나는 문을 나섰다. 얼른 버스에 올라타고 서울로 향했다. 옷을 망가뜨리며 내게 정보를 준 그 옆사람은 매점에서 활동복이 다 팔려 살 수 없었고, 아쉬운 대로 교복을 샀으나 벨릭 간수장의 심기를 건드리는 꼴이 되어 즉결심판으로 무기징역을 선고 받았다는 내용이 버스 안 TV에서 들려 온다.

어디선가 들려오는 노래 소리.

아, 그렇다. 이제 잠에서 깰 시간이군.