[0] Golang 공부해보기

devplaypark·2022년 2월 5일
0

golang

목록 보기
1/1
post-thumbnail

Golang 은 2009년 11월 구글에서 처음 발표
2012년 3월에 정식 발표된 프로그래밍 언어
2020년 기준 사용률 상위 25개 프로그래밍 언어 중 12위


DevOps 쪽으로 방향을 잡고 roadmap.sh/devops 를 보니 Go를 추천하길래 그냥 한번 공부나 해볼까 싶어서 끄적임

로버트 그리즈머, 롭 파이크, 케네스 톰슨(C랑 유닉스 만든 사람)이 C++ 복잡함이 싫어서 Go를 만들었다고 한다. 이미 대단한 사람들인데 저분들이 디자인했다고 하니,,, 더 궁금해짐. 지금도 패키지에 무엇을 포함할지는 세 명의 합의를 거쳐야 한다고 한다.


  • 2015년 - Go 컴파일리가 Go로 작성 (v1.5)
  • 2017년 - 가비지 컬렉션 개선 (v1.8)
  • 2018년 - 패키지 관리기능 추가 (v1.11)

장점

  • 컴파일러의 컴파일 속도가 빠르다 (인터프리터 언어처럼 쓸 수 있다.)
  • 소스코드를 해석하는 pass 수를 줄여서 달성했다고 한다.
  • 간결한 코드, 풍부한 라이브러리가 있다고 한다.
  • GoRoutine(고루틴) 이라는 비동기 메커니즘 제공 (Erlang에서 영향을 받음)
  • 각각의 고루틴은 병렬로 동작하며 메시지 채널을 통해 값을 주고 받음
  • 이벤트 처리, 병렬 프로브램이 간단
  • But,, 고루틴의 동기화 문제를 다뤄야 함
  • 멀티스레드 메커니즘 (자체 스케쥴러에 의해 관리되는 경량 스레드)
  • CPU 코어수와 무관하게 수백, 수천의 고루틴을 작성해도 성능 이슈 없음
  • 키워드가 25개 밖에 안됨 (단순)

단점

  • 바이트 코드를 생성하지 않음. 바이너리만 배포할 경우 타겟 머신에 맞춰서 각각 컴파일 해줘야 함. 다중 플랫폼 지원하려면 소스코드째 배포
  • 가비지 컬렉션 지원이나 제네릭 부재
  • 현대 프로그래밍 언어 연구의 성과를 일체 무시한 언어 설계

사용 사례

  • 안드로이드와 iOS 앱 제작할 수 있게 적용중 (미래의 얘기???)
  • Docker, Kubernates를 작성하는데 사용
  • 구글, 드롭박스, 클라우드플레어, 사운드클라우드 등 사용

IDE는 JetBrains의 GoLand or IntelliJ IDEA의 Go플러그인이 가장 유명
VS Code도 많이 추천

나는 VS Code로 일단 개발을 해볼까 생각 중이다.


나무위키 Golang 참고

profile
devplaypark

0개의 댓글