본문 바로가기

도서&리뷰

[서평] Go 인 액션 - Go in Action (제이펍 출판)

안녕하세요 버섯돌이 유재성입니다.

최근 몇 년간은 클라우드와 가상머신 쪽에서 일을 하다 보니 Docker를 비롯하여 Go에 대한 소식을 가끔씩 접하게 됩니다.

당시에는 업무가 바빠서 Go를 배우기에는 시기 상조라서 미뤄뒀었는데 이번에 조금은 여유도 생겼고,

Go 언어도 살펴보려 했는데 운 좋게(?) 가벼운 마음으로 Go 언어의 개념을 살펴볼 수 있는 서적이 출간되었네요.^^

최근 출간된 Go 인 액션에 대해서 살펴보겠습니다.


 

개인적으로 도서를 구매하기 전에 저자가 가장 심혈을 기울이는 도서의 목차 및 소개 내용 등의 앞 부분을 즐겨 보곤 합니다.

도서 선택전에 머리말과 목차를 열심히 살펴봤는데 이 도서는 아래와 같은 내용들을 다루고 있습니다.

간단히 목차를 훑어보면, 1장에서 간단한 Go의 배경에 대해 설명하고 2장에서 Go의 전체 기능을 활용한 후

3장부터는 패키징, 배열, 타입, 동시성 등 Go의 기능에 대해 좀 더 세분화해서 다루고 있습니다.




도서 첫 페이지부터 챕터 1장까지는 YES24에서 미리 보기가 가능합니다.

http://goo.gl/LM2SFM 

한글 도서의 미리 보기를 살펴보시면 본 도서의 독자 대상과 Go 언어에 대한 기본적인 이해가 가능하리라 봅니다.


또한, 이 도서는 Manning 출판사의 Go in Action의 번역서로서 원서는 챕터 2장과 6장의 미리 보기가 제공됩니다.

https://www.manning.com/books/go-in-action


아무래도 목차 및 챕터 1장만 가지고는 본 도서의 성격을 파악하기 힘들 것이라 봅니다.
2장은 RSS 검색기 예제를 통해 Go의 전반적인 기능을 이해할 수 있는 기본 개념이며, 6장은 동시성에 대해서 다루니 읽어 보세요.
목차 및 추천사를 비롯하여 1장, 2장, 6장의 챕터만 읽어 보셔도 Go를 비롯하여 본 도서를 이해하는데 많은 도움이 될 것입니다.

그렇다면 이 책의 주 대상이 되는 독자층은 어떻게 될까요?

이 책의 제목에서 알 수 있듯이 이 책은 초보자들을 위한 입문서가 아닌 중급 수준의 개발자를 대상으로 하고 있습니다.



아무래도, 너무 기초 문법 위주로만 설명하면 초보자의 경우 활용이 어려울 수 있기 때문에,

2장에서 완전한 RSS 피드 검색 예제를 통해 Go의 구조와 문법을 학습 후 각 챕터에서 세부적인 내용을 설명하고 있습니다.

따라서, 상세한 기초 문법 위주의 초보자를 위한 입문서보다는 Go를 좀 더 제대로 알기 위한 길라잡이로 보시면 좋을 것 같네요.

하지만, 기본 설명 자체가 상당히 상세한 편이라서 초보자들이 보셔도 좋을 것 같습니다.*^^*


다만, 저자가 밝히고 있듯이 기존 언어에 대한 기본 경험이 있다면 Go 언어를 이해하는데 많은 도움이 될 것입니다만,

그렇지 않다면 모든 언어가 그렇듯이 상대적으로 습득하는데 많은 어려움이 있을 것이라 봅니다.

특히나, 이 도서의 경우 Go 언어에 대한 기초 문법서가 아니라서(?) 상대적으로 더 어려울 수밖에 없습니다.


이 도서는 18개월 이상의 시간을 투자해서 Manning 출판사의 MEAP과 Go 커뮤니티를 통해 많은 피드백을 받으면서

전체적인 내용을 다듬었기 때문에 아래 내용처럼 Go 철학을 비롯하여 완성도는 높을 것이라고 짐작할 수 있습니다.

반대로, 얇은 책에 그 모든 것을 담았기 때문에 조금은 어렵게 느껴질 수 있습니다.






한 권의 도서로 언어의 모든 걸 파악한다는 건 불 가능하기 때문에 가볍게 Go의 특징을 파악할 수 있다고 보시기 바랍니다.


소스 코드는 원서 사이트에서도 받을 수 있지만 아래 소개에서 나와있듯이 GitHub에서도 다운로드 가능합니다.

https://github.com/Jpub/GoInAction 

지금은 변경 사항이 없지만 소스의 경우 변경 이력을 확인하기 쉬운 GitHub이 좋지 않나 싶네요.

 


그렇다면, 가장 중요한 Go는 무엇이며 왜 그렇게 인기가 있는 것인가?

Go가 나온 이유와 Go의 장/단점에 대해서는 1장에 설명이 잘 나와있습니다.



초기 목표는 C 언어를 능가하는 시스템 프로그래밍 언어였다고 하니 어느 정도 예상이 가능할 것입니다.


 

이 도서는 교재처럼 각 챕터의 시작 부분에 학습할 내용에 대해서 알려 주고, 챕터의 마지막에 요약해 주는 형태로 되어있습니다.

Go를 가장 빠른 시간에 이해할 수 있는 가장 중요한(?) 1장과 2장의 학습할 내용을 보면 아래와 같습니다.






위 1장의 요약을 보면 Go의 장점에 대해서 알 수 있습니다.

C나 Java로 규모가 큰 오픈 소스들을 빌드 해 보시면 아래의 재미난 만화를 이해할 수 있으리라 보며,
Go의 장점 중 하나인 개발 속도에 대해서는 아래 내용을 보시면 도움이 될 듯싶습니다.^^



성향은 다르지만...대규모 플젝외의 컴파일 속도를 만끽하고 싶다면 안드로이드 앱을 개발해보면 환장하죠^^;;;


Go의 경우 기존 언어와는 다른 형태로 개발이 되기 때문에 1 장에서는 고루틴과 스레드와의 관계를 비롯하여..



상속과 합성 등의 차이점을 비롯한 Go의 특징에 대해 설명을 하고 있습니다.



언어를 살펴볼 때 모든 언어의 빠질 수 없는 가장 간단한 예제인 Hello World를 빼놓을 수 없죠^^

Hello World부터 시작하는 도서는 잘 못되었다는 사람들도 있지만 저는 이런 스타일이 적성에 맞는 것 같습니다.^^;;



Go는 Java나 C언어처럼 별도의 프로그램을 설치하지 않아도 온라인상에서 간단히 문법을 확인하고 공유할 수 있습니다.



1장의 간단한 설명만으로는 당장 수준급(?)의 Go 프로그램에 입문하기에는 상당히 어려울 수 있지만...

2장을 보면 왜 중급 수준 이상의 개발자를 대상으로 하는지 알 수 있을 것 같습니다.

보통은, 기본 문법들을 쭈욱~ 설명한 후에 설명된 문법 위주의 예제를 활용하는데 비해

이 도서의 경우 2장에서 곧바로 Go의 대 부분의 기능을 활용한 RSS 피드 검색 예제를 기반으로 설명합니다.



위의 아키텍처는 웹에서 각기 다른 데이터 피드를 가져와 콘텐츠를 검색어와 비교한 후 검색어에 일치하는 결과만을

터미널 윈도에 출력하는 프로그램으로서 텍스트 파일을 읽고, 웹에 요청을 보내고, XML과 JSON을 다루면서

속도 향상을 위해 Go의 동시성 기능을 잘 활용하고 있습니다.

일반적인 프로그램의 기능을 상당 부분 포함하고 있기 때문에 Go의 특징을 파악하는데 많은 도움이 되리라 봅니다.


소스는 GitHub에서 2장 소스를 다운로드해서 살펴보시기 바라며, 프로젝트 구조 및 용도는 아래와 같습니다.



책을 읽다 보면 전체적인 내용은 좋은데 왠지 모를 거부감 같은 답답함이 조금은 있었습니다.^^;;

곰곰이 생각해 봤을 때 책의 대부분이 아래와 같은 형태로 이뤄져서 그런 게 아닐까 싶네요.^^


즉, 아래처럼 그림이 전혀 없는 설명 위주의 서술 형태로 된 챕터들이 꽤 있습니다.



아무래도 기초 서적도 아니고, 설명 위주의 내용이 나쁜 게 아니라 단점이라고 할 수는 없습니다.^^

다만, 글만 있는 것보다는 아래처럼 그림이 한두 개 정도는 섞여있었으면 더 좋았을 텐데..라는 아쉬움이 더 크리라 봅니다.^^;;


 

전반적으로 중요한 부분에는 아래처럼 그림을 포함해서 이해하기 쉽게 설명되어 있습니다.

아래 그림만 보면 상당히 기초적인 내용에도 그림으로 잘 설명되어있어서 입문하는 분들에게도 좋은 것 같습니다.






그리고 초보자들이 어려워하는 스레드 및 동시성 등에 대해서도 그림으로 최대한 설명하고 있습니다.




배열,슬라이스,맵이나 동시성처럼 그림이 많은 챕터들도 있지만 그림이 없는 챕터가 상당히 많습니다.

그림이 없어도 이해하는데 큰 어려움은 없지만 그래도 없는 것보다는 있었으면 하는 아쉬움이 있어서
해당 챕터들은 기존 언어에 대한 경험이 없는 분들은 약간은 어려울지 모르겠습니다.

3인의 공동 저자라서 특색이 나뉘는 것 같기도 한데 그런 부분들을 제외하고는 빛 반사도 적고 책 내용 자체도 좋은 것 같습니다.
필요한 부분에는 그림으로 상세하게 설명하고 있어서 10점 만점을 주고 싶지만 조금은 아쉬운 부분이 있어서 9점을 주고 싶네요.^^

[요약]

- Go 언어에 대한 집중적이고 간결하면서도 포괄적인 가이드를 제공

- 책이 두껍지 않고 필요한 핵심 내용을 포함하고 있어서 가벼운 마음으로 Go를 접하기에 무난함.

MEAP과 Go 커뮤니티를 통해 많은 피드백이 반영되어있음.

- RSS 피드 검색 예제를 통한 Go 철학을 이해할 수 있음.

- 중급 수준 이상의 개발자를 위한 서적

- 그림이 많지 않아서 완전 초보자가 보기에는 다소 어려울 수 있음.

- 기존 언어에 대한 이해가 전혀 없는 초보의 경우 다른 Go 문법서와 병행해서 보는 것을 추천 함.

Go의 모든 것을 학습할 수 있어서 초보 입문자에게도 권장 함.


- 한글 도서 미리 보기 (목차 및 챕터 1장) : http://goo.gl/LM2SFM 

- 원서 미리 보기(챕터 2장 6장) : https://www.manning.com/books/go-in-action

- 소스 코드 : https://github.com/Jpub/GoInAction