Go — 멀티코어 시대의 단순함을 박은 언어
1. 요약
Go는 2007년 Google에서 Robert Griesemer·Rob Pike·Ken Thompson이 시작해 2009년 11월 공개된 시스템 언어다. 2012년 3월 1.0 버전이 기록되었다. "문법·의미·타입의 혁신이 아니라 소프트웨어 개발 프로세스 자체 에 집중 한 점이 특이하다. 이름은 단순히 Google의 언어 에서 따왔다.
2. 배경 — 거대 시스템과 멀티코어 시대
2000년대 후반 Google은 거대 코드 베이스 + 긴 빌드 시간 + 멀티코어 활용 한계 라는 세 가지 문제를 안고 있었다. C++는 강력하지만 빌드가 느렸고, Java는 메모리가 무거웠다. Pike·Thompson(둘 다 Bell Labs에서 Unix·Plan 9를 박은 인물)·Griesemer는 "빌드가 빠르고 멀티코어를 잘 쓰는 단순한 언어" 가 필요하다고 박았다.
설계 시작은 "긴 C++ 빌드를 기다리며 짜증을 박은 점심 시간" 으로 알려져 있다. 산업의 잔혹한 일상이 새 언어를 박은 사례다.
3. 핵심 특징
- Goroutines — 매우 가벼운 동시성 단위. 한 프로그램에 수십만 개도 박을 수 있음.
- Channels — Tony Hoare의 CSP(Communicating Sequential Processes) 모델. 메모리 공유 없는 메시지 전달.
- Structural typing — interface가 명시적 선언 없이 형태로 만족됨.
- Garbage Collection — Java 대비 매우 짧은 정지 시간.
- One way to do things — Perl·Ruby와 정반대 철학. "go fmt" 가 코드 스타일을 강제.
- Fast compilation — 의존성 그래프가 단순해서 거대 코드도 초 단위 컴파일.
- No generics (1.0~1.18) → Generics introduced (1.18, 2022)
4. 주 용도
- 2009~2014: Google 내부 도구·인프라
- 2014~현재: Docker(2013)·Kubernetes(2014) — 컨테이너·오케스트레이션 시대의 언어. 클라우드 인프라 표준.
- 2015~현재: Hashicorp(Terraform·Consul)·CockroachDB·etcd·Prometheus — DevOps 도구의 사실상 표준.
- 2020~현재: 백엔드 마이크로서비스·CLI 도구
5. 시대 설계 도구 매핑
Go는 "단순함을 강제하는 언어" 의 표준이다. 같은 시기 Scala·Rust가 학술적 정형성 을 박았다면, Go는 Unix 철학(작고 단순한 도구를 조합) 을 박았다.
설계 도구 측면에서 Go는 언어가 직접 설계 결정을 강제 한다.
- "There is one and only one way to do X" — 자유 대신 일관성
- "go fmt" — 코드 스타일 논쟁 자체를 종식
- "errors are values" — 예외 대신 명시적 에러 반환
이는 Convention over Configuration 의 언어 차원 박음이다. Ruby on Rails가 프레임워크 차원에서 박은 것을, Go는 언어 차원에서 박았다.
6. 강의 활용
Go는 강의에서 "단순함이 곧 설계" 라는 메시지의 핵심 사례다. 복잡한 언어 + 복잡한 설계 보다 단순한 언어 + 명확한 설계 가 거대 시스템에 적합하다. Kubernetes 전체 코드 베이스가 그 증거다 — 수백만 라인이 읽을 수 있는 상태로 유지된다.
이는 LLM 시대의 프롬프트 설계 와 직결된다. "좋은 프롬프트는 단순하고 명확하다" — Go의 "there is one way" 와 같은 원리다. AI에게 50가지 표현 방식 을 허용하면 결과가 일관되지 않는다. 프롬프트도 언어처럼 일관성 강제가 필요 하다.
또한 Go의 Goroutines + Channels 는 AI 에이전트 오케스트레이션 의 좋은 모델이다.
- 각 에이전트 = goroutine
- 에이전트 간 통신 = channel
- supervisor 패턴 = errgroup
이는 1986년 Erlang의 actor model과 같은 설계 원리이며, "분산·동시성 설계 원리는 시대를 넘어 일관된다" 는 강의 핵심 명제와 정합한다.
마지막으로 Go의 클라우드 인프라 점유 는 "좋은 언어 + 좋은 시점 = 시대의 언어" 를 증명한다. 2009년 멀티코어·클라우드 전환기에 기록된 Go는 그 흐름을 그대로 박았다. AI 시대에도 같은 패턴이 박힐 것이다 — Mojo가 그 후보다.
출처
- Go (programming language) - Wikipedia
- The Go Programming Language and Environment - CACM
- Go: A Documentary - golang.design
- The first Go program - Go Blog
그룹 시리즈
→ synthesis/group-g6 (시대 그룹 종합 카드)