Go — 멀티코어 시대의 단순함을 박은 언어
Entity (인물·조직)lectureverified2026-05-09

Go — 멀티코어 시대의 단순함을 박은 언어

#vch#lecture-intro#A-language#g6

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 + ChannelsAI 에이전트 오케스트레이션 의 좋은 모델이다.

  • 각 에이전트 = goroutine
  • 에이전트 간 통신 = channel
  • supervisor 패턴 = errgroup

이는 1986년 Erlang의 actor model과 같은 설계 원리이며, "분산·동시성 설계 원리는 시대를 넘어 일관된다" 는 강의 핵심 명제와 정합한다.

마지막으로 Go의 클라우드 인프라 점유"좋은 언어 + 좋은 시점 = 시대의 언어" 를 증명한다. 2009년 멀티코어·클라우드 전환기에 기록된 Go는 그 흐름을 그대로 박았다. AI 시대에도 같은 패턴이 박힐 것이다 — Mojo가 그 후보다.

출처

그룹 시리즈

synthesis/group-g6 (시대 그룹 종합 카드)