brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Feb 05. 2024

(책후기) Go 100가지 실수 패턴과 솔루션

2024년 출판

대상독자

고 언어를 어느 정도 알고 있는 개발자를 대상으로 한다.

문법이나 키워드 같은 기초를 설명하는 책은 아니다.


이 책에서 배울 수 있는 것

100가지 실제 사례와 해결책을 알려주어 go사용 개발자에게 노하우를 전수해 주는 책이다.

실수를 통해 배우는 능력을 높여보자~

Go언어 사용자에게 이해도와 숙련도를 높여주는 실제 사례와 구체적인 예제가 나온 책.

길벗 출판사에서 책을  제공받아 작성된 서평입니다.


구성

이 책은 12장으로 구성이 된다.


<1> 고 언어는 쉽지만 마스터하긴 어렵다.

<2> 실수할만한 100개 중 몇 가지만 알아보자.

<3> GO개발자가 반드시 읽어야 할 책!!!



<1> 고 언어는 쉽지만 마스터하긴 어렵다.


1

고 언어 개요

2007년 구글에서 만든 고 언어.


2

책에서 이야기하는 장점?

안정성

표현력

컴파일

안전성

// 성능, 단순, 동시성이 높아 많이 쓴다고 설명 조사가 되어 있다.


3

말해주면 잊을 것이다.

가르쳐주면 기억할 것이다.

직접 해보면 터득할 것이다.


4

이 책은 실수 7가지 항목으로 분류했다.

버그

과도한 복잡도

낮은 가독성

최적이 아니거나 관례에 어긋난 구성

API편의성 부족

최적화되지 않은 코스

생산성 부족



<2> 실수할만한 100개 중 몇 가지만 알아보자.


#17

아주 단순한 것에서 실수를 한다.


예를 들어, 다음 코드의 출력 값은 뭘까?

sum := 100+ 010

fmt.PrintIn(sum)

100 + 10 = 110이라고 생각하기 쉽다.

하지만 108이 출력이 된다. 왜일까?

고 언어에서 0으로 시작하는 정수 리터럴은 8진수로 처리한다!

따라서 8진수로 10은 10진수로 8과 같다.

그래서 108이 된다.


개선?

0 대신 0o를 붙이면 의미는 그대로지만 가독성은 높아진다.



#56

동시성이 무조건 빠르다고 착각하지 마라.


동시성을 이용한 솔루션이 순차적인 것보다 무조건 따르다고 잘못 알고 있다.

솔루션의 전반적인 성능은 다양한 요인에 영향을 받는다.


스레드는 OS에서 실행에 관련된 가장 작은 단위이다.

프로세스에서 여러 동작을 동시에 실행시키려 할 때 스레드를 여러 개 생성한다.

OS는 스레드가 다음과 같이 최적화된 상태로 실행되도록 스케줄링해야 한다.

모든 스레드가 CPU사이클을 할당받으며, 아주 오래 기다리는 스레드가 없어야 한다.

워크로드는 CPU 코어마다 고르게 분배된다.



#80

HTTP요청에 응답한 후에는 return문을 넣어라.


HTTP 핸들러를 작성하다 보면 HTTP요청에 응답하고 나서 return문을 빠뜨리기 쉽다.

이러면 에러가 발생해서 핸들러를 멈춰야 할 상황에 그러지 못하는 문제가 발생할 수 있다.



#91

CPU 캐시에 대해 완전히 이해하라.


인텔 코어 i5-7300 기준으로 소개한다.

논리 코어가 메모리에 가까울수록 접근 속도도 빨라진다.


L1 : 약 1ns

L2 : L1에 비해 4배가량 느리다.

L3 : L1 보다 10배가량 느리다.


이러한 차이는 CPU캐시의 물리적 위티와 도 관련 ㄴ있다.

L3는 따로 떨어져 있어 , L1과 L2에 비해 지연 시간이 길다.



<3> GO개발자가 반드시 읽어야 할 책!!!


중요한 것은 실수로부터 배울 수 있는 우리의 역량이다.

고 개발자를 위한 필독서라고 하는데 공감한다!!!




다른책 보기

https://brunch.co.kr/magazine/it-book

감사합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari