티끌모아 로키산맥 🏔
search
로ᄏl
배움에 끝은 없다... 개발 또한 그러하다.
Today
Yesterday
Go에 대해서 아예 무지한 상태로 해당 책을 접하게되었다.
평소 다른 언어를 찍먹해보고 싶은 욕구가 가득하던 찰나에 서평의 기회가 찾아와서 책을 간단히 리뷰해본다.
항상 어떤 새로운 언어를 배울 때는 그 언어가 어떤 목적을 가지고 탄생했는지가 늘 궁금해진다.
나뿐만 아니라 다른 사람들도 똑같지 않을까하는 생각에 1장만 간단하게 요약해려고한다. 😃
Go의 탄생이유는 Go at Google에서 확인할 수 있고 개발 배경은 'Why did you create a new language?'에 있다.
2007년 구글이 개발한 프로그래밍 언어인 Go는 당시 구글이 겪던 아래의 문제들을 해결하기위해 탄생했다.
위의 문제를 해결하기위해 Go는 아래와 같은 목표를 가지고 개발됐다.
Go 언어의 중요한 특징은 학술적인 목적으로 개발된 언어가 아니라 대규모 팀 개발에 발생하는 문제를 해결하고자 만들어졌다.
이는 객체지향이나 함수형 프로그래밍의 기초가 되는 이론이나 수학적 접근법은 Go에서는 표현하기 어렵다는 의미이기도 하다.
Go는 시스템 개발 중에 발생하는 문제를 해결하기 위해 탄생한 언어이기 때문에 개발자들의 요구에 따라 설계 이념을 지키는 범위 내에서 기능을 확장하는 경우도 있다.
Go를 작성할 때는 먼저 Effective Go나 Go Code Review Comments 등의 코딩 가이드라인을 따라해보는 것을 권장한다.
장표를 가볍게 살펴본다.
장표들을 쭉 훑어보면 대략적으로 이 책이 어떤 정보들을 제공하는 것인지 알 수 있을 것이다.
Go 언어의 문법이나 기초를 알려주는 책은 아니기 때문에 Go를 완전 처음 접해보는 분이라면 적절한 수준의 책은 아닐거라고 생각되지만
Go의 기본 문법을 다뤄봤고 웹 애플리케이션을 만들어봤다면 궁금해할만한 내용들을 Go 언어로 어떻게 구현하는지를 알려주는 책이다.
Go 언어를 생전 처음 보는거다보니 이 책을 읽으면서도 잘 이해하지 못한 부분들이 많았고 웹 애플리케이션을 개발할 때, 필요한 여러가지 처리들이 있는데 각 처리를 어떻게해야하지? 하고 고민할 때, Go는 이렇게 구현하는구나? 와 같은 방향 가이드를 알려주는 책이다.
Go에서는 이런 느낌 식으로 이런 처리를 하는구나?, 이런 기능도 제공하는구나? 와 같이 흥미롭게 책을 읽었다.
또한 Go는 객체지향 프로그래밍이 가능한지에 대한 Chap6의 내용도 흥미로웠다. (YES이면서 NO이기도 하다는 애매한 공식문서의 답변) 객체지향의 대표적인 특징인 캡슐화, 다형성, 상속 중 다형성을 지원하지 않기 때문이다. (일부만 지원)
Go에서는 상속을 표현하기위해서 embedded 를 사용하는 방식을 소개하기도하지만 이는 완전히 상속을 대체할 수 없다.
embedded의 개념을 딱 보면서 상속보다는 조합(?)의 개념이 아닐까 싶었는데 책에서도 역시나 이 개념은 composition(= 조합), mixin 과 같은 개념에 더 가깝다고 동일한 이야기를 하고있다. (괜히 뿌듯 😙)
이 외에도 에러 처리는 어떻게 할 것인지 DIP(= 의존성 역전 원칙), 환경 변수 적용 방법, 미들웨어 패턴 등등 혼자서 맨땅에 헤딩하며 공부하기에는 많은 시간과 노력이 소모될 수 있는 내용들에 대해서 전반적인 가이드를 해주고있다. 이 책에 나온 내용들을 숙지하면 모르는 내용을 찾기위해서 구글링하는 시간을 절약하는데 큰 도움이 될 것 같다.
Go 문법에 대해서 어느정도 숙지되어있고 웹 애플리케이션을 개발에 도전하고있는 분이라면 이 책을 읽음으로인해 많은 시간을 절약할 수 있을 것으로 기대된다.
Unit Testing - 01장 단위 테스트의 목표 (0) | 2022.01.16 |
---|---|
[서평] 처음배우는 리액트 네이티브 - 한빛 미디어 (4) | 2021.03.20 |
나의 첫 파이썬 - 한빛미디어 (0) | 2020.10.23 |
배워서 바로 쓰는 스프링 부트 2 - 한빛미디어 (0) | 2020.05.30 |
처음 배우는 플러터 - 한빛미디어 (0) | 2020.04.30 |