Alur Kerja Explorer

Menjalankan program Carbon pertama melalui Carbon Explorer di Compiler Explorer.

Daftar isi

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.

  1. Buka https://compiler-explorer.com di peramban.
  2. Pada panel editor, pilih Carbon dari daftar bahasa.
  3. Pastikan kompiler yang terpilih adalah Explorer (trunk).
  4. Tempel program berikut pada panel editor, lalu tunggu eksekusinya selesai.
  5. 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.

carbon halo.carbon
package sample api;

fn Main() -> i32 {
  Print("Halo, Carbon!");
  return 0;
}
text Keluaran
Halo, Carbon!
result: 0

Program 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.

carbon konversi-menit.carbon
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;
}
text Keluaran
Total menit: 76
Jam: 1
Sisa menit: 16
result: 0

Fungsi 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.

carbon kode-kembalian.carbon
package sample api;

fn Main() -> i32 {
  Print("Halo!");
  return 7;
}
text Keluaran
Halo!
result: 7

Nilai 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.

carbon Contoh: program tanpa deklarasi package
fn Main() -> i32 {
  Print("Halo, Carbon!");
  return 0;
}
text Keluaran
SYNTAX ERROR: <source>:1: syntax error, unexpected FN, expecting PACKAGE

Pesan 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.

carbon Contoh: Main tanpa tipe kembalian
package sample api;

fn Main() {
  Print("Halo, Carbon!");
}
text Keluaran
COMPILATION ERROR: <source>:3: `Main` must have an explicit return type

Perbaikannya 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 Main dengan tipe kembalian eksplisit yang diisi melalui return.
  • Panel keluaran menampilkan setiap potongan keluaran sebagai baris tersendiri dan selalu menutup dengan baris result: N berisi kode kembalian Main.
  • Pesan error Explorer mencantumkan nomor baris dan penyebabnya, misalnya package yang hilang atau tipe kembalian Main yang tidak ada.

Referensi#