Belajar Golang - Sejarah, Latar Belakang & Mengapa Membutuhkan Golang
Episode 1 of 19

Belajar Golang - Sejarah, Latar Belakang & Mengapa Membutuhkan Golang

Episode ini mengupas kelahiran Go di Google, filosofi desain yang mengutamakan kesederhanaan dan concurrency, serta perbandingannya dengan Java, C++, Python, dan Rust. Kalian juga belajar kapan Go menjadi pilihan tepat untuk backend dan cloud-native.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Sebelum menghafal sintaks, penting untuk memahami mengapa Go ada. Setiap bahasa lahir untuk menjawab masalah nyata, dan Go lahir dari rasa frustrasi tim Google terhadap waktu kompilasi yang lama, concurrency yang rumit, dan codebase besar yang sulit dirawat.

Episode 1 membawa kalian menelusuri sejarah Go dari 2007 hingga sekarang, filosofi desain yang menjadi fondasinya, perbandingan jujur dengan bahasa populer lain, dan kapan kalian sebaiknya memilih Go. Pemahaman konteks ini akan membuat keputusan arsitektur di episode-episode berikutnya terasa lebih masuk akal.

Asal-usul Go di Google

Kelahiran Tahun 2007

Go dirancang pada 2007 oleh Robert Griesemer, Rob Pike, dan Ken Thompson — tiga veteran dengan latar belakang Unix, Plan 9, dan distribusi sistem. Mereka mengeluh tentang kecepatan build C++ di Google, kompleksitas manajemen dependency, dan potensi bug dari fitur bahasa yang terlalu banyak.

Rilis pertama Go ke publik terjadi pada 2009, dan versi stabil 1.0 menyusul pada Maret 2012. Sejak saat itu, komitmen backward compatibility menjadi sangat kuat: kode Go 1.0 bisa dikompilasi ulang dengan Go 1.23 tanpa perubahan berarti. Cek versi toolchain kalian dengan go version.

Timeline Versi

Setiap rilis minor menghadirkan fitur signifikan. Go 1.5 memperkenalkan garbage collector ber-konkurrensi, Go 1.11 membawa module system, Go 1.18 menghadirkan generics, Go 1.21 menambahkan package slices dan maps, dan Go 1.22 memperbarui routing net/http dengan metode dan wildcard di path. Versi 1.23 menguatkan iterasi dengan fitur iter untuk range over function.

Filosofi Bahasa: Simplicity, Concurrency, dan Tooling

Kesederhanaan sebagai Fitur Utama

Go sengaja membatasi jumlah kata kunci dan fitur. Tidak ada inheritance class, tidak ada generics yang kompleks di awal, dan tidak ada exception. Tim Go percaya bahwa kode yang mudah dibaca lebih berharga daripada kode yang ekspresif tetapi sulit dimengerti.

Kode Go yang sederhana
package main
 
import "fmt"
 
func main() {
	for i := 1; i <= 3; i++ {
		fmt.Println("iterasi", i)
	}
}

Concurrency sebagai Warga Kelas Satu

Concurrency adalah inti identitas Go. Kata kunci go di depan sebuah fungsi memulai goroutine, sebuah thread ringan yang dikelola runtime, bukan oleh sistem operasi. Scheduler Go menangani jutaan goroutine dengan memori yang jauh lebih kecil dibanding thread native.

Menjalankan goroutine
package main
 
import (
	"fmt"
	"time"
)
 
func main() {
	go fmt.Println("dari goroutine")
	time.Sleep(10 * time.Millisecond)
	fmt.Println("dari main")
}

Tooling Built-in

Go membawa toolchain terpadu: go fmt untuk format otomatis, go vet untuk analisis statis, go test untuk testing, go mod untuk dependensi, dan go tool pprof untuk profiling. Tidak perlu menginstal puluhan tool terpisah.

Perbedaan dengan Bahasa Lain

Java dan C++

Dibanding Java, Go tidak punya class hierarchy dan exception, sehingga siklus build lebih cepat dan binary lebih kecil. Dibanding C++, Go menghilangkan template dan manual memory management — garbage collector mengurusnya, sementara pointer tetap tersedia untuk kontrol alokasi.

Python dan Rust

Python unggul di kecepatan pengembangan dan ekosistem data science, tetapi lambat dan bergantung interpreter di production. Rust memberi kontrol memori tanpa GC melalui ownership, tetapi kurva belajar jauh lebih curam. Go berada di tengah: mudah dipelajari seperti Python, secepat C untuk banyak workload, dan cukup aman untuk production tanpa mengorbankan produktivitas.

BahasaKecepatan EksekusiKurva BelajarManajemen MemoriConcurrency
GoCepatRendahGarbage collectorGoroutine
RustCepatTinggiOwnershipAsync
JavaSedangSedangGarbage collectorThread
PythonLambatRendahGarbage collectorGIL

Kapan Go Menjadi Pilihan Tepat

Backend, Cloud-native, dan Sistem Jaringan

Go sangat cocok untuk server-side: HTTP server, REST API, gRPC, CLI tools, dan data pipeline. Ekosistem cloud-native — Kubernetes, Docker, Terraform, Prometheus, dan Grafana — ditulis dalam Go. Dukungan satu-binary statis membuat deploy ke container menjadi trivial.

Microservices dan Sistem Terdistribusi

Untuk arsitektur microservices, Go memberikan kompromi ideal antara performa, kemudahan, dan footprint yang rendah. Compile-time type safety mengurangi bug produksi, sedangkan net/http dan standard library yang kaya mengurangi ketergantungan eksternal.

Binary statis Go
CGO_ENABLED=0 go build -o app main.go
file app

Output file app menunjukkan statically linked — binary tanpa dependency sistem. Artinya, kalian bisa menyalin file tersebut ke container distroless atau mesin tanpa runtime apa pun.

Penutup

Episode 1 menjelaskan mengapa Go ada dan posisinya di antara bahasa lain. Kalian kini memahami sejarah Go di Google, filosofi kesederhanaan dan concurrency, perbedaan dengan Java, C++, Python, dan Rust, serta kriteria kapan Go menjadi pilihan tepat untuk backend, cloud-native, dan microservices.

Inti yang harus dibawa pulang:

  • Go lahir tahun 2007 untuk mengatasi kelambatan build dan kompleksitas codebase Google.
  • Backward compatibility dijaga ketat sejak Go 1.0.
  • Filosofi utamanya: simplicity, concurrency, dan tooling built-in.
  • Goroutine adalah thread ringan yang dikelola runtime Go.
  • Binary statis membuat Go ideal untuk container dan deployment.
  • Cloud-native stack seperti Kubernetes dan Prometheus ditulis dalam Go.

Di episode 2 selanjutnya kita akan membahas konsep dasar dan arsitektur utama — runtime Go di balik layar seperti garbage collector dan scheduler goroutine, paket standar utama seperti fmt, net/http, dan context, serta bagaimana module dan go mod membentuk arsitektur project. Ini fondasi teknis sebelum kalian menulis program sungguhan di episode 3.