독서 리뷰

독서 - Go 100가지 실수 패턴과 솔루션

지노윈 2025. 4. 20. 12:29


실수는 삶의 일부다. 알버트 아인슈타인의 말처럼,

"실수를 저지른 적이 없는 사람은 새로운 것을 한 번도 시도한 적이 없는 사람이다."


결국 중요한 것은 실수를 저지른 횟수가 아니라, 실수를 통해 배우는 능력이다. 이 격언은 프로그래밍에도 적용된다. 언어는 마법 같은 과정에 의해 숙달되는 것이 아니다. 수많은 시행 착오를 거치고 실수로부터 배우는 과정이 반드시 수반되어야 한다.

단순하다고 쉬운 것은 아니다



단순한 것과 쉬운 것 사이에는 미묘한 차이가 있다. 어떤 기술이 단순하다는 말은 배우거나 이해하기가 복잡하지 않다는 뜻이다. 반편, 쉽다는 말은 어떤 일을 많은 노력 없이 적은 힘으로 처리합 수 있다는 말이다. 고 언어는 처음 배우기는 쉽지만 그렇다고 해서 마스터하기도 쉬운 것은 아니다
예를 들어, 동시성을 생각해보자. 2019년 동시성 버그에 대한 논문3이 발표되었다. 이 논문은 고 언어에서 나올 수 있는 동시성 버그를 시스템적으로 분석한 최초의 연구 결과다. 여기서는 도커, gRPC, 쿠버네티스(K<ubernete)를 비롯한 대표적인 고 언어 기반 리포지터리를 분석한다. 주요 연구 결과 중 하나를 보면 시스템을 멈추게 만드는 버그 중 대다수는 채널을 통한 메시지 전달(message pasing)을 잘못 사용했기 때문이라고 지적한다. 메시지 전달이 공유 메모리에 비해 에러가 휠씬 적게 발생한다는 통님과 상반된 결과를 보여준 것이다.
이 결과를 어떻게 받아들여야 할까? 고 언어의 메시지 전달 기능의 설계가 잘못된 것일까? 아니먼 현재 프로젝트에서 동시성을 메시지 전달이 아닌 다른 방식으로 처리해야 할까? 둘 다 아니다.
메시지 전달과 공유 메모리 중 어느 것이 나은가의 문제가 아니다. 고 언어 프로그래머라면 더 나은 기법이나 혼히 저지르기 쉬운 실수를 피하는 방법을 고민하기 전에. 먼저 동시성을 다루는 방법과 최신 프로세서에 미치는 영향을 확실히 이해해야 한다. 이 예는 채널이나 고루틴 같은 개념
을 배우기는 쉽지만 실전에서 제대로 적용하기는 결코 쉽지 않음을 잘 보여준다.
단순하다고 해서 쉬운 것은 아니다라는 말은 고 언어의 다양한 영역에적용할 수 있다. 고 언어에 능숙한 개발자가 되려면 고 언어의 다양한 측면을 철저히 이해해야 하
며. 이를 위해 시간과 노력을 들이고 시행착오를 거쳐야 한다.
이 책은 고 연어와 관련된 100가지 주요 실수를 절저히 분석하여 고 언어를 마스터하는 시간을 최대한 줄이고 도움을 주는 것을 목표로 한다.

반응형