Scientia Conditorium

[책리뷰] 동시성 프로그래밍(Concurrent Programming) 본문

서평/IT-책

[책리뷰] 동시성 프로그래밍(Concurrent Programming)

크썸 2022. 4. 24. 19:18

[책리뷰] 동시성 프로그래밍(Concurrent Programming)

카페에서 급하게 촬영

 

한줄 요약 : 프로그래밍 성능을 끌어올리고 싶은 시니어 프로그래머들이 봐야할 책

 

그렇다. 이 책은 초보자나 주니어 프로그래머들 보다는 프로그램 성능을 담당하고 있는 시니어 프로그래머 이상급이 봐야되는 책이다. 저자의 말에서 이 책이 다른 책과 다른 점이 무엇이냐 묻는 질문에 저자는 다음과 같이 답했다.

"어셈블리에서 알고리즘, 계산 모델에 이르는 광범위한 주제를 총체적으로 다룬 세계 최초의 책입니다."

책의 대부분의 예제 코드는 Rust를 이용한다. Rust 언어를 사용한 이유는 동시성 프로그래밍에서 안정성을 제공하고, 메모리를 고려해 코드를 작성할 수 있으며 async/await 등의 고급 개념을 적용하고 있기 떄문이라고 한다.

 

저자는 책의 대상 독자를 '대학교 3,4학년 또는 대학원생 및 사회인'을 대상으로 삼았다고 한다. 그러나 프로그래밍 비기너인 내 관점에서는 적어도 시니어급 이상의 프로그래머들이 대상이 되는 책이다. 왜냐하면 한국에서 어셈블리어까지 생각하는 C언어 프로그래머는 별로 없다고 생각하기 때문이다. 해외쪽은 모르겠으나 한국에서는 점점 더 C 언어를 배울려고 하지 않는다. 22년 4월 기준 어느 학원 홈페이지에서 C++ 강의는 단 1개가 있으며, 수강 후기는 2개가 고작이다. 반면에 자바스크립트 등은 수강 후기가 비교가 안될 정도로 많다. 최신 언어에서는 GC와 언어단에서 알아서 잘 해주는데 그걸 왜 프로그래머가 고민하면서 구현해야되느냐고 질문한다. OS부터 

 

이 책에서는 프로그래밍 기본 문법 지식을 설명하긴 한다. 약 30페이지 가량 설명하는데 어느 쓰레기 책들 처럼 처음부터 자세히 설명하는 것이 아니다. 동시성 프로그래밍을 하기 위해서 C언어에서는 어떤 키워드와 라이브러리가 쓰이는지(volatile와 Pthreads 등) 설명하고, Rust 언어에서는 C언어와 어떻게 다른지에 초점을 둔다. Rust 언어를 사용해본 사람이 그렇게 많지 않은데다가 어떤 점이 다르고, 그렇기에 어떻게 사용해야 되는지, 이 책에서 왜 Rust 언어를 선택했는지를 볼 수 있었다.

 

이 책의 핵심은 6장이다. 멀티태스크에 대해 설명한 장이지만, 가장 중요한 부분은 Rust 언어를 이용해 액터 모델(Actor model)을 사용자 공간에서 구현한 것이다. 단순히 개념이 이러이러하다는 것을 직접 구현하여 보여준다는 점은 멋진 일이다. 이 챕터뿐만 아니라 여러 부분에서 도움되는 내용이 많았다. 다만 내 프로그래밍 실력이 매우 부족하여 제대로 따라가지 못하는 점이 한탄스러웠다.

 

책 페이지 수에 비해 가격이 좀 비싸다고 느낄 수 있지만, 충분히 그 값을 한다고 생각한다. 나는 프로그래밍 성능을 생각하기 이전에 구현부터 똑바로 해야하는 비기너 단계이므로, 어떠한 개념이 있고 어떠한 느낌으로 동작한다는 느낌만 가지고 책을 읽었다. 현재 맡은 업무에서도 성능을 중요시 여기고 있지만, 아직까지는 내가 손댈 부분이 아니라고 판단된다. 머리 속에 있는 개념들을 전부 어느 정도 구현할 줄 아는 단계가 오고 시간/공간 복잡도가 아닌 프로그램 성능을 고려해봐야될 때가 오면 이 책을 다시 펼쳐서 볼 것이다.

 

마지막으로 어느 고수분이 책의 후기를 기술한 트위터 글을 찾았기에 링크를 추가하며 리뷰를 마친다.

코딩하는 도도새 님의 트위터: "대충 이 책 읽는 타래 https://t.co/mXnMJA3E5I" / 트위터 (twitter.com)

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."