March 2005 Archives

한국의 현대 소설은 잘 읽지않는 편이다. 그렇다고, 이런 저런 소설은 읽지 않아야겠다고 작정할만한 이유가 있는 것은 아니다. 굳이 이유를 찾아본다면, 내가 살을 접하며 살고 있는 현실과 너무 가까운 것은, 날생선을 먹는 것처럼 비린내가 난달까. 나와 같은 언어로 말을 하고, 나와 비슷한 체험을 하는 사람들의 이야기는, 일부러 스스로를 지목하여 촘촘히 들여다보게 만들어서 불편하다. (“불편하다”는, 김영하의 소설들을 읽으며, 그 유용함을 발견한 표현) 기왕이면, 어느 먼 왕국의 이야기가 좋고, 수억광년 떨어진 외딴 별의 이야기가 좋다. “킬킬, 당신도 결국 이딴 종류의 인간일 뿐인거 아냐?”라고 말하는 것보다는, “원래 인간이란게 이런거라네.”라고 하는 소설이 좋다.

본의든 아니든 “문학의 이해”를 수강했던 것은, 내가 복학했던 탓이고, 본의든 아니든, 본의든 아니든 한국 작가의 소설을 읽어야 했던 것은, 내가 숙제를 하기로 마음먹었던 탓이다. 본의든 아니든 김영하를 집어든 것은, 그 사람의 책이 내겐 재미있어 보였던 탓이다.

뭐, 대단찮은 취향을 굳이 지키려고 끙끙댈 필요가 있나, 책 한 권 읽는 것에 무슨 대단한 이유가 필요한가. 사람이 그리워 서울로 향하는 버스 안에서 가볍게 꺼내들었다. 대체 왜 “우등”이라고 이름을 붙이는지 이해할 수 없는, 덜덜 떨리는 버스 안에서 책을 읽은 탓에, 친구와의 만남은 좀 피곤했지만, 책 자체는 재미있었다. 상당히 재미있었다. 대강 때려맞춰봐도, 이 작가 나랑 코드가 맞고, 이야기를 잘한다, 다른 책도 한번 사서 읽어볼까. 책 맨 뒤에 있는, 짤막한 평론은, 당연하고 대단찮은 이야기를, 굉장히 어렵게 써놓은 것 같다. 이게 뭐야. 이럴거면 그냥 붙이지말지. 내가 “문외한”이라서 그런가?

첫번째로 나오는 소설이 (얘기안했던가? 이건 단편소설집이다.) “사진관 살인 사건”이다. 제목이 말해주듯 추리소설이라는 감이온다. 실제로 추리소설의 형태를 하고 있다. 중간쯤 가면 흥미진진하다. 그런데, 이 소설에서는, 김전일 만화였다면 “범인은 바로 이 중에 있다!”라고 외치며, 의외의 인물을 지목해야하는 시점에서, 그만 시시해져버린다. 거기가 아니라, 이어지는 수사관의 후일담이 나오는 지점이 바로 독자들이 무릎을 탁쳐야하는 지점이다. 연애를 한번이라도 해본 사람은, 특히 짝사랑인지 사랑인지 모를 중간쯤의 연애을 해본 사람은, 이 단편 전체에 흐르는 두 용의자의 미묘한 감정의 흐름에 쾌감을 느낄 수 있을 것이다. 졸졸 흐르던 감정이 결말에 가서는 엄청난 양으로 증폭되어 쏟아져나온다. 그만큼 긴 여운. 그런데, 그것은 수사관 얘기처럼, 신문에 흔하디흔하게 오르내리는 추잡한 감정 놀이였을 뿐인데. 그 두사람에게는 또는 독자에게는 그만큼 드라마틱하지 않을 수 없었을 것이다. 당신이 소중하게 생각하는 연애담을 인터넷 게시판에 올리거나, 술자리 선배에게 얘기를 한번 해봐라. 다른 사람들에게는 그저 흔하디흔하고 너절한 연애 얘기에 지나지 않는다. 영화 “엽기적인 그녀”를 보면, 탈영한 군인에게 인생 강좌를 해주며, 사랑보다 인생이 중요하지 않냐고 한다. 자기네들은 사랑가지고 울고 불고 지지고 볶으면서 말이다. 지하철에서 토한 여자를 여관에 업어다 줄만큼 엽기적이고, 맞선 보는 자리에서 헤어진 여자친구를 만날 정도로 드라마틱하지 않으면, 그런 생각은 절대 않는게 좋을 것이다. 결국, 치정살인사건이 아니었다는 건, 그다지 중요하지 않다. 치정살인사건이어도 아무것도 이상할 것이 없었다는 것이 우리들이 하는 감정 놀이의 진수다.

“흡혈귀”에 나오는 흡혈귀는 멋있다. 삶과 죽음을 초월하고, 사랑을 초월하고, 시간을 초월하고, 덤으로 아는 것도 많다. 한가지라도 빠졌으면 덜 멋있었을 것이다. 내 이상형이라고 해도 나쁘지않다. “정말로 그런 멋있는 사람이 있는거야? 어떻게 그럴 수 있지?”라는 물음에, “별거 아냐, 그 사람, 흡혈귀라서 그런거아냐?”라는 느낌이다. 숨겨진 한마디는, “그런데, 뭐 어쩌라고, 제 멋대로 살겠다는데.” 정도일까.

“피뢰침”은 벼락을 맞아본 사람의 모임을 소재로 한 소설이다. 진짜로 그런 동호회가 있나하고 찾아봤지만, 그 동호회 이름인 “Adad”가 고대 오리엔트의 뇌신이라는 것 정도만 알아냈다. 주인공이 그 동호회의 회장인 J에게 대체 왜 위험을 감수하면서 다시 벼락을 맞으려하는지 묻자, J는 그 이유를 예술적 희열에 비교한다. 간단하게, 예술적/종교적 희열을 벼락 맞기의 희열로 비유한 것을 유추해볼 수 있다. 나처럼 예술이나 종교와 거리가 먼(?) 사람들에게, 명화을 그리면서 느끼는 희열이 뭔지, 신을 섬기면서 느끼는 희열이 뭔지를 말로, 글로 설명해봤자 이해할 사람은 별로 없다. 하지만, 발기한 피뢰침으로는 설명이 되는 것 같다.

“당신의 나무”는 앙코르 사원으로의 여행과, 히스테리아를 앓는 여성과의 연애를 소재로 하고 있다. 개인적으로는 히스테리아라는 단어에는 묘한 감정을 가지고 있다. 거기에는 비정상 자체가 정상인의 권력이 낳은 횡포라는 인식도 작용하고 있고, 요즘 시대에 히스테리아에 대해서 좀 알고 있으면 유식하게 보이는 것도 있고, 더욱 근본적으로는, 히스테리아를 앓는 여성을 사랑한 적도 있었기 때문일 것이다. 나도 그런 시절의 어느쯤엔가는 “당신의 나무”가 되고 싶었던 적이 있었고, 이성으로 설득하려고도 해보았고, 감정을 내세워 달래보기도하고, 정신의학 입문서나 프로이트도 읽어보았다. 결론은, 난 “당신의 나무”가 될만한 능력따위는 애초부터 없다는 것이었고, 포기할 수 밖에 없었다. (어쩌면 그러한 포기 자체가 그 점을 입증하는 걸지도 모른다.) 내가 그녀에게 “당신의 나무”가 아닌 것은 확실하지만, 그녀는 나에게 “당신의 나무”인가? 글쎄, 별로. 소설에서처럼 앙코르에라도 가봐야 깨달음을 얻을려나.

친구들이 이 책에 대해서 어떻게 생각하느냐고 묻는다면, “글쎄, 읽어볼 만 하긴 하다” 정도가 될 것 같다. 덧붙인다면, “매우 재미있다. 김영하를 한권 정도 더 사볼 생각이다.”가 될 것 같다. 한가지 아이러니는, “친구”는 보통 접근성이나 신뢰의 정도에 의해서 결정되고, 정작 책을 추천해줄 때 중요한 기준이 되는 취향에 의해서 결정되지는 않는다는 점이다. 그래서, 이 글은 별로 쓸모가 없는 것 같다.

Google Code

| | Comments (0) | TrackBacks (0)

병역특례를 마치자마자, 첫번째 교육훈련 소집이 나왔다. 학교에 예비군 군대가 없으므로, 갈마 2-2동대 소속이 되었다. 따로 신고를 안해도 바로 지역 예비군에 편입되어버리는 것 같다.

교육훈련 소집 통지서랑 병력동원지정해제 안내문이 같이 날아왔는데, 이건 동원훈련을 가지 않아도 된다는 얘기다. 동원부대가 있어서, 평상시에도 현역들이 상주(?)하고 있는데, 동원훈련이란 동원된 예비군들이 현역들과 함께 2박 3일 정도로 훈련하는 것을 말한다.

나같은 1년차 동원미지정자의 경우, 동미참훈련이라고 해서 24시간 훈련이 1년에 한번씩 있는 것 같고, 이번에 나온 것 같은 6시간 짜리 향방작계훈련이 1년에 2번 있는 것 같다. 1년에 3번씩이나 정체성을 버리고 군인이 되어야하다니, 상당히 스트레스 받을 것 같다. 어떻게보면 동원훈련 가는게 더 나을 것 같기도 하고.

어쨌든, 다행히도 대학생(복학생)은 훈련을 보류할 수 있다. 재학증명서를 가지고 소속 동대에 가서 보류신청을 하면 된다. 모든 훈련이 보류되는지는 모르겠지만, "교수님, 예비군 훈련때문에 저번 시간에 못나왔습니다."라고 할 상황이 없길 바란다.

나같은 사람이 졸업한 이후에 예비군 훈련을 하지않으려면, 외국으로 6개월 이상 나가있는 수 밖에 없다. 국회위원, 법관, 검사가 되든가, 사회안전에 관련된 직업들(경찰관, 소방관), 아니면 교수가 되는 방법도 있긴 하지만, 내가 해당되는 건 없을 것 같다. 고급인력이 외국으로 유출되는 큰 원인 중의 하나가 예비군이 아닐까...하는 생각도 든다..농담.

자세한 것은, http://www.yebigun.or.kr/ 참고.

 

Exceptional C++ Style by Herb Sutter

Exceptional C++, More Exceptional C++에 이은 세번째 gotw 책이다. gotw (Guru of the Week)란, C++ 프로그래밍에 관한 Herb Sutter의 연재물이다. Herb Sutter의 홈페이지에 잘 정리되어있으면서, CUJ에 가끔 실리기도 하고, 책으로도 출간된다. 현재까지 87번까지 나와있는데, #1~#30은 Exceptional C++에, #31~#62는 More Exceptional C++에, #63~#86은 바로Exceptional C++ Style이다.

주변이나 커뮤너티에서 C++ 관련 질문을 하면, 내가 자주 언급하는 것은 바로 gotw다. 그만큼 C++ 프로그래머가 자주(언젠가는?) 접하게되는 문제들을 gotw가 다루고 있기 때문이다. (Effective 시리즈들도 비슷한 성격을 갖고 있지만, C++ 프로그래머들이 보편적으로 읽는 필수서라서 굳이 언급하게 되는 기회는 없는 것 같다.) 굳이 책을 사서 읽지 않더라도, 시간날 때마다 웹에서 gotw item 하나씩 읽어보는 것도 괜찮을 것이다.

기존 Exceptional 시리즈의 형식이나 내용의 질을 그대로 유지하고 있기 때문에 기존의 글에 덧붙여서 별다른 설명은 필요하지 않을 듯 하다. 아쉽게도, 아직 번역은 되지 않았다.

 

Writing Solid Code by Steve Maguire

번역판을 읽었다. 원제는 'Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs'. 대체로 C/C++ Programmer를 대상으로 한 버그를 줄이기 위한 프로그래밍 기술에 관한 유명한 책이다. 하지만, programming language에 한정되지않는 조언들도 있다. Steve Maguire의 Microsoft에서의 실제 경험을 바탕으로 지어진 책이고, 실제로 그의 경험들이 예시로 등장한다.

이 책에는 다음과 같은 조언들이 등장한다.

- Enable compiler warnings and pay attention to them.
- Use assertions to validate your assumptions.
- Don't quietly ignore error conditions or invalid input.
- For a complicated, critical algorithm, consider using a second algorithm to validate the first. (e.g. validate binary search with a linear search).
- Don't write multi-purpose functions such as realloc (it can grow memory, shrink memory, free memory, or allocate new memory -- it does it all).
- Check boundary conditions carefully.
- Avoid risky language idioms.
- Write code for the "average" programmer. Don't make the "average" programmer reach for a reference manual to understand your code.
- Fix bugs now, not later.
- There are no free features; don't allow needless flexibility (like realloc).
- Ultimately the developer is responsible for finding bugs; he shouldn't write sloppy code and hope that QA will find all his bugs.

[from Paul J. Mantyla's comments in Amazon]

대체로 programming을 1-2년 정도 한 경험이 있는 사람이라면, 이러한 충고들은 대체로 스스로 익힐 수 있다. 시행 착오를 피하기 위한 책 정도가 될까. 오래된 책이라서 (1993년에 출판), 설명을 위한 예들 역시 오래된 감이 있지만, 충고들 자체는 여전히 유효하다. C/C++ programming job을 얻기 전의 학생들은 한번씩 읽어보면 좋을 듯한 책이다. 어느 정도 숙련된 programmer라면 부담없이 읽어볼만한 책이라서, 화장실에 두고 심심풀이로 읽는 것도 나쁘지는 않을 듯하다.

번역은 몇가지 용어의 번역이 모호해서, 원서를 찾아보기도 했지만, 무난한 편이었다. 번역서다 보니, 1-2일 정도만에 다 읽을 수 있었다.  조판 자체가 깔끔하지 못해서, 딱히 소장하고 싶은 마음이 들지 않는다. 번역서는 누군가에게 줘버리고, 원서만 가지고 있을 생각이다.

Test Driven Development: By Example by Kent Beck

TDD는 XP와 함께 매우 유명한 프로그래밍 기술 중의 하나다. 어느 정도 TDD나 Agile software development methodology에 관심이 있는 사람이라면, "Test First"가 TDD의 가장 중요한 idiom을 알고 있을 것이다. 'automated test를 먼서 작성하고, test를 동작하게 만들기 위한 가장 간단한 code를 작성하고, refactoring은 가능한 한 뒤로 미루라'는 것이 TDD의 기본이다.

이 책은 세 개의 파트로 나뉘어있다. Part I은 어떤 story (일종의 requirement)를 구현하는 과정을 TDD를 사용해서 보여주고 있다. Part II는 xUnit이라는 tool을 사용해서 TDD를 좀 더 편리하게 수행하는 것을 보여주고 있다. Part III는 TDD와 연관된 여러가지 pattern들을 정리해두었다.

TDD는 여러가지 이익을 가지고 있지만, 가장 마음에 드는 것은 test 설계부터 하기 때문에, 구현자의 입장보다 사용자의 입장에서 먼저 생각해보게 되고, 결국 interface의 품질이 더 좋아진다는 것이다. interface는 중요하지만, implementation은 그다지 중요하지 않다. implementation은 변경할 수 있고, interface는 그렇지 않을 가능성이 크기 때문이다. 이미 사용자들이 interface를 사용하고 있다는 이유로 대충 설계해놓은 interface를 개선할 수 없게되는 경우를 흔히 볼 수 있다.

번역도 되어있고 하니, 한번쯤은 읽어볼만한 책이다. 아마 집중해서 읽으면 2-3일이면 다 읽을 수 있을 듯 하다.

Object Thinking

| | Comments (0) | TrackBacks (0)

Object Thinking

'Introduction to Software Engineering' 과목에서는 Object-Oriented Design을 가르친다. 간단한 정의와 함께, UML design 과정에서 use case로부터 object를 골라내서 class diagram을 그리는 법은 가르친다. 하지만, 아무도 object-oriented programming paradigm 뒤에 들어있는 생각을 가르쳐주지는 않는다. (물론, 다룰 주제가 많은 software engineering 과목에서 OOP를 깊게 설명하기는 어렵다.)

OOP language를 쓰는 것은 일종의 유행이다. 모두들 그 이유를 잘 알지도 못하면서 OOP를 선호한다. 심지어는 그것이 무엇인지도 모르면서 말이다. 사실, 나도 그런 사람들 중의 하나였고, C를 사용한 procedural programming paradigm에 익숙해지고 난 후, 주로 OOP language (C++, Java, Python, Ruby, ...)를 사용하기 시작하면서, 계속 던지게 되는 질문은 OOP란 무엇인가, 대체 procedural programming paradigm보다 object-oriented programming paradigm이 무엇이 우월한가라는 것이었다.

'Object Thinking'은 이러한 질문에 답변해주는 책이다. 즉, SE 과목에서 한두페이지의 페이지에 설명해놓은 것을 이 책에서는 300페이지에 걸쳐서 설명해놓은 책이다. OOP는 technique이 아니라 paradigm이다. 생각하는 방식은 누군가의 간단한 한마디 말로는 바뀌기 힘들다. (물론 그런 경우도 있다.) 'Object Thinking'은 'object philosophy', 'object culture'란 말을 도입한다. 당연하게도, 사상(thinking)에는 철학(philosophy)이 전제되고, 문화(culture)가 따르고, 역사(history)를 가지기 마련이다. object thinking의 중심 원리(principle)들과 역사를 설명하고,  다른 philosophy와 culture와 대조를 함으로써 object thinking이 무엇인지가 조금씩 드러난다.

이 책에서는 단지 OOP가 무엇인지에 대해서만 다루고 있는 것은 아니다. OOP 외에도 software development의 여러가지 생각(thought)들을 object culture의 범주안으로 통합시킨다. 특히, XP와 같은 Agile software development가 여기에 해당된다. 따라서, 이 책에서 얘기하는 'object thinking'은 단지 OOP가 아닌 것이다.

또, 이 책에서 설명하는 OOP는 Booch를 중심으로 표준화된 전통적인 SE 진영의 OOP와는 조금씩 다르게 보인다. 여러번 책에서 언급되는 Smalltalk community 쪽(이를 공식적으로는 어떻게 지칭하는지 모르겠다.)에서 발전된 생각으로 보인다. 한가지 예로, OOP에 관한 여러 책들에서 object란 data와 algorithm의 결합이라고 지칭하지만, 이 책에서는 그러한 생각을 과감하게 거부한다. object란 behavior로 정의된다고 주장한다. 이러한 생각 한가지만으로도 object design에는 엄청난 영향을 미치게된다고 생각된다. (이 주제에 대해서는 나중에 따로 다뤄보겠다.)

아직 번역서가 없지만, 여력이 된다면, 또는 언젠가 번역이 된다면, 반드시 읽어보라고 추천해주고 싶은 책이다. 시간이 난다면, 이 책에서 인상 깊었던 생각들을 조금씩 블로그에 정리해볼까도 한다.

Author

Linko Apple Booth in the Coex Seoul Email address

Recent Comments

  • lastmind.net: 오! 반가워요~ read more
  • coolluck: 안녕하셔요. 저는 최민수라고 하는데 네오위즈 있을 때 잠시 인연이... 저도 read more
  • lastmind.net: 와, 정말이네요. 거기까지는 생각이 미치지 못했습니다. ^^ read more
  • 홍민희: 굳이 string concatenation 쓸 필요 없이 "\0012\0"이라고 써도 됩니다. 최대 read more
  • waitfor: mod_php 로 구글링중 우연히 방문했습니다. 좋은글이 많아 자주 들르게 될것같습니다. read more
  • 죠커: 스몰 릴리즈 오랜만에 듣는 단어이네요. 한동안 스몰 릴리즈를 잊고 있었던 read more
  • Joseph Jang: 확실히 그 점이 가장 큰 장점인 것 같네요. read more
  • Joseph Jang: 아, 퍼키 님에게 언뜻 들었는데, 그런 게 있었네요. ^^ read more
  • lastmind.net: 감사합니다. 솔직히 말하자면, 이런 글 나부랭이 하나가 칭찬 받을 정도로 read more
  • 최익필: 언제 들려봐도, 좋은 내용이 무척 많아 행복합니다. 개인적으로 영어를 무척 read more

About this Archive

This page is an archive of entries from March 2005 listed from newest to oldest.

February 2005 is the previous archive.

April 2005 is the next archive.

Find recent content on the main index or look in the archives to find all content.