티스토리 뷰

Programming

Golang 공부 중

신잼 2021. 11. 25. 12:20

소개

  • 2009년 11월에 구글에서 처음 발표된 후 2012년 3월에 정식 발표된 프로그래밍 언어.
  • 로버트 그리즈머, 롭 파이크, 케네스 톰슨[2]이 디자인
  • Go는 명시하고 있지 않지만 단순함과 실용성을 지향하는 언어다. keyword가 25개밖에 되지 않고 문법 또한 간결해 입문이 쉬운 편이다.
  • Go는 바이너리 컴파일러이므로 서로 다른 머신 플랫폼들을 타깃으로 배포해야 할 경우 환경변수(GOOS와 GOARCH 등)를 그에 맞게 설정한 후 컴파일해서 여러 벌의 배포판을 만들어야 한다.
  • 개발 속도와 실행 속도, 병행성 사이의 적정 지점이 필요한 서버 애플리케이션 개발에 많이 사용되는 편
  • 컨테이너 기반 가상화 도구인 Docker, Kubernetes를 작성하는 데 사용된 언어로 유명
  • 이더리움의 메인 클라이언트인 Geth 역시 Go로 작성
  • Go는 이미 시장에서 인정받은, 안정성이 검증된 언어

장점

  • 컴파일 언어이지만 컴파일러의 컴파일 속도가 매우 빨라 인터프리터 언어처럼 쓸 수 있다는 점
    • 언어의 문법 구조를 개선함으로써 달성
  • 간결한 코드
  • 컴파일 언어답게 높은 성능을 낼 수 있다는 점이 호평
  • 풍부한 라이브러리 덕택에 막강한 기능을 쉽게 구현할 수 있다는 것
  • 고루틴 비동기 메커니즘
    • Erlang에서 영향을 받은 것으로 각각의 고루틴은 병렬로 동작하며 메시지 채널을 통해 값을 주고받는다

단점

  • 컴파일 언어 중에서는 매우 빠른 편이지만 아무래도 인터프리터 언어의 즉흥성까지 바라는 건 무리
    • 대형 모듈을 이것저것 붙이면 컴파일에 필요한 시간이 있기에 Python 등의 인터프리터 언어보다는 기계어 번역 시 확실히 반응이 느릴 수밖에
  • 바이트코드를 생성하는 언어가 아니므로, 해당 타깃 머신에 맞춰서 각각 컴파일해야 한다
  • Go 언어의 설계 지향점은 시스템 프로그래밍 언어였지만, 가비지 컬렉션의 지원이나 제네릭의 부재로 인해 박싱/언박싱이 불필요하게 많이 일어나는
  • 실제로 고성능 연산에 사용하기에는 C/C++에 비해 느리며, 저수준 시스템 개발에서는 가비지 컬렉션과 고루틴을 지원하기 위한 무거운 런타임 등으로 인해 사용이 불가능에 가깝
  • 현대 프로그래밍 언어 연구의 성과를 일체 무시한 언어 설계
    • 많은 종류의 프로그램 버그는 프로그래밍 언어 차원에서 원천적으로 차단
    • 프로그래밍 언어 연구자들은 쓰기 쉬우면서도 최대한 많은 버그를 컴파일 시점에 잡을 수 있는 타입 시스템
    • Go에서는 널 포인터나 안전하지 않은 타입 캐스팅의 유발 등 수많은 버그의 원천들에 전혀 손을 대지 않았다는 것

Deep dives

Concurrent

Generics

Go Routine

Channels

CSP

Todo

Packages

공부 방법

1. 기본 문법 학습

Links

 

Reference

반응형

'Programming' 카테고리의 다른 글

No Operation(no-op, nop, noop)  (0) 2022.01.11
Generic 과 Boxing&Unboxing  (0) 2021.11.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함