Head First C - 내공 있는 C 프로그래머로 이끌어주는 착한 안내서 Head First 시리즈
데이빗 그리피스 & 돈 그리피스 지음, 강권학 옮김 / 한빛미디어 / 2012년 11월
평점 :
장바구니담기


2011년, C의 창시자 Dennis Ritchie가 작고했다. 현 시대 IT 르네상스의 기원이라고 할 사람이였다. C를 통해 C++, Java, C# 등이 나왔고, 그 배경으로 스마트폰으로 이어졌기 때문이다.


얼마 전 기사에 Java의 보안에 치명적인 구멍이 있다는 기사가 떴다. 미 국토방위국(DHS)의 CERT(컴퓨터 침해 긴급 보안팀)은 Java 사용 중단을 권고했고, Apple 사는 자사의 Java 사용을 막았다. Oracle은 급하게 Patch를 update했지만 역시나 구멍이 발견되었다고 보도 된다.


물론 Java로 만들어진 이 IT 세계가 한꺼번에 무너지진 않을 것이다. Oracle은 계속 보완을 해나갈 것이고, 현재 치명적이라는 보안구멍은 좁아져나갈 것이나 편리함이라는 JVM의 단점이 드러나는 듯 하다. 근본적인 시스템에 접근하지 못한다는 단점이 C에게 스포트라이트를 비추게 만드는 것이다.



나는 C를 배워본 적이 없다. 단지 포인터에 가면 너무 복잡하다, Java의 Garbage Collection이 알아서 메모리 관리를 해주었던 것에 비해 C는 메모리에도 신경을 많이 써야 한다는 이야기만 들어 C가 매우 번거로운 언어라는 느낌만 가졌을 뿐이다.


그렇다 해도 여전히 그 강력함 때문에 C 제국은 선두를 달리고 있다. 책에 나온대로, 거의 모든 OS, 컴퓨터 언어, 게임은 C로 만들어졌기 때문이다.



나는 이 책을 펴면서 먼저 찾아보기에서 '포인터'를 찾아보았다. 가장 까다로운 부분이 쉽게 이해된다면 5부 능선을 넘은 것이나 다름없기 때문이다.

엥? 뭐야. 별거 아니였네. 이 책의 설명이 탁월했는지도 모른다. 까다롭다 말한 그들이 모두 지독한 돌머리는 아닐 거라 생각하기 때문이다. 게임과 같은 예시를 들어 풀어낸 설명은 매우 명료했고, 실전적이였다.


또한 Head First에서 다소 정신없었던 편집상태가 다소 차분해졌다. 적절하게 밝게 풀어낸 정도라고 보면 될 것 같다.


처음 언어를 배우려면 너무나 곤욕스러운 것이 많다. 영어든 C든 모두 생소한 것들이기 때문이다. 그럴 수록 쉽게 지루하지 않게 풀어야 한다.


영어 책 중에는 그렇게 개발된 책이 많지만 컴퓨터 언어에서는 이 Head First 시리즈일 것이다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
리팩토링 Refactoring - 코드 품질을 개선하는 객체지향 사고법
Martin Fowler 지음, 김지원 옮김 / 한빛미디어 / 2012년 11월
평점 :
구판절판


나는 일종의 세미 결벽증 같은 것이 있다. 사실 어찌보면 상식적으로 당연하긴 하지만 세균이 매우 많다고 밝혀진 키보드, 마우스 등을 자주 닦거나 손을 자주 씻는다.

돈을 가지런히 모두 앞을 보고 지갑에 넣고 만원/5천원,1천원 짜리로 구분해서 지갑에 분리한다. (돈에도 굉장히 세균이 많고, 영수증에는 폴리페놀A라는 환경호르몬이 있어서 만지기를 꺼려한다.-ㅅ-)


 또, 책을 정리할 때는 분야별로 책꽂이에 꽂는다. 시리즈면 시리즈별로 왼쪽부터 순서대로 놓아야 한다. 또한 책 크기도 어느 정도 고려하여 계단식 모양이 되도록 작은 책에서 큰 순서로 꽂는다. 이렇게 놓으면 정돈되어 보기 좋을 뿐 아니라 나중에 책을 찾기도 편하다.

인터넷 브라우저의 즐겨찾기도 종종 정리한다. 안 쓰는 사이트는 없애고, 분야별로 폴더를 만들고 하위 폴더를 만들어서 분류한다. 만약 하나의 폴더에 하나의 사이트밖에 남지 않게 되면 폴더를 지우고 다른 유사 폴더에 넣어버린다. 그렇게 정리하면 나중에 한결 깔끔하게 찾을 수 있다.


갑자기 왜 이런 이야기를 하냐고?

리팩토링은 일종의 책장정리나 즐겨찾기 폴더 정리와 비슷한 것이다. 인터넷을 이용하다 어느덧 대충 추가하고 또 추가하다 보니 이것저것 뒤섞여져서 나중에 제대로 찾을 수도 없거나 폴더명과 관련없는 사이트가 뒤섞여져 있을 때 한 번 정리한다. 이와 유사하게 클래스 내의 메소드를 분리하거나 더 적절한 곳으로 이동시키고, 메서드 명을 보다 명확하게 만드는 식의 정리 말이다.

단, 기능 상의 변화는 전혀 없이, 코드상태만 개선해야 한다.


재밌는 부분이 있다.

Comment(주석)에 대한 부분이다. 


"주석을 거론하는 이유는 주석이 구린내를 감춰주는 탈취제 용도로 쓰일 떄가 많기 때문이다. 엄청난 양의 주석이 달린 코드를 보면 그 주석들이 해당 코드의 구린내를 가리기 위해 존재하는 경우가 상당히 많다."


프로그래밍을 하다보면 이것저것 덧붙이다 보니 복잡해져서 결국엔 '에라 모르겠다 주석에 설명 달아 놓으면 다른 사람들이 알아 먹겠지'하고 때워버리고 도망가는 경우가 많다. 바람직한 코딩은 주석들이 불필요하게 여겨질 정도로 만들어야 한다는 것이다. 바로 'Extract Method'나 'Rename Method' 등으로 말이다.


저자는 깔끔한 설계야 말로 소프트웨어 개발 속도를 높이는 핵심이라고 한다기계 뒤를 뜯어보고는 이것저것 전선이 뒤덮인 복잡한 꼴에서 수리 하자니 짜증이 이만 저만 아닐 뿐 아니라, 선을 따라가며 파악하는 대도 한참 걸린다. 플라스틱 타이로 관련된 선끼리 묶어놓거나 색상을 통일 시켜 놓았더라면 한결 편리했을 것이다.


리팩토링은 이런 속 안을 잘 정리함으로써 자신과 팀원의 효율성을 증대시키는 역할을 한다. 리팩토링 기법을 모른다고 해서 프로그램을 못 만드는 것은 아닐 것이다. 하지만 좋은 프로그래머와 그렇지 않은 프로그래머. 효율적인 프로그래머와 비효율적인 프로그래머를 나누는 기준 중 하나는 될 것이다. 전자가 되고 싶다면 이 마틴 파울러의 책을 봐야 한다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
맛있는 디자인 드림위버 CS6 맛있는 디자인 시리즈
임화연 지음 / 한빛미디어 / 2012년 10월
평점 :
절판


Dreamweaver CS6가 되면서 모바일까지 어느 정도 흡수하려 하고 있다. 어차피 Hybrid App이든, Mobile Web이든 Webpage를 만드는 일에는 변함이 없기 때문이다.


Dreamweaver CS6를 이용하면 확실히 CSS를 그냥 했던 것들에 비해 생산성이 크게 업그레이드 된다. 막연하게 툴 없이 CSS를 쳐나가던 때 보다 훨씬 덜 복잡하고 간단해진 기분이기 때문이다. 따라서 시간이 훨씬 단축되기도 한다. 그게 Dreamweaver의 존재이유이기 때문이다.


이 책에서는 Table, StyleSheet, Div, CSS, FluidGrid Layout 등의 섹션을 나눠서 차근차근 해 나가고 있다. 그것도 비교적 쉽게 말이다. 책을 훑어 보면서 여성 저자가 만들었을 것 같다는 생각이 들었는데, 이름을 보니 여성 저자인듯하다. 깔끔한 편집과 더불어 특히 페이지 우측 끝에 성경책처럼 컬러 인덱스를 넣은 부분은 매우 편리하기도 했다. 모든 책들이 이런 방식으로 따라했으면 좋겠다는 생각이 들 정도로 말이다. 

  이렇게 특유의 섬세함이 느껴지기도 했지만, 다소 기능의 사용 뿐인 초급에 너무 치운친 감이 있기도 했다. Dreamweaver를 이용한다는 것은 사이트 페이지를 만들어 낸다는 의미인데, 사이트를 완성하는 데 있어서 Dreamweaver를 이용하는 느낌보다는 Dreamweaver 레슨을 위해 반완제품을 가지고 이용하는 느낌이 들어 조금 아쉬웠다.


그렇지만 이 책의 목적은 Dreamweaver를 배운다는 것이기 때문에 그런 의미에서라면 매우 충실하고 쉽게 쓰여졌다고 생각이 든다.


문득 책을 보면서 따라하다가 드는 생각인데, 레슨 하나의 분량을 익힌채로 책 없이 그냥 하게 되면 3분 정도면 완료가 되는 간단한 작업을 책을 읽고 메뉴 하나하나를 따라가면서 하자니 매우 많은 시간이 걸린다는 생각이 들었다. 이유를 분석해보니 문장 형태의 설명문을 읽고 이해하는데 있어 많은 시간이 걸렸기 때문이다. 문장 자체는 쉬운 문장이였다. 하지만 옆에 같이 첨부된 사진을 중심으로 설명이 이루어졌다면 훨씬 간단하고 빠르게 이해가 되는데 반해 문장을 구성하는 요소들(조사, 존대어)이 많은 시간을 잡아먹고 있다는 생각이 들었다.



이런 방식보다는..



이런 방식이 훨씬 직관적이여서 쉽다.


또,


 Ctrl + S로 저장한 후 F12를 눌러 미리보기합니다.

(p.164)

보다는


저장(Ctrl + S) 후 미리보기(F12)


가 더 직관적이다.


 이 책은 툴을 중심으로 하고 있는 것이고, GUI로 만들어진 툴은 비언어적인 요소(즉 시각적인 요소)이기 때문에 시각적으로 풀어나가는 것이 훨씬 효율적이라는 것이다.



사실 어떻게 보면 이 책의 문제는 아니다. 모든 책이 이런 방식을 사용하고 있기 때문이다. 다만 더 좋은 방법을 생각하다 보니 이런 점이 아쉽다는 것이다.


한빛 출판사에서 이런 툴에 대한 초급수준의 책은 동영상 강의 형태로 Publishing하는 것은 어떨까 하는 생각도 든다.





댓글(0) 먼댓글(0) 좋아요(5)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Head First Mobile Web - 웹앱으로 진화하는 모바일 웹 개발 Head First 시리즈
리자 데인저 가드너 & 제이슨 그릭스비 지음, 이성희.이수진 옮김 / 한빛미디어 / 2012년 9월
평점 :
절판


Android는 예전부터 문제시 되었던 파편화(버전에 급격한 속도로 바뀌면서 호환성 문제나 개발 문제가 나타남)나 다양한 디바이스의 다양한 크기에 대한 우려가 많았다.


지금은 iPhone도 화면 크기가 바뀌면서 점점 Android와 비슷한 고민을 하게 되었다. 매 기기 마다 테스트나 개발을 해주어야 하는 번거로움을 일시에 해소할 수 있는 것이 바로 Mobile Web이다. Web에선 호환성에 대한 고민도 필요없고, Fluid Grid Layout이라는 것으로 디바이스의 해상도에 따라 자동으로 알아서 Layout이 바뀌도록 해주는 Responsive Web Design이 가능하기 때문이다.



정말 One Source Multi Device가 가능해지는 것이다. 또한 이용자가 매번 App을 Update하려고 많은 용량을 다시 받는 수고나 비용도 들일 필요 없이 평소 Website를 사용하듯이 접속만 하면 업데이트 된 화면과 시스템을 이용할 수 있어서 Native App에 비하면 정말 편리하다

이 책은 그런 기술을 구현하게 해주는 도우미다. HeadFirst시리즈는 예전부터 매우 독자적인 편집형태를 가지고 있었는데, 그래서 사실 호불호가 분명하다.

컴퓨터 공부를 한다는 것이 상당히 긴 과정이고 그래서 지구력과 인내력을 요하는 것이라 그런 지루함을 덜어줄 수 있다면 꽤나 큰 효용이 될 것인데, 바로 그런 요소가 담긴 것이 HeadFirst이다.
HeadFirst는 언제나 다양한 그림과 다양한 Layout로 구성된 책이라 지루함을 덜어주는 데 노력을 했는데 그렇다면 가장 지루함을 덜어줄 수 있는 요소인 컬러를 왜 사용하지 않는지 의문이 든다.(책 소개 페이지에서는 컬러로 해 놓았는데 이는 약간의 기만(?)이다.

기존의 책들은 소스를 나열하고 밑에 소스 코드 줄 번호를 쓰고 해설을 쓰는 방식을 사용해 독자로서 보기가 매우 번거롭지만, 이 책은 마치 책에 필기를 해 놓은듯 코드에 화살표나 번호를 붙여 놓고 해설을 써 놓아 더 편리하다.


잡지 같은 HeadFirst
잡지는 가볍게 기사를 모아놓은 책이여서 어디를 펼쳐서 보아도 상관 없이 볼 수 있다. 그러나 순차적이고 긴 과정을 담고 있진 않아서 전문성을 익히기는 어렵다.
HeadFirst는 다소 이런 잡지의 장단점을 흡수하지 않았나 싶다. 시각적인 요소를 매우 강화하고 목차구성이 순차적인 보통의 책에 비해 단편적이여서 어딜 펼쳐보아도 바로 볼 수 있지만, 과정을 따라하는 보통의 컴퓨터 책에 비해 독자가 결과물을 따라하고 내놓기가 어려울 것 같다. 이 책의 경우 처음 나오는 프로그래밍 요소는 대뜸 CSS이므로 HTML, CSS 등을 익히지 않은 사람은 매우 혼란스러울 것이다.



따라서 HeadFirst는 초보 과정을 어느 정도 익힌 독자가 보다 세분화된 배경 지식을 익히고자 한다면 잡지같이 편안하게 Head First를 즐기면(?) 좋을 것 같다는 생각이 든다.

매우 아쉬운 면이 있다. 이런 참신한 구성을 가지고 조금 차분하게 절차적인 따라하기 구성을 가졌더라면 독자가 더 많은 것을 배울 수 있지 않았을까 싶다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
그림으로 쉽게 설명하는 안드로이드 프로그래밍
천인국 지음 / 생능 / 2012년 8월
평점 :
구판절판


시작부터 말 하자면 나는 이 책을 출판사로 부터 제공 받았다. 물론 리뷰를 써 줄 것을 요청받았다. 단, 칭찬 일색이 아니라 정말 솔직하게 리뷰를 써 달라고 하였다. 덧붙여서 안드로이드 전문가들에게 먼저 보여준 결과 국내 출판된 서적 중 '가장 잘 만들어진 안드로이드 서적'이라는 평을 들었다고 한다.


너무 자신감이 넘쳐 보였다. 얼마나 자신있으면 칭찬도 일부러 하지 말라니. 난 까라면 정말 까는데 말이다. 하지만 대담함에 사실 기대도 되었다.


처음 책을 받아 본 느낌은 중학교 수학 쯤 되는 교재 느낌이였다. 기준은 나 중학교 때. 요즘 애들 학습교재 보면 꽤나 세련된 느낌을 받지만, 이 책은 마치 십 수년 전의 그 때 표지 느낌이다. 대형 출판사가 아닌 경우 표지 디자인에서 다소 떨어지는 느낌을 주는 서적이 많기 때문에 독자의 첫인상에서 멀어지진 않나 걱정된다. 책을 훑어 보니 그려진 만화도 중학교 교재에서 껴 넣은 듯한 개성미가 다소 떨어지는 그림체다. 

사실 표지나 그림체의 개성 정도가 학습하는데 그렇게 중요한 요소는 아니다.


그리고 나는 지금 이 책의 단점 전부를 이야기 했다.





그럼...이제부턴....

  나는 사실 책을 받아서 펴본 뒤 5초 뒤부터 신나기 시작했다. 왠지 어려울 것을 쉽게 할 수 있겠다는 횡재를 한 기분이였기 때문이다. 이미 집에는 안드로이드 책만 3권이 있었지만, 하다가 지치고, 할 일도 있다는 핑계로 여전히 To do List로 꽂혀 있었다. 해보지 않은 것을 하려면 상당한 집중력을 필요로 한다. 그걸 지속하려면 지구력도 요한다. 한 마디로 잘 하려면 그만큼 피곤하라는 거다. 검은 건 글자요, 흰건 종이로 구성된 책들을 보다 보면 그 야말로 피곤하다.

나는 그래서 처음 배우는 분야가 있다면 책을 고를 떄 무조건 컬러풀한 구성으로 고른다. 돈이 더 들어도 훨씬 즐거운 마음으로 쉽게 배울 수 있다면 그 차이는 아무 것도 아니기 때문이다.


  그런데 이 책은 단지 컬러 구성으로 끝나는 책이 아니다. 책 값의 10배 가량 하는 강의 보다 친절하고, 쉽게 엮여져 읽히는 데 부담감이 거의 없다. 무엇보다 새로 배우는데, 들어가는 지구력을 요하지 않는다. 책의 완급이 매우 적절하게 되어있기 때문이다.

나는 책을 가지고 프로그래밍 공부를 할 때 이 소스 부분이 화면의 어느 부분을 구성하는지, 아니면 어디 쯤을 담당하는지 궁금한 경우가 너무 많다. 이런 경우가 너무 많은 이유는 반대로 책이 그런 이유를 잘 말해주지 않는 불친절한 책들이 너무너무 많기 때문이다. 

번역서인 'HeadFirst' 시리즈는 인지심리학적으로 구성된 프로그램이라고 하면서 매우 쉽게 엮여져 있다고는 하지만, 편집 구성이 너무 산만해 도무지 정리가 안 될 정도다. 어느 부분 부터 읽어야 하는지도 혼란스럽다. 한 마디로 too much다.(그럼에도 쉽게 쓴 건 인정한다)


동서양의 정서적 차이인지, 아니면 서양사람 중에도 그렇게 느끼는 사람이 있는지는 모르겠지만, 여튼 나하고는 맞지 않았다. 하지만 그 안에 소스와 화면을 화살표로 서로 교차되는 방식은 매우 좋았는데, 나는 대체로 시각적으로 이해하는 편이기 때문에 그러한 면이 매우 중요했다.




이 책은 HeadFirst 시리즈에서 산만함을 쫙 빼고, 그런 유용하고 쉬운 방식을 가지고 있다.

소스를 보고, 그 옆의 화살표를 따라가면 그 소스가 만드는 화면이 옆에 서 있어서 매우 직관적이다.


나는 프로그래밍 공부를 하다 보면 나는 궁금한 게 매우 많다. 마치 7살 아이처럼 "왜요?" "이건 왜 그런데요?"를 공부하면서 연달아 물음이 뜨곤 한다. 그냥 넘어가자니 그 막힘이 뒤에 있는 것들 조차 막아버리는 느낌을 주곤 해서 혼란스럽기 때문이다. 책 속에서 모든 물음에 애초부터 답을 해주는 건 불가능 하지만, 최소한의 진행 방식을 위한 원리이해를 시켜주는 건 저자가 독자에게 알려주어야 할 최소한의 도리이고 상식이라고 생각한다.


그런데 요즘은 몰상식한 저자가 너무 많다. 그냥 밑도 끝도 없고, 문맥도 없다.

"소스 봐라!  이렇게 만든다! 너도 똑같이 치면 똑같이 만든다!"라는 식의 저자가 정말 많다. 더군다나 그게 뒤에서도 계속 나오는 매우 기초적이고 중요한 개념이라면 그 책으로는 공부를 거의 포기하게 된다.

심지어는 인터넷 강의와 같이 봐야 책의 진가를 발휘한다는 어느 리뷰를 읽고 실소를 금치 못했다. 그럴거면 책을 뭐하러 사나. 학원을 가지.


이 책은 적어도 조카를 예뻐하는 삼촌 같다. "왜요?" 라는 물음이 나올 부분에 친절히 세세히 가르쳐 주기 때문에 의문사항이 적다. 그래서 책 값의 10배 이상 하는 학원도 갈 필요가 없다.

다소 세련미가 떨어지는 그림과 아이콘이지만, 그런 세세한 설명을 따라가기만 하면 어렵지 않게 스며들어지는 기분이 든다.


이 책은 아직 스마트폰으로 출시도 되지 않은 Jelly Bean을 반영했다. 구성부터 최신성까지 사실 계속 칭찬하고 싶은 생각이 든다.




'생능출판사'라는 곳을 처음 알았지만, 이 책 한 권으로 꼭 기억하게 될 것 같다. 분명 많은 시간과 품을 들여 만들었을 저자과 편집팀에 박수를 보내고 싶다. 


이 글을 읽는 사람들은 책 받았다고 오바해서 썼다고 생각할지 모르지만, 한치 보탬도 덜어냄도 없었다.(외압 같은 건 없다. 음...솔직히 책 받았다고 사진 한 두장 더 찍은 것 같은 느낌은 든다.)

적어도 안드로이드를 시작하려면 이 책 저 책 끙끙대느라 시간낭비 하지 말고, 이 책으로 하면 후회는 없을 것이다.


이 참에 대형 출판사 처럼 이런 구성 컨셉으로 Head First같은 시리즈를 만들면 어떨까 진심으로 제안하고 싶다.(잘 만들면 수출도 하고 말이다.ㅋㅋ) 만약 이런 퀄러티만 지속된다면 적어도 나는 계속 구매를 할 것이다.



음....이름은 '으로 되는'시리즈.


만약 채택되면 로얄티로 출시 마다 한 권씩 좀 보내달라. ;-)


화살표와 설명이 산만하지 않으면서 직관적이여서 매우 쉬워 지는 느낌이다.


16진수로 표현되는 색상표기 까지 RGB 색을 입혀 놓는 세심함이 돋보인다.



Method 의 파라미터 설명 뿐 아니라 그 파라미터 출신(?)까지도 설명하는 친절함을 보여준다.


의도적인지 아니면 저자의 개인적 취향(?)이 반영 되었을 뿐인지는 모르겠지만, 창 테두리의 빨간색도 시각을 환기시켜 지루함을 덜 주는 느낌이다.


댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo