[서평] 백엔드를 위한 GO 프로그래밍

2022. 8. 28. 22:50PS/Problem Solving

영진닷컴에서 진행하는 이벤트에 당첨되어 백엔드를 위한 GO 프로그래밍 책을 받았습니다.

 

아래는 파릇파릇한 새 책입니다. 디자인이 예뻐서 내용도 기대됩니다.

디자인이 제 스타일이에요

 

제가 매기는 책의 별점은 다음과 같습니다.

내용 4.9 / .5.0
구성/디자인 5.0 / 5.0

 

저는 개발보다는 컴퓨터 알고리즘 문제풀이에 훨씬 가중치가 많이 부여되어 있는 사람이므로 개발자나 개발입문자의 관점보다는  '새로운 언어에 관심이 있는, 취미로 코딩하는 사람'의 관점으로 책을 읽었습니다. 물론 책 제목에 '백엔드를 위한'이 붙어있으므로 "이 책 하나로 나도 백엔드 개발자?"라는 상상도 잠깐 했습니다. 어디까지나 상상입니다. 

 

책의 내용, 구성, 그리고 실제로 배운 것 3가지에 대해 알아보겠습니다.

이 글은 계속 업데이트될 수 있습니다.

UPD: 2022/08/31

 

1. 책은 어떤 내용을 다루고 있는가?

머릿말을 통해 작가의 목적을 알아봅시다.

목적을 요약하면 다른 프로그래밍 언어에 숙련된 개발자를 Go 세계에 입문하도록 끌어당기는 안내서입니다.

핵심적인 문법과 "소수 판정, 다익스트라 최단 경로 탐색" 등의 기본 알고리즘, 그리고 "동시성 , 상호호환성"등의 프로그래밍 언어의 특성에 관하여 설명합니다. 제목에 언급된 백엔드는 실제 백엔드에 바로 접근한다기 보다는 저자 탠메이 박시, 바히어 카말처럼 훌륭한 백엔드 프로그래밍 능력을 갖추기 위한 근육을 키워준다는 의미를 담은 것으로 해석 가능합니다.

 

책의 목차는 다음과 같습니다.

더보기

목차

제1장 소개
  1.1 왜 Go인가요?
    1.1.1 Go의 설계 목표는 무엇인가요?
    1.1.2 어디서 Go를 활용할 수 있을까요?
    1.1.3 Go 컴파일러와 런타임
    1.1.4 동시성
제2장 빠르게 시작하기
  2.1 Go 설치하기
    2.1.1 시스템 패키지 매니저를 이용하여 설치하기
    2.1.2 미리 컴파일된 바이너리 이용하기
    2.1.3 소스코드로 Go 빌드하기
  2.2 Go 기본 개념
    2.2.1 일반적인 프로젝트 구조
    2.2.2 Go의 시작 “Hello, World!”
    2.2.3 변수
    2.2.4 if 문 그리고 switch 문
    2.2.5 반복문
    2.2.6 함수
    2.2.7 구조체
    2.2.8 인터페이스
    2.2.9 오류
제3장 Go 모듈
  3.1 빌트인 패키지 사용하기
  3.2 서드파티 패키지 사용하기
    3.2.1 저 소수인가요? 1
  3.3 직접 만든 패키지 빌드하기
    3.3.1 저 소수인가요? 2
제4장 빌트인 패키지 사용하기
  4.1 일반적인 데이터 구조와 알고리즘
  4.2 다익스트라 길 찾기
  4.3 콘웨이의 라이프 게임
  4.4 작업 증명 1
제5장 동시성
  5.1 동시성, 스레드, 그리고 병렬성
  5.2 고루틴
  5.3 채널
    5.3.1 select 문
  5.4 작업 증명 2
제6장 상호 호환성
  6.1 상호 호환성이 중요한 이유는 무엇일까요?
  6.2 C 코드와 상호 호환하기
  6.3 Swift와 상호 호환하기

일단 어떤 개발책이든 언어 환경을 셋팅하는 것이 가장 우선이라고 생각하므로 2장부터 읽었습니다. 왠걸, 시작부터 Windows는 백엔드 개발자에게 최적의 시스템이 아니므로 시스템 패키지 매니저를 이용하는 쉬운 방법은 Windows에서 제공되지 않는다는 참담한 정보를 얻을 수 있었어요. Go 공식 웹사이트에서 확인하라네요 :) 전 단 한 번도 책을 통해 언어를 설치해본 적이 없습니다. 이 책을 읽는 Windows를 쓰는 개발자/개발자지망생이 있다면 책에서 친절하게 언어 설치법을 가르쳐줄거라는 희망을 버리는 자세를 가르쳐주는 것이니 긍정적으로 생각합시다.

 

저는 Windows + VSCode 유저이므로 구글에서 검색한 튜토리얼을 통해 설치했습니다. 처음에 잘 안되던데 안되면 공식 튜토리얼로 합시다. https://go.dev/doc/tutorial/getting-started

.msi 파일을 통해 설치하므로 매우 간단합니다. 다만 대부분의 언어가 그렇듯 환경변수를 직접 셋팅해야 합니다. 컴파일러를 직접 설치할 경우 자주 겪는 일이니 익숙해집시다.

로컬에 설치하지 않는 방법으로는 Go 공식 온라인 컴파일러 이용이 있습니다.

Go의 마스코트 Gopher은 귀엽습니다.

한 번에 잘 설치되지가 않아서 1시간 정도 투쟁한 후 VS Code에서 첫 Hello World를 볼 수가 있었습니다.초심자를 대상으로 하지 않은걸 명백히 증명합니다.

Code Runner을 이용하면 Ctrl + Alt + N 단축키로 쉽게 실행할 수 있습니다.

 

다시 책으로 돌아가서 인상깊었던 것은 Go가 어떤 언어인지에 대한 설명이 자세히 나와 있다는 것입니다. 단순히 인터넷에서 문법만을 배울 때 공부할 수 없는 내용들을 포함하여 좋았습니다. Go의 설계 목표, Go를 활용하는 곳, Go의 우수한 점을 간결하면서도 이해가 쉽게 전달하네요.  한편으로 Go에서 제네릭 프로그래밍을 지원하지 않는 중요한 단점을을 빠짐없이 설명해주므로 언어를 익힐 때 탄탄한 기본과 방향성을 제시해줍니다.

 

1장으로 다시 돌아가보겠습니다.

PS러는 stdin, stdout을 통해 입출력을 하는데 상당히 익숙합니다. 그런데 매우 아쉽게도 input 받는 방법에 대해 1장에서 설명해주지 않습니다. 직접 알아봤습니다. https://pkg.go.dev/fmt#Scanf fmt package의 Scanf 함수를 사용하면 됩니다.

 

출력함수는 fmt.Println 입니다. 왜 대문자로 시작하냐고요? Go 언어는 public, private과 같은 객체지향의 접근 제어의 수행을 첫 글자의 대소문자 여부로 수행합니다. 따라서 public으로 설정할 Println, Scanf와 같은 함수들의 이름의 첫글자는 대문자입니다.

2. 책 구성 / 디자인은 어떠한가?

- 전체적인 디자인이 매우 깔끔합니다.

- 눈에 편한 색상(청록 계열)을 사용했습니다. -> 개인 취향입니다

- 코드가 핵심 함수들로 짧게 짧게 조각화 되어 있어 읽기 편합니다.

- 각 대단원이 끝날 때마다 1페이지의 연습문제가 있어 복습할 수 있습니다.

 

3. 이 책으로 새롭게 배운 것은 무엇인가?

- Go 언어를 제 컴퓨터에 설치했습니다.

- Go 언어의 기본적인 문법을 익혔습니다.

- 익힌 문법을 사용하는 백준 문제를 Go 언어로 풀어봤습니다. http://boj.kr/d46e1f1161f94e6cb351aa10fdd591c7

문법이 C/C++와 비슷하면서도 다르고 엄격한 부분이 있어 적응하기가 어렵습니다.

책에는 실제로 훨씬 더 많은 내용이 있습니다. 궁금하신 분은 책을 직접 읽으면서 알아보세요!

 

728x90

'PS > Problem Solving' 카테고리의 다른 글

VS Code C/C++/Python 설정 방법 - PS를 위한  (3) 2022.10.22
0901 금토일 연습  (0) 2022.09.04
0826 연습  (0) 2022.08.26
0824 연습  (0) 2022.08.24
BOJ 4786 Cosmocraft  (0) 2022.08.22