Mengenal Golang (Go Language) dan Mengapa Harus Mempelajarinya

Kategori Artikel : IT Insight

27 October 2021

Mengenal Golang (Go Language) dan Mengapa Harus Mempelajarinya

Published in HIMIT PENS MEDIUM 

Written by Irvan Eksa Mahendra


Golang adalah bahasa pemrograman prosedural yang dibuat di Google menggunakan bahasa pemrograman C oleh Robert Griesemer, Rob Pike dan Ken Thompson pada tahun 2007 dan dirilis sebagai bahasa pemrograman open source pada tahun 2009.


Golang mulai populer sejak digunakan untuk membuat Docker pada tahun 2011. Saat ini Go-Lang mulai populer untuk pembuatan Backend API pada arsitektur Microservices serta mulai banyak teknologi baru yang dibuat menggunakan bahasa Go-Lang daripada bahasa C, seperti Kubernetes, Prometheus, CockroachDB dan lain-lain.


Mengapa Harus Belajar Golang?

Sederhana dan Mudah Dipelajari

Golang memiliki sintaks yang mirip dengan bahasa C serta mudah dipelajari. Sintaks Golang lebih sederhana dibandingkan dengan banyak bahasa pemrograman lain dan hanya memiliki serangkaian fitur minimalis untuk menyelesaikan tugas.

Sepengalaman saya, Golang sangat mudah dipelajari, bahkan Golang lebih mudah dipelajari daripada Java, .Net, Javascript, Phyton atau bahkan PHP. Environment Go mudah sekali di setup, sehingga cukup semalam saja mempelajari Golang kamu pasti akan percaya diri untuk membuat simple HTTP Server atau command-line app.

Selain itu Golang juga tidak membawa banyak konsep atau paradigma seperti Object Oriented Programming, Functional Programming, dan bahkan Golang juga tidak memiliki konsep Generic Programming.


Mendukung Garbage Collector

Golang memiliki sebuah fitur bernama Garbage Collector yang membuat kita tidak perlu lagi melakukan manajemen memori secara manual seperti yang kita lakukan di bahasa C. Seperti namanya, fitur ini bekerja untuk mengumpulkan sampah. Di sini, sampah yang dimaksud adalah memori yang sudah tidak terpakai. Fitur ini berjalan secara otomatis. Artinya, pengguna tidak perlu menghapus sampah satu per satu. Di sisi lain, pengguna kehilangan kontrol akan hal tersebut.

Garbage Collector dapat mendeteksi objek-objek mana yang masih digunakan dan mana yang tidak. Tujuannya memang untuk mengosongkan memori agar tidak terlalu penuh. Sehingga, memori yang tersedia bisa dimaksimalkan untuk hal-hal yang lebih penting.


Mendukung Concurrency Programming

Sebelum kita bahas lebih lanjut, Concurrency atau konkurensi berbeda dengan Paralell programming (multithreading dan lain sebagainya). Paralel adalah eksekusi banyak proses secara bersamaan. Sedangkan konkurensi adalah komposisi dari sebuah proses. Konkurensi merupakan struktur, sedangkan paralel adalah bagaimana proses eksekusinya berlangsung.

Concurrency memungkinkan program untuk berjalan secara asynchronous sehingga program dapat mengeksekusi banyak request dalam waktu yang bersamaan. Hal ini tidak dimiliki oleh beberapa bahasa pemrograman lain seperti misalnya PHP.

Concurrency di Golang sangat efisien, bahkan bisa dibilang superior. Yang membedakan adalah Concurrency di Golang menggunakan fitur yang dinamakan Goroutines
Goroutine merupakan salah satu bagian paling penting dalam concurrency programming di Golang. Salah satu yang membuat goroutine sangat istimewa adalah eksekusinya dijalankan di multi core processor. Kita bisa menentukan berapa banyak core yang aktif, makin banyak akan makin cepat.

Goroutine dapat saling berkomunikasi atau synchronize dengan Goroutine lain menggunakan fitur Channel yang mana akan sangat menguntungkan dalam mengatur flow sistem di dalam program, dimana Channel ini dikenal sangat efisien dan low latency.

Dari sudut pandang memori, thread pada Sistem Operasi (OS) mempunyai fixed stack size sebesar 1–2MB, sedangkan Goroutine hanya membutuhkan 2KB. Hal ini yang membuat program Golang sangat ringan dan efisien sehingga Golang sering digunakan pada pengembangan backend yang membutuhkan traffic besar seperti E-Commerce, Raid Hailing, API Server dan lain sebagainya.

Karena Goroutine sangat ringan, maka eksekusi banyak Goroutine bukan sebuah masalah. Akan tetapi jika jumlah Goroutine sangat banyak sekali (misalnya 1 juta Goroutine dijalankan pada komputer dengan RAM terbatas), maka proses akan jauh lebih cepat selesai, tetapi memori atau RAM pasti akan membengkak.

Selain itu Golang juga mempunyai Go Race detector untuk mendeteksi race condition yang mana fitur ini sangat dibutuhkan oleh developer, mungkin hal ini akan bisa dirasakan oleh kalian yang sudah pernah membuat aplikasi multithreading.


Tidak Perlu Web Framework untuk Menangani HTTP Request

Hanya dengan beberapa baris syntax saja kalian sudah bisa membuat Web tanpa harus menggunakan library tambahan di Golang.

Meskipun secara bahasa pemrograman, GoLang cukup general (multi purpose language), tapi Golang juga dibuat dengan mindset Web Modern, sehingga tools untuk membuat Web atau API sudah disediakan dan sangat powerfull, tanpa harus menggunakan library atau framework tambahan.


Strongly dan Statically Typed Language

Mekanisme ini memungkinkan error atau kesalahan yang kita buat keluar sebelum runtime berjalan, sehingga kita tidak membuang banyak waktu untuk build dan test program yang nantinya akan error. Berbeda dengan bahasa Javascript yang bersifat dynamically typed dimana sangat memungkinkan untuk dibuat secara kurang beraturan dan akan menimbulkan bug-bug kecil karena tidak adanya konsistensi kode.


Statically Linked

Fitur ini membuat program kita tidak bergantung pada library atau dependencies apapun di device yang akan kita install, kita juga tidak perlu menginstall Golang di device tersebut.


Mudah Dikelola

Golang sengaja meninggalkan banyak fitur yang hadir dalam bahasa Object-Oriented Programming (OOP). Karena semua yang ada di Golang hanya dibagi menjadi paket, ia hanya memiliki struct, bukan class. Hal itu ada tanpa library runtime terpisah. Dalam Golang juga tidak ada konsep pewarisan (Inheritance). Hal ini pada akhirnya membuat Golang lebih mudah untuk dikelola dan dimodifikasi karena tidak ada tambahan untuk membuat jalur class yang akan diwarisi. Bersamaan dengan ini, tidak ada library dinamis, anotasi, konstruktor, atau bahkan generik.


Salah Satu Bahasa Pemrograman yang Sedang Naik Daun

Terakhir, Golang menjadi bahasa pemrograman yang sedang tren atau naik daun akhir-akhir ini seiring dengan meningkatnya kebutuhan akan Golang Developer. Namun, sayangnya masih sedikit developer yang menguasai bahasa pemrograman ini.

Jika kamu ingin bisa terus bersaing di industri teknologi kedepannya tepatnya pada bidang Software Engineering, Golang adalah salah satu bahasa pemrograman yang wajib kamu kuasai.


ALAMAT

Institut Teknologi Sepuluh Nopember, Kampus, Jl. Raya ITS, Keputih, Kec. Sukolilo, Kota SBY, Jawa Timur 60111, Indonesia