AOC55

Cloud, Devops, Backend, Kubernetes, Openstack, ...

BackEnd/golang

IT서적후기 :: 하룻밤에 읽는 Go 언어 이야기

aoc55.soft@gmail.com 2024. 9. 3. 01:00

https://product.kyobobook.co.kr/detail/S000001057911

 


 

후기

무려 2015년에 출간된 책을, 9년 뒤인 2024년에 읽었습니다!

큰 목적보다는 회사 점심시간에 쓰윽 하고 편하게 본 것 같습니다.

물론 출간된지 오래된 책이라, 책에 기술한 내용보다 어느정도 디테일한 내용이나 언어 자체에 대해 어느정도 주요 변화는 있을 것으로 예상되기는 합니다.

그럼에도 golang 에 대해 전혀 모르는 입장에서 만든 사람들이 최소한 이러한 생각과 이유 때문에 가지고 만들었구나 라고 간단히 보기 좋은 책인 것 같습니다.


주요내용

Go 언어 개발배경

(1) 구글 같은 대형 플랫폼에서 '빌드 속도'의 경우 고질적 문제로 개선 시급

(2) 특히 C 혹은 C++ 의 경우 언어 특유의 '의존성'으로 인해, 빌드 속도 매우 오래 걸렸음

(3) 나날히 향상되는 멀티코어 환경에 소프트웨어적으로 대응이 필요함 (동시성 등)

 

위와 같은 문제점에 대해 기존 언어 베이스에서 지속적인 개선을 꾀했으나, 언어 자체의 한계로 인해 극복 불가

결국 이로 인한 이유로 인해서 신규 언어 개발 착수 -> Go 언어 등장

 

Go 언어 이모저모

  • Compile & Build 방식 (인터프리터 방식이 아님) => 단, Build 가 빠름!
  • UTF-8 지원
  • 시스템 개발 목적인 '시스템 프로그래밍 언어'로 출시 하였으나, 시스템 개발 한정적이지 않고 다양한 용도에서 사용 가능
  • C계열 언어 기반으로 볼 수 있음
  • 시스템 프로그래밍 언어는 한번 만들어지면 오랜시간 유지되는 특성 -> 따라서 Go 언어도 오래동안 유지될 가능성 있음
  • 마스코트 '고퍼', 관련 컨퍼런스 '고퍼콘'

 

Go 언어 주요 특징

  • '정적' 타입 언어지만 동적 타입 언어 속성 지원
  • 포인터는 제공하되, 포인터 연산은 제공하지 않음
  • GC 을 제공함 (java 와 달리, 빌드 후 결과인 실행파일에서 GC 지원)
  • 설계 단계에서부터 멀티코어를 지원하는 개념 제공
  • 강력한 동시성과 C,C++ 대비 신뢰성 높은 프로그래밍 가능

 

GO 언어의 지원기능 요약

주제 지원여부
Class, 상속, 오버로딩 X
Interface O
GC O
Pointer O
Pointer 연산 X
Import/Pakcage O
nil O
암묵적(Implicit) Type Conversion X