Go adalah bahasa pemrograman open source yang dikompilasi dan dirancang untuk membangun perangkat lunak yang sederhana, cepat, dan andal. Topik ini memperkenalkan asal-usul Go, alasan munculnya bahasa ini, dan bidang pemakaian utamanya pada masa kini. Setelah selesai membaca, kedudukan Go di antara bahasa pemrograman lain dapat dinyatakan dengan tepat, dan keputusan kapan Go layak dipilih menjadi lebih mudah diambil.
Sejarah singkat Go#
Go mulai dirancang pada 2007 di Google oleh tiga insinyurnya, yaitu Robert Griesemer, Rob Pike, dan Ken Thompson. Motivasi awalnya bersifat teknis, yakni kesulitan rekayasa perangkat lunak pada skala Google. Kesulitan tersebut meliputi basis kode raksasa, waktu build yang berlangsung lama, dan kompleksitas bahasa yang dipakai ketika itu. Go dirancang sebagai jawaban atas tiga hal tersebut, yaitu sintaks yang kecil, proses kompilasi yang cepat, dan pengelolaan proyek besar yang lebih praktis.
Pada November 2009, Go diumumkan sebagai proyek open source dengan lisensi BSD, sehingga siapa pun dapat membaca, menggunakan, dan mengembangkannya. Versi 1.0 dirilis pada 2012 bersama janji kompatibilitas yang terkenal, yaitu program yang ditulis untuk Go 1 tetap dikompilasi dan berperilaku sama pada semua versi Go 1 berikutnya. Janji itu menjadikan kode Go tahan lama, karena pembaruan alat tidak pernah memaksa penulisan ulang. Evolusi bahasa tetap berlangsung. Salah satu contohnya adalah dukungan generics, yakni fungsi dan tipe dengan parameter tipe, yang hadir pada Go 1.18 tahun 2022. Garis waktu berikut meringkas tonggak tersebut.
Bidang pemakaian utama#
Go paling banyak digunakan pada tiga bidang yang saling menyambung. Bidang pertama adalah layanan backend, yaitu program di sisi server yang menerima dan menjawab permintaan, mulai dari API hingga layanan cloud (komputasi awan). Bidang kedua adalah perangkat command line (CLI), yaitu program yang dijalankan dari terminal. Bidang ketiga adalah perangkat lunak infrastruktur, dan buktinya mudah ditemukan. Docker dan Kubernetes, dua komponen inti ekosistem cloud modern, ditulis dengan Go.
Pemilihan tiga bidang tersebut mengikuti karakter Go. Biner statis (static binary), yaitu berkas program tunggal yang berdiri sendiri, membuat distribusi menjadi sederhana, sehingga perangkat CLI buatan Go cukup disalin ke mesin lain untuk digunakan. Waktu mulai yang singkat dan dukungan konkurensi (concurrency) bawaan membuat layanan server mampu melayani banyak permintaan sekaligus. Sebaliknya, pada bidang seperti aplikasi desktop berantarmuka grafis kaya atau sistem benam (embedded) dengan sumber daya sangat terbatas, Go jarang menjadi pilihan utama dan bahasa lain lazim digunakan.
Sekilas bentuk program Go#
Cara paling singkat mengenal Go adalah membaca program terkecilnya. Program berikut bertugas mencetak satu baris teks ke layar, dan seluruhnya hanya terdiri atas beberapa baris kode. Simpan berkas ini sebagai halo.go, lalu jalankan dengan go run.
package main
import "fmt"
func main() {
fmt.Println("Halo, dunia!")
}Halo, dunia!Tiga bagian pada program itu muncul di hampir setiap program Go. Baris package main menyatakan bahwa berkas ini milik paket main, yaitu paket yang dapat dijalankan sebagai program. Baris import "fmt" memuat paket fmt dari pustaka standar (standard library), yaitu kumpulan paket resmi yang menyertai Go. Paket fmt inilah yang menyediakan pencetakan terformat. Baris func main mendefinisikan fungsi main, yang menjadi pintu masuk eksekusi setiap program Go. Perintah go run mengompilasi berkas itu lalu langsung menjalankannya, sehingga keluaran tampil tanpa langkah tambahan.
Kesalahan umum#
- Menganggap Go membutuhkan mesin virtual atau penafsir (interpreter) yang dipasang terpisah. Go dikompilasi langsung menjadi biner, dan runtime-nya, yakni komponen pengelola eksekusi program, ikut menyatu di dalam biner tersebut. Istilah runtime memang melekat pada Go, tetapi komponennya bukan program terpisah yang harus dipasang.
- Menganggap Go hanya untuk infrastruktur perusahaan. Go juga praktis untuk utilitas CLI kecil dan program harian, seperti contoh pada topik ini. Sintaksnya yang kecil justru menempatkan Go dekat dengan kebutuhan sederhana.
- Mengira Go adalah bahasa skrip karena penulisannya ringkas. Go adalah bahasa bertipe statis, yaitu tipe setiap nilai diperiksa saat kompilasi, sehingga kesalahan tipe tertangkap sebelum program berjalan.
Ringkasan#
- Go dirancang sejak 2007 di Google untuk menyelesaikan masalah rekayasa perangkat lunak berskala besar, lalu dirilis sebagai proyek open source pada 2009.
- Janji kompatibilitas Go 1 menjaga kode lama tetap dapat dikompilasi, sedangkan evolusi bahasa berlanjut, misalnya generics pada Go 1.18.
- Bidang pemakaian utamanya adalah layanan backend, perangkat CLI, dan perangkat lunak infrastruktur seperti Docker dan Kubernetes.
- Program Go terdiri atas deklarasi paket, impor pustaka standar, dan fungsi main sebagai pintu masuk, serta dapat diuji dengan go run.
Referensi#
- Go Documentation — Go — Beranda dokumentasi resmi yang merangkum spesifikasi, tur bahasa, dan pustaka standar.
- Frequently Asked Questions (FAQ) — Go — Tujuan desain Go yang dijawab langsung oleh perancangnya.
- Go at Google: Language Design in the Service of Software Engineering — Rob Pike (SPLASH 2012) — Konteks dan alasan lahirnya Go di lingkungan Google.
- Go 1 Release Notes — Go — Rilis Go 1 pada 2012 beserta janji kompatibilitasnya.
- Go 1.18 Release Notes — Go — Rilis yang membawa dukungan generics ke Go.