19 Jan 2007
쉬운 말로 설명을 해주니 얼른 못알아 듣는다. 쉬운 말로 설명해달라고 한다. 그래서, 어려운 말로 설명을 해주었더니 알아 듣는다. 대체 내 주둥이가 문제인거야 아니면 그 사람 귓구녕이 문제인거야?
그러니까.
이 도구는 인터넷(internet)에 있는 정보물이나 자료를 갈무리 해 담아두고, 빠르고 편하게 찾아 꺼내 볼 쓸모가 많다. 사용자가 자주 찾는 낱말을 통계내어 가장 가까운 자료를 꺼내 주기도 하고, 영어에 한하긴 하지만 이용자가 찾는 낱말과 가까운 낱말에 연결된 자료를 제시하기도 한다. 더구나 그림, 문서 자료를 비롯해 여러 자료 형식을 담을 수 있으며, 각 자료에는 인터넷 주소를 남겨서 del.icio.us같은 즐겨찾기 서비스(service) 기능도 맛볼 수 있다.
이 말을 할 때는 얼른 내용을 정리 못하더니
이 툴(tool)의 유용함은 인터넷(internet)의 컨텐츠(contents) 등을 스크랩(scrap)하고 검색하는 데 있다. 유저(user)에 의해 축적된 빈도수 정보를 토대로 검색어에 따른 근접 자료를 탐색하고, 영어에 한하여 근접어로부터 연결 자료를 출력한다. 이미지(image)나 도큐먼트(document) 등 여러 개의 포맷(format)을 모두 스크랩 할 수 있으며, 인터넷 주소가 첨부된 자료는 del.icio.us과 같은 북마크(bookmark) 서비스(service)에서 접할 수 있던 북마크릿(book marklet) 펑션(function)으로도 활용이 가능하다.
이렇게 풀어서(?) 말을 하니 금방 알아 듣더라.
과장했다 생각하는가? 자신은 그렇지 않다고 생각하는가?
하긴. 같은 말이라도 쉽다고 느낄 수 있고 어렵다고 느낄 수도 있지. 그럼 내 주둥이가 문제인건가? 말하기도 어려운 세상이다.
15 Jan 2007
난 프로그래밍에 대해선 철저한 사파이다.
잠깐. 프로그래밍 사파에 대해 설명을 할 필요가 있다. 프로그래밍 사파란, 책 파고 들어 제대로 프로그래밍 언어나 기법을 익히지 않고, 떠돌아 다니는 예제를 잘라다 써먹어보거나 누군가 만들어 놓은 원 재료(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을 보라고 권하겠다만 어쨌건 나한테 도움을 준 놈이니까 마냥 욕하기도 부담스럽다.
아아, 프로그래밍 사파로 시작해서 어느 덧 삼천포에 무사히 도착했다. 좀 더 가면 제주도도 금방이겠구만. 이때다! 어퍼컷! 후다닥.