|
프로그래머가 생각하면서 풀어보기에 두뇌 단련은 당연히 될 거라 생각한다.
우리들은 이런 자료구조나 로직들을 풀어보는 것이 학습의 과정이었으므로,, 프로그래머를 위한 책이라기 보다는 퍼즐문제를 어떤 논리적인 과정으로 풀까를 훈련시키는 책이라고나 할까...
이런 난해한 퍼즐들을 언제 풀어봤는지 모르도록 오래되었다는 생각이 든다..
매일 이론서들 그리고 문화에 관련된 책들만 ( 인문학적인 성격 탓에 ) 보아왔는데..
오랜만에 이런 책을 봐서 참 재미있었다...
개발자로서 두뇌를 단련하고자 하는 이에게는 많은 도움이 될 거라 생각한다.
모두다 쉽지가 않아서 특별히 생각나는 것이 없긴 하다.
|
|
이 책은 단순히 정독으로 되는 책이 아니다.
아니 정독을 하면 오히려 책의 의미를 못살린다고 해야 할 것 같다.
난 처음 연습 문제 부터. 허걱덕 했다. ㅋ
이거 원. 지하철에서 책 읽기를 좋아하는 나로써는 지하철 내에서 가볍게 읽기는 힘들다. 많은 생각이 필요하고, 풀이? 도 필요하다.
지하철 타고 가는 30분 동안. 머리로 생각하면서 해결하기로는 어렵더라 ;
또 해설을 읽어도 이해하는데 한참 걸리는 ㅋ
하지만 문제 하나하나를 풀어가면서 내가 책을 읽을때는 프로그래밍 적으로 생각하는 것이 느리구나 라는 생각이 퍼득 들었다.
해설을 읽어서 이해하기 힘든것은 역시 번역본이라 그런것도 약간 들어 있는 것 같아 아쉬움이 남는다.
제목 그대로 두뇌 단련이 되는 책이다.
프로그래머. 잘 프로그램짜는 프로그래머. 많은 분들이 느끼겠지만 프로그래머써로의 끼도 필요하고 사고전환? 생각?도 필요하다.
아마 이 책을 읽다 중간에 포기하지 않고 이 문제를 즐겁게 풀 수 있는 날이 온다면 아마도 프로그래머로써의 없던 끼도 조금은 생기지 않을까 생각한다.
|
|
이 책의 제목의 "프로그래머" 라는 글을 보고, 프로그래머만 볼 수 있는 책인가? 라는 생각을 가질 수도 있을 법하다. 나도 물론 그랬고 다른 프로그래머들도 그랬으리라 생각된다.
사실 퍼즐책을 Wrox라는 유명 외국 컴퓨터책 출판사에서 출판한다는것도 이치에 맞지 않을 법 하고 프로그래머에 특화된 퍼즐 문제가 수록되어 있나? 라는 생각을 하는것도 무리가 아니다. 더군다나 번역자도 IT전문 번역자인 류광씨! 여타 퍼즐책에 비하면 전산학에서 다룰 법한 내용이 들어가 있는것도 사실이지만 프로그래머가 아니더라도, 충분히 같이 보고 즐길 수 있을만한 퍼즐책이다.
처음 책을 받아 보았을땐 약간 만만하게 보았다. 금방 페이지를 넘기고 얼마 가지 않아 책을 모두 읽고 퍼즐을 감상할 수 있게 될줄 알았다. 하지만, 그건 아니였다. 퍼즐의 난이도는 생각보다 높았고, 번뜩이는 재치나 영감으로 풀 수 있는 류의 퍼즐은 극히 드물었다. 깊은 사고를 통해서 문제를 풀어야 하는 퍼즐들이 대부분. 마치 프로그래밍을 할때 많은 생각이 필요한것 처럼 이 책의 퍼즐도 그러했다. 덕분에 아직까지도 모든 문제를 다 보진 못했다. 그냥 문제를 읽고 답을 읽는 식으로 했다면 금방 읽을 수 있을지 몰랐으나 그러면 퍼즐책을 보는 의미가 없다고 생각하기 때문인데, 결국 책도 다 읽지 않고 리뷰를 남기는 신세가 되었다. Programming-Challenges와 마찬가지로 두고두고 문제 풀이를 즐기는 책으로 삼을 생각.
퍼즐의 난이도를 결정하는건 단순히 퍼즐이 어려워서 만은 아니다. 문제를 이해하는데도 어려움이 있다. 류광님의 번역은 여타 번역보다 믿을만 하다고 생각하니, 부족한 내 이해력을 탓할 뿐이다.
1부의 첫 장엔 슈퍼 프로그래머를 꿈꾸는 프로그래머라면 이 책에 불을 붙이고 볼만한 글귀가 써 있다. "이 퍼즐들을 풀 수 있다면 당신은 관리자 타입이 아니다. 관리자가 되기에는 너무 뛰어난 인재이다."
책에 있는 문제중 연습문제는 그럭저럭 풀만하다. 하지만 연습문제를 심화시켜 낸 본격 문제는 그리 녹록치않은 문제들이 대부분이다. 심지어 풀이를 읽어보고도 이해가 안되는 문제조차 있다!
2부의 내용은 보다 프로그래밍적이다. 문제 풀이를 알고리즘적으로 접근을 했으며 문제를 풀며 마치 UVa에 있는 프로그래밍 문제를 푸는 느낌이 들기도 했다. 책에 있는 풀이를 보고 나서 직접 마음에 드는 언어로 문제를 푸는 프로그램을 작성하는 것도 좋을법하다.
이건 프로그래머가 아니면 하기 힘든 일이겠지만 프로그래머가 아니더라도 문제를 푸는 알고리즘을 생각해 내는 과정을 겪어보는건 재미있는 경험이 될꺼라 생각한다. 3부는 소설이 등장하는데 이 소설에 있는 문제를 모두 풀어서 저자의 메일로 보내면 선물까지 준다고 한다. 단, 문제는 영문이 들어가 있으며 영어가 약한 경우엔 소설조차 읽기도 힘들다. 하지만 친절하게도 역자 류광의 홈페이지에 영문을 올리면 해석을 해준다고 하니 영어가 약하도 도전해볼만한 가치가 있다. 그렇지만 선물엔 Worx원서도 있으니 선물을 받고 나서 머리가 아파질수도 있으니 주의!
아쉬운점은, 프로그래머를 위한 퍼즐책 이라는 다소 버거운 제목 때문인지 순수 퍼즐책에 비하면 퍼즐이 약한듯 하고 순수 알고리즘 책에 비하면 알고리즘에 대한 설명의 깊이가 부족하다는 것이다.
하지만, 주위에서 퍼즐 풀이를 싫어하는 프로그래머를 보곤 하는데 이 책을 추천해 주면서 퍼즐 풀이에 재미를 들여 보라고 권유하고 싶다. 그도 관리자가 되긴 아까운 인재이고 싶을 테니 퍼즐에 더 재미를 붙이게 될 수 있지 않을까?
|
|
이 책의 제목을 보고 떠오른 책이 있습니다. Programming Challenges 입니다. 내용도 비슷할 거라 생각했습니다. 그런데 예상이 빗나갔습니다. 180도라고 단언할 수 없지만, 확실히 다른 내용입니다. 이 책은 제목 그대로 퍼즐 책입니다. 책 제목에 "프로그래머"라는 말이 들어갔다고 '프로그래밍 퍼즐'을 예상하는 분들이 없길 바랍니다. 물론 프로그래밍을 통해서 문제에 접근할 수도 있습니다. 하지만 프로그래밍을 전제로 하지는 않습니다. 그러므 로 꼭 프로그래머가 아니어도 좋습니다. 논리적인 사고가 가능한 사람이라면 누구든지 도전해볼만 합니다. 하지만 만만하지는 않습니다. 아직 모든 문제를 풀어보지는 못했지만, 제가 풀어본 문제들은 모두 상당한 난이도였습니다. (아마 저는 보통 수준의 지능을 가지고 있을 겁니다.) 고등 교육과정에나 나오는 복잡한 수학 공식은 필요하지 않습니다. 하지만 높은 수준의 수학적 사고가 필요합니다. 하지만 겁먹을 필요도 없습니다. 보통 사람인 저도 해냈으니까요. 풀이 시간에 여유를 두고 차근차근 진행하다 보면 실마리를 찾으실 수 있을 겁니다. 퍼즐의 재미가 이런 것이 아닐까요? "이걸 대체 어떻게 풀까"싶은 문제도 이리저리 굴리다보면 실오라기 끝을 발견하실 수 있을겁니다. 그 다음은 집중해서 실 끝을 따라가기만 하면 되지요. 실 끝을 따라가다 보면 또다른 실뭉치를 만나는 경우나 허망하게 끊어져 있는 경우도 있습니다. 그래도 계속 시도하다 보면 풀리게 되어 있습니다. 그 런데 정작 이 책에서 실마리를 풀어나가는데 방해가 되는 요인은 난이도 보다는 번역 상태였습니다. 완역하려는 노력도 바람직하지만, 그러다보니 직역된 문장이나 영어식 표현이 많았고 어색한 단어(예: 보편적발견법론자)도 많았습니다. 이런 어려운 주제일수록 입에서 술술 읽혀야 재미가 나는 법인데, 이 책은 그런 점에서는 아쉬움이 있었습니다. (책을 읽다가 가끔은 원서를 찾아보고 싶기도 했습니다.) 원래 의미를 살리면서도 읽다가 뚝뚝 끊어지지 않도록 우리말에 맞게 흐름을 고쳐썼으면 더 좋은 책이 되었을거라 생각합니다. 아쉬운 부분이 있긴 하지만 시간을 두고 천천히 읽어볼 만한 책인것 같습니다. |
|
'프로그래머 두뇌단련 퍼즐 44제'
책 속 퍼즐을 차분히 풀기 위해선 많은 시간들이 필요했다. 문제는 갈수록 규칙이 복잡해졌고 이를 모두 고려해가며 문제를 명쾌하게 풀어내기란 쉽지 않았다. 실제로 혼자 힘으로 풀어낸 문제는 몇 문제 되지 않았다.
책에서 가장 흥미있었던 문제는 스도쿠 문제였다. 이 책 속의 스도쿠 풀이 방식을 알기 전에는 스도쿠에 도저히 흥미를 가지기가 힘들었다. 하지만 책 속 스도쿠 풀이 프로그램의 의사코드를 읽고 나서는 스도쿠 문제가 보일 때마다 의사코드의 방식대로 스도쿠 문제를 풀어나갔다. 스도쿠속에 존재하는 어떤 규칙으로 문제 해결 방식을 정형화 해나가는 것이 흥미로웠다.
가장 마지막 챕터에는 짧은 소설도 있다. 흥미있는 소설을 읽어나가며 퍼즐을 푸는 재미도 색대른 재미였다.
이 책의 가장 아쉬운 점이 두가지 있었다.
두번째는 곳곳에서 보이는 껄끄러운 번역이다. 내가 번역서를 꺼리는 가장 큰 이유는 번역이 자연스러운 컴퓨터서적을 거의 본 적이 없었기 때문이다. 오히려 적절치 못한 번역문장이 문제를 이해하는데 더욱 혼란을 주었다.
처음 제목에서 느꼈던 흥분과는 달리 편안한 마음으로 가볍게 읽을 수 있는 책은 아니었다.하지만 항상 여러가지 문제들과 씨름을 해야하는 프로그래머가 좀 더 재미있는 상황 속 문제와 씨름을 하는것도 유익한 시간이 되지 않을까 생각해본다. |
|
"프로그래머 두뇌단련 퍼즐 44제"
처음 리뷰어 신청할 때는 내가 프로그래머 였고 두되단련? 퍼즐?...
하는 호기심이였다.
하지만 책장을 넘기는 순간, 내가 어렴풋이 기대하고 짐작했던 그런 내용과는
솔직히 차이가 있었다.
우선 이 책은 너무나 수학적인 접근으로 풀 수 있는 퍼즐이 대부분이였다.
논리가 아니가 뭔가 끄적거려 계산을 해야할 것 같은...
게다가 직역과 중요한 부분의 오타로 인해, 한동안 '왜 이렇지?'라고 고민하게
도 했다.
평소에 퍼즐에 관심이 매우 많고 수학적인 계산을 좋아하는 사람이라면 모를까
단순히 제목에 들어간 프로그래머라는 단어에 혹하신 분이라면 이 책의 포커스를 먼저 생각해봐야 할 것 같다.
하지만 오랫만에 머리싸매고 왜 이럴까? 어떻게 이렇게 되지? ..라며 머리를 굴려보게 한 고마운 책임에는 틀임없는 것 같다.
|
|
이 책을 볼때 필수 아이템이 두가지가 필요하다. 종이와 연필...이게 없이 그냥 읽어 내려갈 생각이라면 그다지 추천하고 싶지는 않은 책이다.
이 책은 무언가를 가르쳐 주기 위한 내용이라기 보다 이 책을 통해서 무언가를 더 빨리 배울수 있는 방법을 가르쳐 주려고 하기 때문이다. 점심시간을 통해 종이와 연필로 하나씩 문제를 풀어나가다 보니 이제는 지하철 상점에서 파는 퍼즐 잡지를 하나쯤 사서 더 풀어 보고 싶어지네요...
이책에서 무언가를 바라지 않고 그냥 머리를 식히기 위한 퍼즐잡지 정도로 생각하고 본다면 아마 아주 훌륭한 취미가 될 수 있지 않을까 싶다. |
|
책을 읽어가면서 느낀점은 퍼즐이 생각했던것보다 상당히 어렵습니다.
2부에서는 1부보다 더 프로그래머에 조금 더 친근하게 느껴집니다. 2부에서는 1부와는 달리 퍼즐들을 풀어나가는데 프로그램적으로 접근을 하기 때문인데, 처음볼때에는 '어떻게 풀지?'라는 생각이 들지만 문제 밑에 제공하는 힌트들을 보게되면 문제에 접근하는데 도움이 됩니다. 또한 퍼즐마다 약간의 코드들도 포함되어있어서 그것들을 기반으로 자신있는 언어로 프로그램을 작성할 수도 있습니다. 물론 힌트들을 본다고 해도 모르는 문제는 여전히 모르지만, 아는 문제일 경우 프로그램으로는 어떻게 구현하기 막막한 문제들은 힌트를 보면 그래도 약간의 감이 잡히기는 합니다.
이 책을 한번 정독한 후에 느낀점은 비록 내가 하고 있는 업무에서는 지금 당장에는 도움이 되지 않았지만, 책에 제시된 퍼즐을 하나씩 차근차근 풀어나간다면 도저히 프로그램으로 안될것 같은 문제에 대한 조금 더 깊이 생각하게 될 것 같습니다. |