0fe48071bd8b6af336eb8f8a1a9f2e2dd4546c9de9a422b063370045


이 책의 원제는 並行プログラミング入門이고 영문판은 없는 듯 하다.

내가 못 찾은 걸 수도 있음


이 책은 꽤 좋은 책이고, 아마존 평점도 높은 편이다.


근데 오탈자가 많다

한빛 홈페이지 가면 오탈자가 몇 개 등록 안돼있는데

읽다가 좀 이상한 게 몇 군데 있어서 좀 찾아보니까



a15714ab041eb360be3335625683746f00534429d6a4e989d73267f59916cd6e18f14743d61bd7d6d875c9535d



저자가 만든 깃허브 리포 들어가니까 존나 많더라

읽게 된다면 참고하셈


https://github.com/oreilly-japan/conc_ytakano/blob/main/errata.md

conc_ytakano/errata.md at main · oreilly-japan/conc_ytakano

『並行プログラミング入門』(O'Reilly Japan, 2021). Contribute to oreilly-japan/conc_ytakano development by creating an account on GitHub.

github.com


몇개 대조해 봤는데 한국어판에도 오탈자 그대로 번역돼있음

전부 그런지는 모르겠는데 여튼 저 리포지토리 참고해서 오탈자 고쳐 읽으면 됨


그리고 아마존 리뷰를 보면 읽기 녹록한 책은 또 아닌듯

이것도 고려해야됨


원제는 입문이라 써있는데 입문용이 아님 ㅋㅋ


아래는 아마존 리뷰 보이는 것 중에 가장 지적 많이하는 두 개 긁어온거임

물론 좋은 말 하는 리뷰가 더 많음



a15714ab041eb360be3335625683746f00534429d6a4e989d73267f09816cd6e6a47e81cc9f54ade93dc8ce8c3ce



- 요페


Rust와 병렬 프로그래밍의 핵심을 잘 짚어주는 좋은 책

Rust에서 병렬, 병렬, 비동기 프로그래밍의 원리, 원칙, 구현을 배울 수 있는 귀중한 책입니다.

앞으로 시스템 프로그래밍의 표준이 될(되었으면 하는) Rust에서 이루어지고 있는 점이 훌륭합니다.

또한 Rust의 비동기 라이브러리인 tokio의 사용법에 관한 가장 충실한 일본어 책이기도 합니다.


이 책의 Rust에 대한 설명은 매우 간결합니다.

병렬, 비동기 프로그래밍을 하려면 구현 언어를 어느 정도 이해하고 있어야 하므로 Rust에 익숙하지 않다면 이 책을 먼저 읽어보는 것을 추천합니다.

매크로나 unsafe, Arc, Rwlock 등 입문 수준에서는 쉽게 접할 수 없는 기능을 사용하기 때문에 이 정도 수준까지는 알아두면 좋을 것 같습니다.


기본적으로 병렬 프로그래밍을 이해한다는 것은 CPU, 메모리 구조와 어셈블러에 대해서도 이해하고 있다는 것을 의미합니다.

부록에서 보충하고 있지만, 원자 명령어나 메모리 장벽 등 병렬 프로그래밍에서 필수적인 지식은

별도의 책으로 보충하는 것이 좋다고 생각합니다.

이것들만 잘 숙지하고 있으면 이 책의 내용은 매우 쉽게 이해할 수 있을 것입니다.


마지막으로 한 가지

다음에는 좀 더 부드러운 문체로 작성되었으면 좋겠습니다.

열심히 설명은 하고 있지만, 너무 딱딱한 문장이라 논문을 읽는 것 같은 느낌이 듭니다.



a15714ab041eb360be3335625683746f00534429d6a4e989d73267f39e11cd6ef7d631adb63fbcb80587f0a87b52


- ABCCBAA


아래 내용은 초판에 대한 리뷰입니다. 2판 이후 버전에서는 수정되었을 수도 있습니다.


C언어 코드가 부적절합니다.

원자적 연산을 수행해야 할 곳에서 수행하지 않거나, 메모리 연산 순서가 정해지지 않은 코드 예제가 산재해 있습니다. 또한, 코드 예시 중 volatile 수식어의 사용도 상당히 의심스럽습니다.

아마도 저자가 소프트웨어 메모리 모델(프로그래밍 언어 사양이 규정하는 메모리 모델)과 하드웨어 메모리 모델(CPU 명령어 세트가 규정하는 메모리 모델)의 차이를 정확히 인지하지 못하고 있는 것 같습니다.

이 책은 C11 이후 언어 사양에서 정의된 메모리 모델에 비추어 볼 때 정의되지 않은 동작을 하는 예제가 다수 포함되어 있기 때문에 (적어도 초판 시점에서는) 코드를 참고할 수 없습니다. 이 책에 소개된 코드의 기능은 다른 책이나 OSS의 구현을 보면서 확인하면서 구현하는 것이 좋다고 생각합니다.

코드 예제를 그대로 따라하면 문제가 될 수 있기 때문에 초보자에게는 별로 추천하고 싶지 않습니다.


또한, 병렬 계산 모델 장에서는 채택하고 있는 문법이 일반적인 문법과 다릅니다.

이미 대학 등에서 람다 계산을 배운 적이 있는 사람은 상당히 위화감을 느낄 수 있을 것 같습니다.


반면 이 책이 다루는 주제의 폭과 새로움에 대해서는 높이 평가할 수 있을 것 같습니다.

예를 들어, 스마트폰용 프로세서에서 널리 사용되는 aarch64 명령어 세트에 대한 설명이 주축을 이루고 있는 점, 소프트웨어 트랜잭션 메모리나 그린 스레드 등 병렬/병렬 프로그램을 작성할 때 유용한 기능의 주제를 한 권의 책에서 다룰 수 있다는 점은 좋은 점입니다. 부분이라고 생각합니다.


치명적으로 나쁜 책이라고 생각하지는 않지만, 개인적으로 추천할 만한 책이라고 생각하지는 않습니다.