7가지 동시성 모델 - 8점
폴 부처 지음, 임백준 옮김/한빛미디어


'행복한 프로그래밍'등 프로그래머 에세이의 저자이자, 'art of readable code' 등의 번역자이자, 


2012/12/25 - [서평] - '리펙토링'보다 쉽게 리펙토링하기


'나는 프로그래머다' 팟캐스트의 진행자이기도 한, 인기 개발자겸 칼럼니스트 임백준씨의 최근 번역서이다.

최근에는 '폴리글랏'이란 개념으로 다양한 개발언어를 숙지하고 사용하는 것이 경쟁력이라는 주장을 이어오고 있는데, 비슷한 내용을 책이 번역되어 읽어 보았다.

개발자에게 동시성 문제란 어느 정도 규모가 있는 프로그램을 작성하고 유지하기 위해 반드시 넘어야 될 산 같은 이슈다. 하물며 커널은 선점과 스케쥴이 가장 중요한 핵심 기반이며 최근에는 멀티 코어를 이용한 개발이 주를 이루고 있어 시스템/임베디드 개발자에게는 뗄수 없는 주제이기도 하다.

이 책은 이러한 동시성 문제를 해결하기 위한 7가지 프로그래밍 모델을 제시하고 있다.
가장 원시적(?)이고 단순한 '스레드와 락'부터 '함수형 프로그래밍'과 '클로저', '엑터', 'CSP', '데이터 병렬성' 및 '람다 아키텍처'에 이르기까지 다양한 언어가 동시성 문제를 다루기 위해 취하고 있는 모델링 방식을 설명한다.
이전까지 접하지 못했던 생소한 언어를 이용한 접근도 있기 때문에 어려운 부분도 있지만, 지적 욕구를 자극하는 좋은 책이자, 한 가지 문제를 푸는 다양한 방식을 소개함으로써 문제 해결 능령 향상에 도움을 주는 (적어도 좋은 자극제가 되는) 책이라고 할 수 있다.

시리즈물(?)이라고 해야 하나, '브루스 테이트의 세븐 랭귀지' (같은 번역자가 소개) 에서 영감을 얻어 7가지 기술과 7주의 학습 기간을 따랐다고 하는데, 반드시 7개를 다 공부해야 하거나 7주간의 시간을 투입해야 하는 것은 아니라는 것도 밝혀 둔다.


 

읽기 좋은 코드가 좋은 코드다
국내도서>컴퓨터/인터넷
저자 : 더스틴 보즈웰,트레버 파우커 / 임백준역
출판 : 한빛미디어 2012.04.10
상세보기

11월 내 책상에는 프로그램 개발에 관한 두 책이 놓여져 있는데, '리펙토링'과 이 책이다.

우선 이 책을 이야기해야 할 것 같다. 원제인 'The Art of Readable Code'는 책의 주제와 내용을 가장 잘 표현해 주는 것 같은데, 번역서의 제목인 '읽기 좋은 코드가 좋은 코드다' 라는 제목도 우리가 이 시점에 이 책을 읽어야 하는 이유와도 일맥상통하기에 아주 좋은 번역이라고 하겠다.

 

저자 2명은 구글에서 현업 프로그래머로 활동하는 사람으로 자신들이 구글에서 현재도 지키고 있는 프로그래밍 원리를 몇 가지 분류에 따라 나누어 책을 썼다. 이 책의 주요 내용과 특징을 살펴보면,

 

첫째, 이 책은 크게 보면 리펙토링(프로그램의 기능을 바꾸지 않고 내부를 수정하여 성능/가독성 등을 좋게 하는 일)에 관한 책이고, 또한 일부의 내용은 secure coding(프로그램의 내부를 robust하게 구현하여 어떠한 예외에도 프로그램이 이상동작하지 않게 하는 개발 방법)과도 연결되어 있다. 우리는 bussiness logic에는 무척 강하고, 우리 분야에서 우리만큼 잘 하는 국내 경쟁사는 없다고 해도 과언이 아니다. 그런데, 설계 기술과 개발 기술도 그러할까? 이 고민에서 올 한해를 시작한 나는 연말에 이르러서야 어렴풋이 실마리를 잡을 수 있었고, 그 한 축에 이 책이 있다. 즉, 아주 좋은 재료를 그냥 얼기설기 엮을 것이 아니라 씨줄과 날줄을 구분하여 무늬도 아름답게 그리고 조직도 촘촘하게 할 기술적 토대를 쌓는 것 역시 네트워크 기반의 프로그래밍을 잘 하는 것 못지 않게 중요하는 것을 이 책을 통해서도 일부 체험할 수 있는 것이다.

 

둘째, 기존 리펙토링 서적(앞으로 리뷰할 그 책)과는 달리 클래스 기반(정확히는 객체 기반)의 프로그램에서 패턴을 찾아 개선하는 방식이라기 보단 좀 더 우리 실정에 맞게 -C언어의 절차적 순서기반 프로그램이나 python같은 인터프맅터 언어에서도- 변수의 이름 변경, 함수의 파라메터 선정, 주석의 활용, 분기(if..else)의 조건문 순서 변경 등을 통해 얻는 이점으로 시작하여 점차 고급 언어로의 적용으로 책 방향을 설정하였다. 실제로 예제도 C, pythom, java, C++ 등이 등장하며 이 때문에 고급언어에 익숙하지 않은 우리 C 개발자들도 쉽게 코드 개선을 따라 할 수 있을 것으로 기대된다.

 

셋째, 책 제목 처럼 궁극적으로 읽기 쉬운 코드로 작성하여 좋은 점을 단순히 프로그램의 성능 개선, 기능 개선에 두는 것이 아니라 그것을 운용하고 활용하는 사람에 맞추고 있다는 것이다. 기능을 개발한 담당자가 프로그램의 생명주기(life cycle)동안 계속 그 부분을 담당할 수도 없고, 회사에 남으리라는 보장도 없는 상황에서 너무 안이하게 여겼던 가독성을 코드의 품질을 평가하는 수준으로 높여보자는 것이다. 이를 통해 담당자 본인이 아니더라도 어느 누가 이 코드를 보더라도 초기 개발자의 의도를 파악하고 의도에 맞게 유지보수를 할 수 있도록 하자는 것이다.

 

위 세 가지 특징은 이 책이 우리의 필독서가 되게 하는 데 큰 장점이라 생각한다. 고전 '리펙토링'과 함께 두고두고 돌려가면서 익힐 일이다.

+ Recent posts