|
안녕하세요 버섯돌이 유재성입니다. 최근 몇 년간은 클라우드와 가상머신 쪽에서 일을 하다 보니 Docker를 비롯하여 Go에 대한 소식을 가끔씩 접하게 됩니다. 당시에는 업무가 바빠서 Go를 배우기에는 시기 상조라서 미뤄뒀었는데 이번에 조금은 여유도 생겼고, Go 언어도 살펴보려 했는데 운 좋게(?) 가벼운 마음으로 Go 언어의 개념을 살펴볼 수 있는 서적이 출간되었네요.^^ 최근 출간된 Go 인 액션에 대해서 살펴보겠습니다.
개인적으로 도서를 구매하기 전에 저자가 가장 심혈을 기울이는 도서의 목차 및 소개 내용 등의 앞 부분을 즐겨 보곤 합니다. 도서 선택전에 머리말과 목차를 열심히 살펴봤는데 이 도서는 아래와 같은 내용들을 다루고 있습니다. 간단히 목차를 훑어보면, 1장에서 간단한 Go의 배경에 대해 설명하고 2장에서 Go의 전체 기능을 활용한 후 3장부터는 패키징, 배열, 타입, 동시성 등 Go의 기능에 대해 좀 더 세분화해서 다루고 있습니다.
도서 첫 페이지부터 챕터 1장까지는 YES24에서 미리 보기가 가능합니다. 한글 도서의 미리 보기를 살펴보시면 본 도서의 독자 대상과 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 장에서는 고루틴과 스레드와의 관계를 비롯하여..
Hello World부터 시작하는 도서는 잘 못되었다는 사람들도 있지만 저는 이런 스타일이 적성에 맞는 것 같습니다.^^;;
1장의 간단한 설명만으로는 당장 수준급(?)의 Go 프로그램에 입문하기에는 상당히 어려울 수 있지만... 2장을 보면 왜 중급 수준 이상의 개발자를 대상으로 하는지 알 수 있을 것 같습니다. 보통은, 기본 문법들을 쭈욱~ 설명한 후에 설명된 문법 위주의 예제를 활용하는데 비해 이 도서의 경우 2장에서 곧바로 Go의 대 부분의 기능을 활용한 RSS 피드 검색 예제를 기반으로 설명합니다.
터미널 윈도에 출력하는 프로그램으로서 텍스트 파일을 읽고, 웹에 요청을 보내고, XML과 JSON을 다루면서 속도 향상을 위해 Go의 동시성 기능을 잘 활용하고 있습니다. 일반적인 프로그램의 기능을 상당 부분 포함하고 있기 때문에 Go의 특징을 파악하는데 많은 도움이 되리라 봅니다. 소스는 GitHub에서 2장 소스를 다운로드해서 살펴보시기 바라며, 프로젝트 구조 및 용도는 아래와 같습니다.
곰곰이 생각해 봤을 때 책의 대부분이 아래와 같은 형태로 이뤄져서 그런 게 아닐까 싶네요.^^
다만, 글만 있는 것보다는 아래처럼 그림이 한두 개 정도는 섞여있었으면 더 좋았을 텐데..라는 아쉬움이 더 크리라 봅니다.^^;;
전반적으로 중요한 부분에는 아래처럼 그림을 포함해서 이해하기 쉽게 설명되어 있습니다. 아래 그림만 보면 상당히 기초적인 내용에도 그림으로 잘 설명되어있어서 입문하는 분들에게도 좋은 것 같습니다.
배열,슬라이스,맵이나 동시성처럼 그림이 많은 챕터들도 있지만 그림이 없는 챕터가 상당히 많습니다. 그림이 없어도 이해하는데 큰 어려움은 없지만 그래도 없는 것보다는 있었으면 하는 아쉬움이 있어서 해당 챕터들은 기존 언어에 대한 경험이 없는 분들은 약간은 어려울지 모르겠습니다. 3인의 공동 저자라서 특색이 나뉘는 것 같기도 한데 그런 부분들을 제외하고는 빛 반사도 적고 책 내용 자체도 좋은 것 같습니다. 필요한 부분에는 그림으로 상세하게 설명하고 있어서 10점 만점을 주고 싶지만 조금은 아쉬운 부분이 있어서 9점을 주고 싶네요.^^ [요약] - 책이 두껍지 않고 필요한 핵심 내용을 포함하고 있어서 가벼운 마음으로 Go를 접하기에 무난함. - MEAP과 Go 커뮤니티를 통해 많은 피드백이 반영되어있음. - RSS 피드 검색 예제를 통한 Go 철학을 이해할 수 있음. - 중급 수준 이상의 개발자를 위한 서적 - 그림이 많지 않아서 초보자가 보기에는 어려울 수 있음. - 기존 언어에 대한 이해가 전혀 없는 초보의 경우 다른 Go 문법서와 병행해서 보는 것을 추천 함. - 한글 도서 미리 보기 (목차 및 챕터 1장) : http://goo.gl/LM2SFM - 원서 미리 보기(챕터 2장 6장) : https://www.manning.com/books/go-in-action - 소스 코드 : https://github.com/Jpub/GoInAction |
|
옮긴이 장현희 [ 책소개 ] 개발 생산성과 효율성을 동시에 만족시키는 GO 언어! [인터넷 교보문고 제공] [ 목차 ] 1장 Go와의 첫 만남 [ 책을 읽으며... ] 책에서는 개발에 대한 개념이 있는 독자를 위하는 책이라고 나와있지만 내용의 설명이 쉽고 간결하여 Go의 입문서로 사용되어도 괜찮다고 생각합니다. 특이하게 느껴졌던 부분은 소스코드를 줄 단위로 끊어서 설명해준다는 것입니다. 자세하게 설명해주려는 의도가 있어서 좋아보이기도 하면서 보기에 불편한 부분도 있는 것 같습니다. 장의 마지막 부분에 요약이 되어있습니다. 각 장마다 배운 내용을 정리하는 부분이고 한 번 읽어보면 이해되도록 간단하게 서술해놓은 부분이 굉장히 마음에 들었습니다. 장을 넘어가면 넘어갈수록 난이도가 올라가지만 실제로 사용하는 내용을 담고 있기 때문에 끝까지 꾸준하게 공부하신다면 좋을 것 같습니다. [ 총평 ] Go를 입문하는 사람에게 추천해줄만한 책. 부분별로 이해하기 쉽게 설명해주는 책. 구성 : ★★★★☆ 난이도 : ★★★☆☆ # 이 리뷰는 제이펍의 지원을 받아 작성되었습니다. |
|
Go라는 프로그래밍 언어는 "Go 인 액션" 책을 통해 처음으로 알게되었다. 구글이 개발한 프로그래밍 언어라고 하는데, 이런 언어가 있는지 알지 못했었다. 이 책을 통해 처음으로 Go 언어를 접하게 되었는데, 첫 느낌은 소스코드가 간결하고, 쉬운 느낌을 받았다. 다른 언어와 같이 잡다한 소스가 없는 것 같았다. 이 책에서 Go언어의 장점이 빠른 속도의 컴파일러와 실행 성능, 동시성 지원, 멀티 스레드 활용 등 이라고 한다. 총 9장으로 되어 있는데 1장에서는 Go언어의 역사와 핵심 개념을 설명하고 있고, 2장에서는 타입, 변수, 함수, 메서드 선언하는 방법을 설명하고 있다. 3장에서는 패키징의 개념을 설명하고 워크스페이스 및 개발 환경을 구성하는 방법을 설명한다. 제 4장에서는 배열과 슬라이스, 맵에 대해서 설명하는데 기존 프로그래밍을 경험했던 개발자라면 무난히 따라 올 수 있을듯 하다. Go는 정적 타입 프로그래밍 언어이다. 컴파일러가 프로그램 내의 모든 값의 타입을 알고 있다. 그래서 5장에서는 새로운 사용자정의 타입 만드는 방법, 인터페이스를 이용하여 다형성 구현하는 방법을 설명하고 있다. 6장에서는 Go의 스케줄러와 동시성 지원과 채널의 동작 방식을 설명하고 있고, 7장에서는 실용적인 예제코드를 살펴보고 리소스 재사용하는 방법을 설명하고 있고, 8장에서는 표준 라이브러리, log, json, io 라이브러리 패키지를 설명하고 있다. 마지막 9장에서는 단위 및 테이블 테스트 벤치마크 코드를 작성하는 방법을 설명하고 있다. Go언어는 반드시 프로그램의 개발 완료한 후에만 테스트를 할 수 있는게 아니라 Go언어에서는 단위 테스트를 할 수 있다. 여기서 단위 테스트란 프로그램에 일부만 테스트 할 수 있는 기능이다. 이 책을 평가해 보자면, 국내에 알려지지 않은 Go라는 언어를 원서가 아닌 한글로 배울 수 있게 해준 고마운 책이다. 소스코드도 다운로드 받을 수 있어, 따라 가는데 크게 문제 없었다. 다만 프로그래밍을 많이 해보지 않은 학생이나 초급 개발자에게는 어려울 수도 있는 책인것 같긴하다. Go언어를 배울수 있어서 좋긴하지만, 국내에서 실무에서 사용할 기회가 있을지는 모르겠다. 그래도 개발자로서 살아가려면 항상 공부해야 한다. |
|
어느덧 여름 이네요.. 2년전 여름에 도서평을 남긴 후 2년만에 도서평을 남깁니다. 최근 새로운 일을 하느라 바빠서 책 읽을 틈도 없었는데.
저는 20년 이상 응용프로그램 개발자로 활동 하다 최근 PM 으로 전향 하여 개발과 매니져 일을 같이 하고 있는 무명인 입니다^^
Go 언어라는 강력한 언어가 있다는 정보를 몇달 전 인터넷 매체를 통해 접하고 얼마나 강력한데 이럴까 궁금도 하고 구글에서 심혈을 기울여 만들었다고 해서 관심을 갖던중 활동하는 카페에 마침 Go in Action 이라는 책이 나와서 서평 이벤트를 통해 Go 언어에 대해 알아 볼 수 있는 기회가 되어 짬짬히 읽어보고 Go 언어에 관심이 있거나 이 책에 대해 알고 싶은 다른 독자 분들을 위해 조금이나마 도움이 되었으면 하는 마음에 서평을 남겨볼까 합니다.
먼저 이 책은 어느정도 타 언어로 개발자 생활을 하시는 분들께 추천합니다. 타 언어를 사용해본 적이 없는 분들 이나, 이제 입문 하려는 초보 분들은 읽고 이해 하는데 시간이 많이 걸릴 것으로 생각 됩니다.
책의 내용은 다른 책들과는 많이 다른 것 같습니다. 딱 개발자들이 원하는 책이 아닌가 생각이 드네요.
대부분의 책은 초보자의 입장에서 해당 언어의 구문, 키워드 등에 대한 설명을 하고 간단한 예문으로 사용법을 보여주는 정도인데 Go in Action 은 언어를 이해 할수 있는 예제와 해당 예제를 단락별로 세심하게 설명을 하고 친절하게 내부적으로 움직이는 원리를 그림으로 표현 하여 독자로 하여금 이해하기 편하게 하였습니다. 이 책을 읽고 이해 한다면 타 언어에서도 단순 개발이 아닌 내가 만든 프로그램이 내부적으로 어떤 원리로 움직일지를 알수 있으리라 생각 됩니다.
내부적 원리를 알고 시작 한다는 것은 어떤 언어를 다루 더라도 쉽게 이해 할수 있으니 개발자로서 한층 더 성장 하고 싶으신 분들은 반드시 이 책을 읽어 보시길 권장합니다.
이 책을 읽으면서 문득 생각이 든게 있습니다.
이 책을 집필하신 분의 Go 언어에 대한 무한한 관심과, 좋은 차세대 언어가 많은 개발자 들에게 알려졌으면 하는 마음을 느낄 수 있었습니다.
책을 읽다보면 먼가 하나라도 더 알려주고 싶어 하는 마음을 느낄 수 있었습니다.
하지만 이러한 마음 때문에 한편으로는 아쉬움도 있씁니다.
이 책을 집필자는 하나의 간단한 예제로 책의 절반을 차지 할정도로 하고 싶은 말이 많은 것 같습니다. 내용은 알차고 하나하나 꼭 필요한 내용 인듯 보이지만 이 또한 책의 표지에서 얘기 하듯이 어느정도 타 언어를 다루는 독자들에게 추천 하였다 시피 타 언어를 잘 다루는 독자라면 구지 이정도 까지는 설명이 길 필요는 없었지 않나 하는 생각이 듭니다.
책의 절반이 Go 언어의 강점을 설명하기 위한 패키지 와 타입 시스템에 치중 하다 보니 나머지 부분에 대한 설명은 오히려 너무 간략하지 않은가 하는 생각도 들고 미처 다 설명도 못하고 알아서 나머지 부분은 알아보라는 식으로 급하게 마무리 하게 된 점은 아쉬움으로 남습니다.
하지만 이 책을 읽으면서 Go 언어가 왜 차세대 언어라고 얘기 하는지는 분명히 알수 있었습니다. 책의 분량이 좀 부족하여 언어의 모든 부분을 책에 기술하진 못하였지만 이 책을 읽음 으로서 Go 언어가 얼마나 강력하고 얼마나 쉽게 원하는 결과를 얻을 수 있는지 읽을 수록 쉽게 느껴지는 통일된 문법 등 정말 대단한 언어임을 깨우치게 해주며, Go 언어를 배우고 싶은 욕망을 갖기에는 충분한 책이라 생각됩니다.
Go 언어의 원리를 심도있게 이해하고 기본 원리를 모른체 단순 개발자의 길을 가고 있는 분들은 반드시 이 책을 읽어 보시길 권장합니다.
두서없는 서명 글이지만 끝까지 읽어주신 모든 분들께 감사드립니다.
끝으로 이 책을 읽을 수 있는 기회를 주신 '제이펍 출판사'와 좋은 책을 집필자 분들과 장현희 님께 감사드립니다 |