Roger Wenas

1 Mei 2026 155 kali dibaca

Teknologi Bahasa Pemrograman

Go yang Membosankan dengan Sengaja

Go bukan bahasa yang membuat programmer bersemangat. Ia membuat infrastruktur yang menjaga internet tetap berjalan. Itu kompromi yang Google rancang sengaja.

Tahun 2007. Tiga engineer Google — Robert Griesemer, Rob Pike, Ken Thompson — menunggu kompilasi C++. Lama. Sangat lama. Itu menjadi titik balik percakapan: kita butuh bahasa yang lebih baik untuk infrastruktur Google.

Dua tahun kemudian, Go rilis publik. Filosofi-nya disusun di rapat-rapat awal:

  • Kompilasi cepat
  • Konkruensi sebagai built-in (goroutines + channels)
  • Tipe statis tetapi tanpa generic — sengaja, untuk simplicity
  • Tidak ada inheritance — komposisi struct
  • Garbage collection
  • Standard library yang lengkap

Dari pengamatan publik tahun 2009–2012, Go sering disebut "membosankan". Tidak ada fitur baru yang spektakuler. Tidak ada paradigma baru. Tidak ada elegant abstraction yang bisa dipuji.

Tetapi yang membosankan itu yang membuat Go bekerja.


Adopsi industri datang dari arah yang tidak diduga: container infrastructure.

Docker ditulis dalam Go (rilis 2013). Memilih Go karena: kompilasi statis ke single binary, runtime cepat, concurrency built-in untuk handle banyak container.

Kubernetes ditulis dalam Go (rilis 2014). Alasan sama: deployment ke setiap container/VM tanpa runtime dependency, throughput tinggi, mudah diatur.

Terraform, Prometheus, Etcd, CockroachDB, InfluxDB, NATS, Caddy, Traefik — daftar tools yang menjalankan infrastructure modern hampir semuanya Go.

Go bukan bahasa yang dicintai untuk fitur-nya. Ia bahasa yang dipilih untuk pekerjaan tertentu: tools sistem yang harus deploy mudah, jalan cepat, dan dipakai banyak orang dengan latar belakang berbeda-beda.


Selama 2009–2022, kritik terbesar Go: tidak ada generics.

Komunitas berdebat selama 13 tahun. Setiap proposal generic ditolak. Tim Go inti khawatir generic akan membuat Go kompleks seperti C++. "Simplicity is a feature."

Tahun 2022, Go 1.18 akhirnya menambahkan generics. Tetapi dengan syntax yang berbeda dari C++/Java/TypeScript — pakai bracket [T any] bukan <T>. Implementasi konservatif, tanpa specialization runtime, tanpa method generic, tanpa variance.

Komunitas: "Akhirnya." Tim Go: "Cukup ini saja."

Itu cerita Go di pendek. Setiap fitur baru muncul setelah debat panjang, dengan implementasi yang sengaja minimal.


Yang Go pelajari dari kesalahan bahasa lain:

Tidak ada compile-time abstraction yang berlebihan. C++ template dan Rust generic powerful tapi sulit di-debug. Go memilih duck-typing via interface — kalau sebuah type punya method yang dibutuhkan, ia memenuhi interface. Tidak ada deklarasi explicit "implements".

Goroutines lebih ringan dari thread OS. 4–8 KB initial stack, bukan MB. Anda bisa spawn jutaan goroutines tanpa kehabisan memori. Channel sebagai cara komunikasi yang lebih sederhana dari mutex.

Single binary deployment. Kompilasi Go menghasilkan satu executable yang berisi runtime, GC, dan kode aplikasi. Tidak butuh JVM, tidak butuh interpreter. Drop di server, jalankan. Itu kemudahan deployment yang membuat DevOps mencintai Go.

Tooling yang konsisten. go fmt memformat semua kode dengan style sama. go test menjalankan unit test. go vet menemukan bug umum. go mod mengelola dependency. Tidak perlu setup tooling externals.


Yang Go tidak punya, dan tidak akan punya:

  • Pattern matching
  • Algebraic data types proper
  • Macro
  • Borrow checker / linear types
  • Complex generic constraints

Itu bukan kekurangan, itu pilihan.


Tahun 2026, Go di tempat yang stabil: bahasa default untuk infrastructure dan microservices. Adopsi-nya tidak meledak; juga tidak surut. Versi 1.24 di awal tahun ini menambahkan beberapa improvement minor di GC dan toolchain.

AWS, Google, Cloudflare, Uber, Twitch, SoundCloud — semua punya Go di production critical path mereka. Bukan untuk semua, tetapi untuk subset yang butuh: tools sistem, gateway, scheduler, monitoring.


Go tidak akan menggantikan Python untuk data science. Tidak akan menggantikan Rust untuk systems-level. Tidak akan menggantikan TypeScript untuk web frontend.

Tapi untuk satu kategori — server-side infrastructure tools yang harus dipakai banyak orang dan deploy mudah — Go adalah pilihan yang masuk akal hampir setiap kali.

Itu kemenangan yang sederhana, dan itu yang Google ingin sejak rapat di 2007. Bahasa yang membosankan dengan sengaja, dan dengan demikian bisa dipercaya.

Tulisan terkait

Mungkin terkait

Berdasarkan kemiripan isi tulisan.