Topik ini menuntun langkah demi langkah menjalankan program Carbon pertama tanpa memasang apa pun di komputer. Alurnya menggunakan Carbon Explorer yang berjalan di layanan Compiler Explorer, mulai dari membuka situs, memilih bahasa Carbon, menempelkan program, hingga membaca panel keluaran (output). Seluruh keluaran program pada topik ini diperoleh dari eksekusi nyata melalui layanan yang sama, sehingga hasilnya dapat direproduksi persis.
Carbon Explorer di Compiler Explorer#
Carbon Explorer adalah cara resmi proyek untuk mencoba Carbon hari ini. README proyek menunjuk compiler-explorer.com sebagai tempat mencoba keadaan terkini bahasa ini langsung dari peramban web (browser). Compiler Explorer sendiri adalah layanan yang akrab bagi komunitas C++ untuk berbagi potongan kode yang dapat dieksekusi, dan layanan tersebut menyediakan Carbon sebagai salah satu bahasanya. Karena seluruh alur kerjanya berada di peramban, tidak ada pemasangan, tidak ada konfigurasi, dan setiap contoh dapat dicoba ulang kapan saja.
Kompilator yang dipakai bernama Explorer (trunk), yaitu versi pengembangan terkini dari Carbon Explorer. Nama trunk menandakan bahwa yang dijalankan adalah kondisi terbaru pengembangan proyek, sehingga perilakunya dapat berubah mengikuti keputusan desain. Pilihan ini sekaligus membuat layanan tersebut cocok sebagai ruang latihan, karena pesan error yang muncul mencerminkan keadaan bahasa yang paling mutakhir.
Alur berbasis peramban ini juga paling cocok untuk sebuah bahasa eksperimental. README menyebut rilis toolchain untuk diunduh masih sangat eksperimental dan baru tersedia pada sebagian kecil platform, sehingga pemasangan lokal justru menambah beban tanpa membawa keuntungan bagi pemula. Melalui Compiler Explorer, seluruh pembaca menjalankan versi yang sama di tempat yang sama, dan hasil eksekusi pada topik ini dapat dibandingkan langsung dengan yang muncul pada layar masing-masing.
Langkah menjalankan program pertama#
Alur lengkapnya terdiri atas lima langkah berikut.
- Buka https://compiler-explorer.com di peramban.
- Pada panel editor, pilih Carbon dari daftar bahasa.
- Pastikan kompiler yang terpilih adalah Explorer (trunk).
- Tempel program berikut pada panel editor, lalu tunggu eksekusinya selesai.
- Baca hasilnya pada panel keluaran di bawah panel editor.
Lima langkah di atas tidak memerlukan tombol untuk mulai menjalankan program. Compiler Explorer mengeksekusi ulang program secara otomatis sesaat setelah isinya berubah, sehingga program yang ditempel langsung dijalankan dan panel keluarannya terisi tanpa langkah tambahan. Apabila teksnya kemudian disunting, panel keluaran ikut diperbarui mengikuti versi terbarunya.
Program yang ditempel adalah program minimal yang sudah lengkap, yaitu deklarasi package, fungsi Main, satu pemanggilan Print, dan pernyataan kembalian.
package sample api;
fn Main() -> i32 {
Print("Halo, Carbon!");
return 0;
}Halo, Carbon!
result: 0Program di atas memuat tiga unsur yang wajib ada pada setiap program Carbon. Baris package sample api; mendeklarasikan package tempat program berada, dan Explorer menolak berkas yang tidak memuat deklarasi tersebut. Fungsi Main dideklarasikan dengan kata kunci fn beserta tipe kembalian eksplisit i32, yaitu tipe bilangan bulat 32 bit. Pernyataan return 0; menutup fungsi dengan kode kembalian nol, yang nanti terlihat pada panel keluaran.
Membaca isi panel keluaran#
Panel keluaran menampilkan setiap potongan keluaran program pada baris tersendiri. Fungsi Print pada Carbon tidak menyisipkan baris baru, tetapi panel tetap menampilkan hasil setiap pemanggilan sebagai baris yang terpisah. Program berikut memanggil Print tiga kali untuk menguraikan 76 menit menjadi jam dan sisa menit.
package sample api;
fn Main() -> i32 {
var total_menit: i32 = 76;
Print("Total menit: {0}", total_menit);
Print("Jam: {0}", total_menit / 60);
Print("Sisa menit: {0}", total_menit % 60);
return 0;
}Total menit: 76
Jam: 1
Sisa menit: 16
result: 0Fungsi Print dapat dipanggil dengan satu argumen berupa teks, atau dengan dua argumen, yaitu teks format dan satu nilai yang menggantikan penanda {0} pada teks tersebut. Operator pembagian / dan sisa bagi % pada i32 menghasilkan 1 dan 16 untuk nilai 76, sesuai keluarannya. Baris result: 0 yang menutup panel bukan bagian dari program, melainkan tambahan Carbon Explorer yang selalu berisi kode kembalian dari fungsi Main.
Hubungan baris result: dengan nilai kembalian dapat dibuktikan dengan mengembalikan nilai lain, misalnya 7.
package sample api;
fn Main() -> i32 {
Print("Halo!");
return 7;
}Halo!
result: 7Nilai setelah result: berubah menjadi 7, persis mengikuti nilai kembalian Main. Selama eksperimen, baris ini berfungsi sebagai penanda bahwa eksekusi berjalan sampai selesai. Nilainya sekaligus memberi umpan balik tentang kode kembalian yang benar-benar dihasilkan program.
Kesalahan umum#
Dua kesalahan yang paling sering terjadi pada kontak pertama dengan Explorer berkaitan dengan deklarasi package dan tipe kembalian Main. Keduanya ditampilkan di sini bersama pesan error aslinya agar mudah dikenali saat terjadi. Perbaikan keduanya singkat dan lokasinya ditunjukkan oleh nomor baris pada pesannya, sehingga layak dijadikan refleks ketika program menolak berjalan.
Kesalahan pertama adalah menempelkan program tanpa baris deklarasi package. Explorer menolaknya pada tahap sintaks sebelum program dijalankan, sebagaimana pesan berikut.
fn Main() -> i32 {
Print("Halo, Carbon!");
return 0;
}SYNTAX ERROR: <source>:1: syntax error, unexpected FN, expecting PACKAGEPesan error tersebut menyebut nomor baris dan token yang diharapkan, yaitu PACKAGE. Nomor baris yang disebut, yaitu 1, menunjuk baris pertama program, tempat token yang tidak diharapkan ditemui. Perbaikannya adalah menambahkan deklarasi package, misalnya package sample api;, pada baris pertama program.
Kesalahan kedua adalah mendeklarasikan Main tanpa tipe kembalian. Meskipun programnya tampak wajar, Explorer menolaknya dengan pesan yang menyebut persyaratan tersebut.
package sample api;
fn Main() {
Print("Halo, Carbon!");
}COMPILATION ERROR: <source>:3: `Main` must have an explicit return typePerbaikannya adalah menambahkan -> i32 pada deklarasi fungsi dan mengembalikan nilai dengan return 0;. Kebiasaan membaca pesan error sejak awal sangat membantu pada jalur ini, karena Explorer menuliskan penyebab dan nomor barisnya dengan rapi. Pesan yang sama juga menjadi pengingat bahwa aturan bahasanya masih terus berubah, sehingga program yang baik hari ini tetap perlu dibaca ulang ketika desainnya berubah.
Ringkasan#
- Program Carbon dijalankan hari ini di compiler-explorer.com dengan kompiler Explorer (trunk), tanpa pemasangan apa pun.
- Program wajib diawali deklarasi package dan fungsi
Maindengan tipe kembalian eksplisit yang diisi melaluireturn. - Panel keluaran menampilkan setiap potongan keluaran sebagai baris tersendiri dan selalu menutup dengan baris
result: Nberisi kode kembalianMain. - Pesan error Explorer mencantumkan nomor baris dan penyebabnya, misalnya package yang hilang atau tipe kembalian
Mainyang tidak ada.
Referensi#
- Compiler Explorer — godbolt.org — layanan tempat seluruh contoh program dan pesan error pada topik ini dieksekusi.
- Compiler Explorer untuk Carbon — godbolt.org — Tautan langsung yang membuka layanan dengan bahasa Carbon sudah terpilih.
- Carbon Language: An experimental successor to C++ — Proyek Carbon Language — README resmi yang menunjuk Compiler Explorer sebagai tempat mencoba Carbon.