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 참고