Lewati ke konten

Pengenalan Rust

Rust adalah bahasa pemrograman sistem (systems programming language), yaitu jenis bahasa yang dipakai untuk pekerjaan yang sama dengan C atau C++: sistem operasi, game engine, browser, database, dan tool command line yang butuh kecepatan dan kendali penuh.

Yang membuatnya istimewa: Rust memberimu performa low-level seperti itu tanpa jebakan-jebakan klasiknya. Di C, kamu gampang sekali tanpa sengaja membaca memori yang sudah dibebaskan atau memicu data race. Di Rust, kode seperti itu biasanya bahkan tidak bisa di-compile, karena compiler sudah menghentikanmu saat build.

Rust awalnya adalah proyek pribadi Graydon Hoare, yang kemudian membawanya ke Mozilla untuk mendapat dukungan. Rust mencapai rilis stabil 1.0 pada tahun 2015. Sekarang Rust dikelola oleh Rust Foundation dan komunitas open source yang besar.

Dulu, kamu harus memilih salah satu dari dua kompromi:

  • Bahasa low-level (C, C++): cepat dan dekat dengan hardware, tapi kamu sendiri yang mengelola memori secara manual. Kesalahan kecil bisa berujung crash dan celah keamanan.
  • Bahasa high-level (Python, Java, Go): aman dan mudah, tapi bergantung pada garbage collector, yang mengorbankan sebagian performa dan membuat perilaku program kurang bisa diprediksi.

Ide besar Rust adalah pilihan ketiga: Rust menjamin keamanan memori saat compile lewat sistem bernama ownership (kepemilikan), yang akan kamu pelajari nanti di kursus ini. Tidak ada garbage collector, tidak ada free() manual. Compiler sendiri yang mencari tahu kapan sebuah memori sudah tidak dibutuhkan lagi.

Gambaran kasar posisi Rust dibandingkan bahasa yang mungkin sudah kamu kenal:

Bahasa Kecepatan Keamanan memori Garbage collector
C / C++ Cepat Manual, rawan kesalahan Tidak
Go Bagus Aman Ya
Python Lebih lambat Aman Ya
Rust Cepat Aman (dicek saat compile) Tidak

Kesimpulannya: Rust mengejar kecepatan setara C sekaligus keamanan bahasa high-level. Untuk perbandingan yang lebih detail dengan kode sungguhan, lihat Rust vs C++, Go, dan Python.

Kemungkinan besar kamu sudah menjalankan program Rust tanpa sadar:

  • Firefox: sebagian rendering engine-nya ditulis dengan Rust
  • Cloudflare & Discord: layanan backend yang sangat butuh performa
  • Kernel Linux: sekarang menerima driver yang ditulis dengan Rust
  • Tool CLI: tool cepat favorit seperti ripgrep, bat, dan fd
  • WebAssembly: Rust adalah salah satu pilihan utama untuk menjalankan kode secepat native di browser

Kamu belum perlu memahami setiap detailnya. Cukup perhatikan betapa mudahnya kode ini dibaca:

fn main() {
let name = "Rustacean";
println!("Halo, {name}!");
}

Output:

Halo, Rustacean!
▶ Coba sendiri

“Keamanan memori” terdengar abstrak, jadi ini contoh konkretnya. Misalnya kamu punya daftar berisi tiga skor, lalu kamu meminta skor yang kesepuluh, padahal skor itu tidak ada.

Di C, hal itu dibolehkan. Program diam-diam membaca apa pun yang kebetulan ada di memori setelah daftarmu. Hasilnya bisa angka acak, crash, atau celah keamanan, dan tidak ada yang memperingatkanmu.

Rust tidak membiarkannya lolos. Kalau compiler bisa melihat kesalahannya, ia menolak mem-build programnya:

fn main() {
let scores = [90, 85, 77];
println!("{}", scores[9]);
}
error: this operation will panic at runtime
--> src/main.rs:3:20
|
3 | println!("{}", scores[9]);
| ^^^^^^^^^ index out of bounds: the length is 3 but the index is 9

Pesan error dari compiler memang dalam bahasa Inggris. Artinya kira-kira: “operasi ini akan panic (berhenti dengan error) saat dijalankan”, karena indeks di luar batas: panjang array-nya 3, tapi indeksnya 9.

Dan kalau kamu tidak yakin sebuah elemen ada atau tidak, Rust memberimu cara yang sopan untuk bertanya. .get() menjawab “ini dia” atau “tidak ada apa-apa di situ” (None), alih-alih memberimu data sampah:

fn main() {
let scores = [90, 85, 77];
println!("skor pertama: {}", scores[0]);
println!("skor kesepuluh: {:?}", scores.get(9));
}

Output:

skor pertama: 90
skor kesepuluh: None
▶ Coba sendiri

Jangan pusingkan [...], .get(), atau None dulu. Kamu akan mempelajarinya dengan benar di Array dan Option. Intinya untuk sekarang: satu kelompok besar bug “membaca memori yang tidak seharusnya” akan ditangkap sebelum programmu berjalan, atau ditangani dengan aman saat program berjalan.

Jawaban jujurnya: satu-dua minggu pertama bisa bikin frustrasi. Konsep seperti ownership dan borrowing (peminjaman) memang benar-benar baru, dan compiler akan menolak kode yang menurutmu seharusnya jalan. Tapi gesekan itu sebenarnya adalah compiler yang sedang mengajarimu menulis kode yang lebih aman, dan semuanya akan terasa masuk akal lebih cepat dari dugaan kebanyakan orang.

Kursus ini dirancang untuk memperhalus kurva belajar itu: langkah-langkah kecil, contoh nyata, dan tombol Coba sendiri di setiap contoh.

Ubah program “sekilas mencicipi” di atas supaya menyapa kamu dengan namamu, lalu tambahkan baris kedua yang berbunyi Selamat datang di Rust!. Petunjuk: setiap println! mencetak satu baris, jadi kamu butuh dua.

Lihat solusi
fn main() {
let name = "Sam";
println!("Halo, {name}!");
println!("Selamat datang di Rust!");
}

Output:

Halo, Sam!
Selamat datang di Rust!
▶ Coba sendiri

Simpan kata Rust dan tahun 2015 dalam dua nama, lalu cetak kalimat Rust 1.0 dirilis pada tahun 2015. dengan memakai keduanya. Petunjuk: kamu bisa menaruh lebih dari satu {name} di dalam println! yang sama.

Lihat solusi
fn main() {
let language = "Rust";
let year = 2015;
println!("{language} 1.0 dirilis pada tahun {year}.");
}

Output:

Rust 1.0 dirilis pada tahun 2015.
▶ Coba sendiri
  • Rust adalah bahasa sistem yang cepat dan aman: kecepatan setara C, tanpa garbage collector.
  • Rust mencegah bug memori saat compile lewat ownership.
  • Rust dipakai di browser, kernel, layanan cloud, tool CLI, dan WebAssembly.
  • Kurva belajarnya memang ada, tapi singkat. Compiler ada di pihakmu.

Berikutnya: menginstal Rust dan menjalankan program pertamamu di komputer sendiri.

Kuis singkat

1. Bagaimana Rust mencapai keamanan memori tanpa garbage collector?

2. Menurut tabel perbandingan, apa kesamaan Rust dan Go?

3. Developer Rust menyebut diri mereka apa?

Skor: 0 / 3

  • Introduction — The Rust Book (bahasa Inggris): untuk siapa buku resmi ini ditulis dan bagaimana isinya disusun. Ini teman belajar gratis terbaik untuk kursus ini.
  • rust-lang.org (bahasa Inggris): halaman resmi Rust, berisi alasan “Why Rust?” (performa, keandalan, produktivitas) dan cerita dari perusahaan yang memakainya.
  • Learn Rust (bahasa Inggris): daftar resmi sumber belajar, termasuk Rust by Example dan latihan Rustlings.
  • Announcing Rust 1.0 — Rust Blog (bahasa Inggris): tulisan tahun 2015 yang menandai Rust sebagai stabil, dan apa arti janji “stabilitas” itu bagi kodemu.
  • Rust Foundation (bahasa Inggris): organisasi nirlaba yang mendukung proyek Rust dan para maintainer-nya.