메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

너무 쉽게 써진 Go 책

hji7***

|

2020-05-25

Head First Go

이 책은 Go 입문자가 알아야 할 것에 초점을 맞추어 Go 언어의 핵심을 간추리고 이를 쉽게, 재미있게 풀어쓴 Go 입문서입니다.

  • 저자 : 제이 맥가브렌
  • 번역 : 권민재
  • 출간 : 2020-03-16
정말 간결하면서, 강력한 언어, Go에 대한 책입니다.

 

책을 읽고 예제를 타이핑 해보면서, 책을 정말 쉽게 썼다고 느꼈습니다.

만약, 방향을 잡아줄 멘토가 있다면,( 혹시 없어도 )

프로그래밍을 전혀 모르는 사람, 혼자 읽으면서, 충분히 Go를 익힐만큼 쉽게 써진 책입니다.

 

간결한 언어

저는 4년전에 Go에 대한 책을 읽은 적이 있는데요.

그때도 그랬지만, Go에 대한 책을 읽으면, "C"언어를 떠올리게 됩니다. 

마치 C언어를 다시만들어 보고 싶었던, "켄 톰슨"이 Go를 통해서 이를 실현한 것 아닌가 하는 느낌이 책을 읽는 내내 다가오거든요.

정말 딱, 정확하게 가질것만 가지고 있어서 탄복하게 만드는 그런 언어 입니다.

 

"따라서 Go에서는 예외와 같은 기능을 찾지 마세요. 예외 기능은 의도적으로 생략되었습니다.지금까지 예외를 사용해 온 개발자는 적응 기간이 필요할 수도 있겠지만, Go 메인테이너는 예외 없는 코드가 결국에는 더 나은 소프트웨어를 만들 거라고 믿습니다-본문중에서-"

 

Go언어의 예외처리는 panic, recover라는 두 함수를 사용해서 합니다. 

문제는 다른 언어에 비해서 얘네들이 너무 너무 빈약하다는 것입니다.

그 이유에 대해서 본문에서는 Go 설계자중 한 사람인,롬 스파이크의 인터뷰를 제시해주고 있습니다.

 

'의도적으로 생략'했다는 겁니다.

사실 예외처리 구문은 코드를 나쁘게 만드는 습관중에 하나입니다. ( 제 기억엔 마이어스의 Effective C++에서 본것 같습니다. ) 

예외처리를 하면 당장 머릿속에 복잡함은 극복하기 쉬울지 모르지만 

결과적으로 그 예외가 어디서 처리되는지를 보면, goto문을 사용하는 것과 다를 바 없습니다.

 

게다가 3,4개 예외가 쌓여가다보면, 결국엔 빠뜨리고 처리하지 못하는 경우도 다반사이고요.혹시 catch문을 써서 잡는다 해도, 이거 코드를 읽기 어렵게 만듭니다.

 

defer 문은 또다른 간결함의 끝판 왕입니다.

사실 jquery에서 promise를 사용할때 등장하는 용어가 defer입니다. 

자바스크립트와 다른 언어들에서 promise, future를 떠올려보면 async처리만을 위해서 이런 객체들을 사용하게 되는데요.

 

GO의 defer는 해당 함수가 끝날때까지 미뤄두는 것을 의미합니다.

이렇게 되면 다른 언어에서 왠만하면 예외로 처리하던 코드들을 defer를 통해서 제어하면서 처리할 수 있게 됩니다.(코드의 논리 흐름상 defer를 통해서 어떻게 마무리할지 알려주는 것은 코드를 읽기 편하게 합니다. )

 

게다가, 고루틴과 채널...

c와 c++그리고 java같은 언어에서 thread를 사용해본 경험이 있으시다면,

혹시 MFC에서 쓰레드를 캡슐화해서 사용하는 코드를 써보신 분이라면...

또는 크리티컬 섹션 코드 때문에 눈물로 밤을 지샌 분이라면..

go 루틴과 channel을 생성하고 사용하는 코드를 보면서 감동을 느낄 수밖에 없으실 겁니다.

 

말로 표현이 불가능한 예술입니다.

 

강력한 언어

고루틴은 다른 언어의 쓰레드 보다 생성속도와 사용하는 리소스 면에서 성능이 월등하다고 합니다.

고루틴이 제공하는 동시성은 어떤 언어에서도 따라오기 힘든 정도 인데요.

앞에서 말씀드렸지만, 다른 언어로 이런 작업을 해보신 분이라면,

백퍼센트 공감하실 겁니다. ( 스칼라 언어에 경우 akka라이브러리로 비슷한 기능이 있지만 Go만큼 간결하지 않습니다 )

 

그래서 그런지,

도커와 쿠버네티스가 Go언어로 만들어졌다고 알려져 있습니다.(아마도 이 이유로 Go언어를 사용하는 회사가 많아졌는지도 모르겠습니다. )

 

결론

물론, 프로그래밍 언어를 모르는 분들 입장에서 Go언어가 어려울 수도 있겠지만,

C를 아는 사람이라면, 정말 놀랄만큼 쉬운 언어가 Go입니다. 

 

C문법에서 가장 골치 앞은 포인터부분을 상당히 깔끔하게 정리했고, 

일급함수 개념을 도입해서 함수형 프로그래밍이 어느정도 가능하게 해줬는데...

이렇게까지 언어를 정리할 수 있다는 것은 설계자들에게 경의를 표하지 않을 수가 없습니다.

 

게다가,

이 책이 정말 읽고 따라하기 쉽게 되어 있습니다.

책을 읽다보면, 마치 저자가 독자의 머릿속에, Go에 대한 지식을 차곡차곡 쌓아주고 있는 것 같습니다.

간단한 문법 설명과 이를 사용한 예제, 그 이해를 기반으로 다음 예제를 설명하는 .. .

앞에서 말했던것처럼, 프로그래밍을 모르는 사람도 독학이 가능할 것 같은 그런 책입니다.

 

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?