kodingup.camp

Beranda/JavaScript Mastery: Fundamentals

Bahasa Pemrograman

Modul 4 dari 165 menit bacaProgramming Language

Isi modul

    Kenapa ini penting

    CPU hanya mengerti machine code, yaitu deretan angka biner seperti 10110000 01100001. Menulis program langsung dalam bentuk itu hampir mustahil bagi manusia. Bahasa pemrograman adalah jembatan: kamu menulis instruksi dalam bentuk yang mendekati bahasa manusia, lalu alat penerjemah mengubahnya menjadi sesuatu yang bisa dijalankan komputer. Memahami cara penerjemahan ini membantumu mengerti kenapa ada error yang muncul sebelum program jalan dan ada yang baru muncul di tengah jalan, serta kenapa JavaScript bisa jalan di browser sekaligus di server.

    Konsep inti

    Dari bahasa manusia ke bahasa mesin

    Bahasa pemrograman bisa dibayangkan sebagai tangga:

    Tingkat Contoh Ciri
    Machine code 10110000 01100001 Langsung dimengerti CPU, tidak ramah manusia
    Assembly MOV AL, 61h Singkatan instruksi CPU, masih sangat teknis
    Bahasa tingkat tinggi JavaScript, Python, Java, C, Go Mirip bahasa Inggris, fokus ke logika masalah

    Semakin tinggi tingkatnya, semakin mudah dibaca manusia, dan semakin banyak pekerjaan teknis (mengatur memori, register CPU) yang diurus otomatis.

    Setiap bahasa punya syntax (aturan penulisan, seperti tata bahasa) dan semantics (makna dari tulisan itu). Kalimat console.log("Halo") benar secara syntax. Kalau kamu menulis console.log("Halo" tanpa kurung tutup, itu syntax error: komputer bahkan tidak bisa memahami kalimatmu.

    Compiled vs interpreted

    Ada dua cara besar menerjemahkan kode:

    Aspek Compiled Interpreted
    Kapan diterjemahkan Sebelum dijalankan Saat dijalankan
    Kecepatan eksekusi Umumnya lebih cepat Umumnya lebih lambat
    Siklus coba-coba Harus compile ulang setiap ada perubahan Langsung jalankan
    Distribusi File program per sistem operasi Butuh interpreter di mesin pengguna

    Kenyataannya, batas keduanya kini kabur. JavaScript modern memakai JIT (Just-In-Time) compilation. Mesin JavaScript seperti V8 (dipakai Chrome dan Node.js) mulai dengan menginterpretasi kode, lalu bagian kode yang sering dijalankan dikompilasi menjadi machine code saat program berjalan supaya cepat. Jadi JavaScript sering disebut "bahasa interpreted", tapi mesinnya sebenarnya juga melakukan kompilasi di belakang layar. Untuk pemula, cukup ingat: kamu menulis file .js, lalu langsung menjalankannya tanpa langkah build terpisah.

    Posisi JavaScript: di browser dan di Node.js

    JavaScript lahir tahun 1995 untuk membuat halaman web interaktif. Nama standarnya adalah ECMAScript, yang diperbarui setiap tahun (ES2015/ES6 adalah lompatan besar yang memperkenalkan let, const, dan arrow function).

    Sekarang JavaScript hidup di dua "rumah" utama:

    Browser (Chrome, Firefox, Safari, Edge) Node.js
    Mesin V8 (Chrome/Edge), SpiderMonkey (Firefox), JavaScriptCore (Safari) V8
    Kegunaan Interaksi halaman web: klik tombol, animasi, form Server, API, tool command line, script otomatisasi
    Fasilitas khusus document, window, alert, prompt fs (file), http, process, readline
    Tidak tersedia Akses bebas ke file komputer document, window, alert

    Bahasanya sama, yaitu let, if, for, function, dan seterusnya. Yang berbeda adalah lingkungan (runtime) dan fasilitas tambahan yang disediakan. Analogi: kamu bisa berbahasa Indonesia di kantor maupun di pasar. Bahasanya sama, tapi alat yang tersedia berbeda. Di kantor ada printer, di pasar ada timbangan.

    Bahasa lain yang mungkin kamu dengar: HTML (bukan bahasa pemrograman, tapi bahasa markup untuk struktur halaman), CSS (bahasa gaya tampilan), dan TypeScript (JavaScript dengan tambahan tipe data, diubah menjadi JavaScript sebelum dijalankan).

    Jenis error berdasarkan waktu

    Contoh kode

    Kode yang sama bisa jalan di browser maupun Node.js selama hanya memakai fitur bahasa inti:

    // Fitur bahasa inti: jalan di browser DAN Node.js
    const nama = "Rina";
    const tahunLahir = 2005;
    const umur = 2026 - tahunLahir;
    console.log(`${nama} berumur ${umur} tahun`);
    // → Rina berumur 21 tahun
    
    // Mengecek kita sedang di lingkungan mana
    const diBrowser = typeof window !== "undefined";
    const diNode = typeof process !== "undefined" && process.versions?.node;
    console.log(diBrowser ? "Jalan di browser" : `Jalan di Node.js versi ${diNode}`);
    // → (di Node.js) Jalan di Node.js versi 24.x.x  (angkanya mengikuti versi yang terpasang)
    

    Contoh tiga jenis error. Jangan jalankan semuanya sekaligus, coba satu per satu:

    // 1) Syntax error: kurung tutup hilang. Seluruh file GAGAL dibaca.
    // console.log("Halo"
    // → SyntaxError: missing ) after argument list
    
    // 2) Runtime error: kode valid, tapi function-nya tidak ada
    // hitungTotal();
    // → ReferenceError: hitungTotal is not defined
    
    // 3) Logic error: jalan normal tapi hasilnya salah
    const panjang = 5;
    const lebar = 3;
    const luas = panjang + lebar; // seharusnya dikali, bukan ditambah
    console.log("Luas:", luas);   // → Luas: 8  (salah, seharusnya 15)
    

    Kesalahan umum

    1. Mengira JavaScript sama dengan Java. Namanya mirip karena strategi pemasaran tahun 1995, tapi keduanya bahasa yang sangat berbeda.
    2. Memakai document atau alert di Node.js. Itu fasilitas browser. Di Node.js hasilnya ReferenceError: document is not defined.
    3. Menganggap HTML adalah bahasa pemrograman. HTML tidak punya logika seperti percabangan atau perulangan. HTML adalah bahasa markup untuk struktur konten.
    4. Panik melihat error. Pesan error adalah petunjuk, bukan hukuman. Baca jenis error-nya (SyntaxError, ReferenceError, TypeError) dan nomor barisnya.

    Latihan

    1. Mudah, Kelompokkan bahasa berikut ke "umumnya compiled" atau "umumnya interpreted/JIT": C, JavaScript, Go, Python, Rust.
    2. Sedang, Tentukan jenis error (syntax, runtime, logic) dari tiga kasus ini: (a) let x = ; (b) program menghitung rata-rata nilai tapi membagi dengan angka yang salah (c) memanggil cetakLaporan() yang belum pernah dibuat.
    3. Menantang, Tulis kode yang mencetak "Halo dari browser" kalau dijalankan di browser dan "Halo dari Node.js" kalau dijalankan di Node.js.
    Lihat solusi

    1. Umumnya compiled: C, Go, Rust. Umumnya interpreted/JIT: JavaScript, Python.

    2. (a) Syntax error, karena nilai setelah = kosong. (b) Logic error, karena program jalan tapi hasilnya salah. (c) Runtime error (ReferenceError), karena function tidak ditemukan saat dijalankan.

    3.

    if (typeof window !== "undefined") {
      console.log("Halo dari browser");
    } else if (typeof process !== "undefined") {
      console.log("Halo dari Node.js");
    }
    // → (di Node.js) Halo dari Node.js
    

    Ringkasan

    Kuis pemahaman

    Pilih satu jawaban per soal. Penjelasan muncul setelah kamu menjawab.