0% menganggap dokumen ini bermanfaat (0 suara)
10 tayangan

Go Programming Exploration

Diunggah oleh

Aldo Julius
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
10 tayangan

Go Programming Exploration

Diunggah oleh

Aldo Julius
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 9

LAPORAN PRAKTIKUM

SISTEM TERDISTRIBUSI

Go Programming Language Exploration

Ronaldo Julius Siregar


13322030
D3 Teknologi Komputer

INSTITUT TEKNOLOGI DEL


FAKULTAS VOKASI

Laporan Praktikum Sistem Terdistribusi 1


Go Language Programming
Pengenalan sederhana Go
❖ Sejarah
Bahasa Go pertama sekali di rencanakan oleh Robert Griesemer, Rob Pike, dan Ken
Thompson pada tanggal 21 September 2007. Rencana itu dikembangkan hanya dalam
beberapa hari saja dan sudah menjadi suatu inisiatif konkret dengan gagasan yang jelas
tentang langkah-langkah yang akan diambil. Meskipun mereka hanya bekerja paruh waktu,
desain bahasa baru tersebut terus berlangsung secara paralel dengan pekerjaan mereka yang
lain. Ken Thompson memulai pengembangan kompiler pada Januari 2008 untuk
mengeksplorasi ide-ide, menghasilkan output berupa kode C. Pada pertengahan tahun
tersebut, proyek bahasa baru itu menjadi pekerjaan penuh waktu dan mencapai tingkat
kematangan yang memungkinkan pembuatan kompiler produksi. Pada bulan Mei 2008, Ian
Taylor secara mandiri memulai pengembangan front end GCC untuk bahasa baru ini, sesuai
dengan spesifikasi rancangan. Russ Cox bergabung pada akhir tahun 2008 dan berkontribusi
untuk mengubah prototipe menjadi kenyataan dengan mengembangkan bahasa dan
perpustakaannya. Go kemudian diumumkan sebagai proyek sumber terbuka pada 10
November 2009. Komunitas secara aktif berpartisipasi dengan memberikan ide, berdiskusi,
dan menyumbangkan kode. Saat ini, jutaan programmer Go, atau yang dikenal sebagai
"gophers," tersebar di seluruh dunia, dan jumlah mereka terus bertambah setiap hari.
Kesuksesan Go telah melebihi harapan awal dari para pengembangnya.

❖ Tujuan
Pada 2007, ketika Go didirikan, dunia pemrograman didominasi oleh C++ dan Java.
Perangkat lunak ditulis dengan kompleksitas tinggi, GitHub belum ada, multiprosesor belum
umum, dan sedikit IDE gratis tersedia. Pengembang merasa frustrasi dengan kerumitan
pembangunan proyek besar dan kekurangan dukungan untuk pemrograman multiprosesor. Go
muncul sebagai respons terhadap masalah ini. Pengembangnya mempertimbangkan
perkembangan teknologi masa depan, seperti CPU multicore, yang menuntut dukungan
konkurensi dan manajemen memori otomatis. Go dirancang untuk mempermudah
pemrograman dengan fitur-fitur seperti konkurensi yang terintegrasi dan manajemen memori
otomatis. Tujuannya adalah membantu pengembang dengan perkakas, otomatisasi tugas-
tugas rutin, dan mengatasi hambatan dalam pengembangan basis kode besar.

Laporan Praktikum Sistem Terdistribusi 2


Laporan Praktikum Sistem Terdistribusi 3
Berikut adalah beberapa role yang harus di pelajari jika ingin belajar Bahasa golang dari basic dan
beberapa metode yang digunakan untuk belajar. Go juga menawarkan penanganan kesalahan yang jelas
dengan pendekatan nilai-nilai yang bernilai `error`, mengurangi kebutuhan untuk mengelola
pengecualian. Manajemen memori otomatis melalui garbage collection mempermudah pengelolaan
alokasi memori, dan paket standar yang kuat menyediakan dukungan untuk tugas-tugas umum seperti
pengelolaan string, operasi input/output, dan pengembangan web.

Pada Bahasa pemrograman ini dijelasakan beberapa fungsi:


`package main`: Setiap file Go dimulai dengan deklarasi package. Package `main` adalah special karena
menandakan bahwa ini adalah sebuah executable program, bukan sebuah library. Setiap program Go
harus dimulai dengan package `main`.

Laporan Praktikum Sistem Terdistribusi 4


`import "fmt"`: Ini adalah pernyataan untuk mengimpor package `fmt` yang disediakan oleh Go.
Package `fmt` digunakan untuk berinteraksi dengan input/output dalam program Go. Dalam kasus ini,
kita akan menggunakan `fmt.Println` untuk mencetak output ke konsol.
`func main() { ... }`: Ini adalah fungsi utama dalam program Anda. Setiap program Go harus memiliki
sebuah fungsi `main` yang akan dieksekusi pertama kali saat program dijalankan. Semua kode program
akan dieksekusi di dalam fungsi `main`.
fmt.Println("Hello, Ronaldo Julius")`: Ini adalah panggilan ke fungsi `Println` yang disediakan oleh
package `fmt`. Fungsi `Println` digunakan untuk mencetak nilai ke output (biasanya konsol) dengan
diakhiri dengan newline. Dalam contoh ini, kita mencetak pesan "Hello, Ronaldo Julius".
Fungsi Golang
• Membuat berbagai aplikasi
• Menulis kode yang bersih, dapat dipelihara, dan efesien.
• Membuat dan memelihara dokumentasi aplikasi software
• Membuat dan mengelola rangkaian pengujian otomatis
• Debugging dan memecahkan masalah software
• Mengembangkan aplikasi perangkat lunak yang dapat diskalakan dan berkinerja tinggi
• Memelihara aplikasi diarea produksi
Keunggulan Golang:
• Cepat
• Mudah dipelajari
• Punya banyak dukungan
• Banyak dipakai Perusahaan
Kekurangan Golang:
• Memerlukan banyak waktu untuk melakukan tugas
• Tergolong Bahasa pemograman baru
• Tidak mendukung generic function(function yang bekerja diberbagai tipe data berbeda, kode
yang sebelumnya pernah dipakai bisa digunakan kembali).
Contoh penggunaan Golang seperti Uber, Slack, Dropbox, dan Riot Games.
Jadi, keseluruhan program ini mencetak pesan "Hello, Ronaldo” ke konsol saat dijalankan.
Golang, adalah bahasa pemrograman yang menonjol dengan sintaksis yang bersih dan sederhana, mirip
dengan C, membuatnya mudah dipahami oleh pengembang dari berbagai latar belakang. Salah satu
keunggulan Go adalah dukungannya terhadap konkurensi dan paralelisme melalui goroutine, unit
konkurensi yang ringan, yang memungkinkan pengembang untuk menulis kode yang efisien dan
konkuren dengan mudah.

Laporan Praktikum Sistem Terdistribusi 5


Program yang Anda berikan adalah contoh sederhana penggunaan variabel dalam bahasa pemrograman
Go. Dalam program ini, kita memiliki beberapa bagian penting yang mencakup deklarasi package,
import package, deklarasi variabel, dan fungsi utama.
Pertama, deklarasi `package main` menandakan bahwa file ini adalah bagian dari package `main`, yang
menunjukkan bahwa ini adalah sebuah executable program. Kemudian, kita mengimpor package `fmt`
dengan pernyataan `import "fmt"`. Package `fmt` digunakan di sini untuk mencetak output ke konsol.
Selanjutnya, kita mendeklarasikan dua variabel `i` dan `j` sebagai integer dengan nilai masing-masing
1 dan 2 menggunakan `var i, j int = 1, 2`. Setelah itu, di dalam fungsi `main()`, kita mendeklarasikan
tiga variabel lagi, `c`, `python`, dan `java`, tanpa menyebutkan tipe datanya secara eksplisit. Variabel-
variabel ini diberi nilai berturut-turut `true`, `false`, dan `"no!"`.
Terakhir, kita menggunakan fungsi `fmt.Println()` untuk mencetak nilai dari variabel `i`, `j`, `c`,
`python`, dan `java` secara berurutan ke konsol. Dengan demikian, program ini akan mencetak nilai
variabel-variabel tersebut ke konsol saat dijalankan.

Laporan Praktikum Sistem Terdistribusi 6


Program yang Anda berikan adalah contoh penggunaan variabel dengan tipe data yang berbeda-beda
dalam bahasa pemrograman Go. Mari kita bahas setiap bagian dari kode tersebut dalam bentuk paragraf:
Deklarasi `package main` menandakan bahwa file ini adalah bagian dari package `main`, yang
menunjukkan bahwa ini adalah sebuah executable program. Selanjutnya, kita melakukan import dua
package, `fmt` dan `math/cmplx`, yang masing-masing digunakan untuk format output dan operasi
kompleksitas matematika.
Kemudian, kita mendeklarasikan tiga variabel dalam satu blok menggunakan `var` keyword. Variabel
`ToBe` dideklarasikan sebagai boolean dengan nilai awal `false`, `MaxInt` dideklarasikan sebagai
integer tanpa tanda 64-bit dengan nilai maksimum, dan `z` dideklarasikan sebagai kompleks dengan
tipe `complex128` yang diinisialisasi dengan akar kuadrat dari bilangan kompleks -5 + 12i
menggunakan fungsi `cmplx.Sqrt()`.
Di dalam fungsi `main()`, kita menggunakan fungsi `fmt.Printf()` untuk mencetak tipe dan nilai dari
masing-masing variabel. `%T` digunakan untuk mencetak tipe variabel, sedangkan `%v` digunakan
untuk mencetak nilai variabel. Setiap pemanggilan `fmt.Printf()` akan mencetak tipe dan nilai dari
variabel `ToBe`, `MaxInt`, dan `z`.
Fitur lain yang menarik termasuk interface kosong yang memberikan fleksibilitas nilai-nilai apa pun,
metode penerima untuk menambahkan fungsionalitas tanpa perlu mengubah kode sumber asli, dan
variadic functions yang mendukung jumlah argumen yang bervariasi. Go juga menonjolkan fitur seperti
fungsi anonim, defer untuk menunda eksekusi, panic untuk menangani kesalahan kritis, recover untuk
memulihkan dari panic, dan embedding untuk memperluas tipe data tanpa duplikasi kode.
Go menawarkan kemudahan dalam penggunaan pointer, serta fitur-fitur unik seperti channel untuk
komunikasi antar goroutine dan refleksi untuk manipulasi struktur kode pada saat runtime. Dengan pola
konkurensi yang kuat, seperti fan-in, fan-out, dan worker pool, serta dukungan modul dan ekosistem

Laporan Praktikum Sistem Terdistribusi 7


yang berkembang, Go menjadi pilihan yang sangat baik untuk pengembangan perangkat lunak
berkinerja tinggi, backend sistem, mikroservis, dan berbagai jenis proyek pengembangan lainnya.

Program ini mengilustrasikan konsep konstanta, penggunaan operasi bit, dan konversi tipe dalam
bahasa pemrograman Go. Mari kita bahas lebih lanjut:
Dalam konstanta `const`, kita mendeklarasikan dua nilai konstanta, `Big` dan `Small`. `Big`
didefinisikan sebagai hasil dari pergeseran 1 bit ke kiri sebanyak 100 tempat, menciptakan angka yang
sangat besar. Sedangkan `Small` adalah hasil dari pergeseran `Big` ke kanan sebanyak 99 tempat, yang
membuatnya menjadi nilai yang lebih kecil.
Kemudian, terdapat dua fungsi, `needInt()` dan `needFloat()`, yang masing-masing menerima argumen
bertipe `int` dan `float64`. `needInt()` mengalikan argumen `x` dengan 10 dan menambahkan 1,
sementara `needFloat()` mengalikan argumen `x` dengan 0.1.
Di dalam fungsi `main()`, kita memanggil kedua fungsi tersebut dengan argumen `Small` dan `Big`.
Karena `Small` adalah nilai yang dapat direpresentasikan oleh tipe `int`, kita dapat memanggil
`needInt(Small)` tanpa masalah. Namun, ketika memanggil `needFloat()`, baik dengan argumen `Small`
maupun `Big`, kedua panggilan ini akan menghasilkan output yang sama. Hal ini karena `Small` dan
`Big` memiliki tipe yang berbeda, dan konversi tipe otomatis terjadi pada saat panggilan fungsi. Dalam
kasus ini, `Small` dan `Big` secara otomatis dikonversi menjadi `float64` sebelum diproses oleh fungsi
`needFloat()`.

Laporan Praktikum Sistem Terdistribusi 8


Jadi, program ini mencetak hasil dari panggilan `needInt(Small)`, `needFloat(Small)`, dan
`needFloat(Big)` ke konsol. Hasilnya akan menunjukkan efek pergeseran bit dan konversi tipe yang
terjadi dalam bahasa pemrograman Go

Laporan Praktikum Sistem Terdistribusi 9

Anda mungkin juga menyukai