{"content_id":"zkrgx4ojs2","slug":"vibe-coding-programming-language-basics","locale":"id","schema_type":"TechArticle","category":"knowledge_base","category_name":"Basis Pengetahuan","title":"Vibe Coding untuk Pemula: Konsep Bahasa Pemrograman","summary":"Dalam vibe coding, memahami di mana kode dijalankan dan cara data diproses lebih berguna daripada mengetahui nama bahasanya. Anda dapat mempelajari dasar-dasar pemrograman, kriteria pemilihan bahasa, dan cakupan verifikasi kode yang dihasilkan AI.","sponsorship_disclosure":null,"affiliate_disclosure":null,"commerce_disclosure":null,"author":{"name":"injoys","url":"https://injoys.com/ko/about"},"key_points":["Pengembangan web dimulai dengan membedakan peran HTML, CSS, dan JavaScript.","TypeScript menyediakan pemeriksaan tipe sebelum eksekusi, tetapi tidak otomatis memvalidasi input eksternal.","Kepemilikan dalam Rust adalah aturan pengelolaan memori, bukan mekanisme yang mencegah semua kesalahan keamanan.","Mojo adalah bahasa yang ditujukan untuk komputasi berkinerja tinggi pada CPU dan GPU.","Kode yang dihasilkan AI harus dijalankan dan diuji untuk memastikan kesesuaiannya dengan persyaratan."],"content_markdown":"Vibe coding memerlukan pemahaman dasar untuk membedakan peran bahasa dan tempat kode dijalankan. Untuk web, JavaScript dan TypeScript menjadi titik awal. Untuk pengolahan data, pertimbangkan Python. Rust dan Mojo digunakan untuk pengembangan sistem dan komputasi berkinerja tinggi.\n\nAngka kinerja mengacu pada pengumuman Microsoft tanggal 11 Maret 2025.\n\n## Mengapa dasar-dasar bahasa diperlukan dalam vibe coding\n\nVibe coding adalah metode pengembangan yang berpusat pada permintaan dalam bahasa alami untuk membuat kode bersama AI. Permintaan diperbaiki sambil melihat hasil eksekusi program yang dihasilkan. Permintaan dalam bahasa alami pun harus diwujudkan menjadi kode yang benar-benar dapat dijalankan.\n\nDasar-dasar bahasa membantu menjelaskan fungsi yang diinginkan secara konkret. Pemahaman ini juga membantu menemukan lokasi kesalahan. Pada tahap awal, bedakan dahulu peran tiap bahasa daripada menghafal sintaks semua bahasa.\n\n- Tempat eksekusi: browser, server, ponsel, bagian internal sistem operasi\n- Masukan: nilai yang dimasukkan pengguna atau data yang diterima dari luar\n- Pemrosesan: pekerjaan yang dilakukan program, seperti perhitungan, pencarian, dan klasifikasi\n- Keluaran: tampilan di layar, pembuatan berkas, penyimpanan data\n- Kondisi kegagalan: masukan kosong, format salah, koneksi terputus\n\n## Konsep dasar yang perlu dipahami, mulai dari variabel dan tipe\n\nVariabel dan tipe merupakan dasar untuk menjelaskan data yang ditangani program. Pernyataan kondisional dan perulangan menentukan urutan pemrosesan. Fungsi mengelompokkan pekerjaan yang berkaitan agar dapat digunakan kembali.\n\n| Konsep | Definisi sederhana | Contoh saat menjelaskan fungsi |\n| --- | --- | --- |\n| Variabel | Sarana untuk memberi nama pada nilai agar dapat dirujuk | Nama untuk menyimpan kata pencarian |\n| Tipe | Aturan tentang jenis nilai dan operasi yang diizinkan | Jumlah berupa angka, judul berupa string |\n| Pernyataan kondisional | Sintaks untuk memilih tindakan berdasarkan kondisi | Menolak penyimpanan jika judul kosong |\n| Perulangan | Sintaks untuk menerapkan pekerjaan yang sama pada beberapa objek | Menampilkan setiap item dalam daftar di layar |\n| Fungsi | Kode yang dikelompokkan untuk melakukan pekerjaan tertentu | Fungsi untuk memeriksa masukan |\n| Struktur data | Cara mengorganisasi data | Daftar berurutan, nilai yang dicari berdasarkan nama |\n| Objek | Unit yang menyatukan keadaan dan perilaku yang berkaitan | Judul postingan dan fungsi penyuntingannya |\n| Penanganan pengecualian | Cara menangani kesalahan yang terjadi saat program berjalan | Pemberitahuan kesalahan ketika berkas tidak dapat dibaca |\n| API | Kesepakatan antarprogram untuk bertukar fungsi atau data | Meminta hasil pencarian dari server |\n| Dependensi | Kode atau alat eksternal yang digunakan program | Pustaka pengolahan tanggal |\n\nPemeriksaan tipe statis memeriksa penggunaan tipe sebelum program dijalankan. Bahasa bertipe dinamis juga membedakan tipe nilai. Istilah tipe dinamis bukan berarti tidak ada jenis data.\n\n## Mengapa terjadi peralihan dari bahasa mesin ke bahasa tingkat tinggi\n\nPerkembangan bahasa merupakan proses mengurangi rincian pekerjaan yang harus dituliskan manusia. Bahasa mesin adalah representasi instruksi yang dijalankan prosesor. Bahasa assembly memberi simbol yang dapat dibaca manusia pada instruksi tersebut.\n\nAssembly berkaitan erat dengan arsitektur set instruksi prosesor. Pergantian komponen tidak berarti seluruh kode harus ditulis ulang. Beban perubahan meningkat ketika berpindah ke arsitektur set instruksi yang tidak kompatibel.\n\n| Bahasa atau perkembangan | Masalah yang ingin diatasi | Konsep yang perlu diingat |\n| --- | --- | --- |\n| Bahasa mesin dan assembly | Menyampaikan pekerjaan yang harus dilakukan perangkat keras | Kaitan langsung dengan arsitektur set instruksi |\n| Fortran | Mengungkapkan perhitungan ilmiah dalam bentuk yang mendekati rumus | Perhitungan numerik dan kompiler |\n| COBOL | Mengolah data bisnis dalam format yang mudah dibaca | Ekspresi yang berpusat pada pembukuan dan pemrosesan transaksi |\n| Lisp | Perhitungan menggunakan simbol dan daftar | Riset AI awal dan ekspresi yang berpusat pada fungsi |\n| C | Menulis perangkat lunak sistem secara efisien | Kendali memori dan portabilitas |\n| SQL | Mengolah data dalam basis data relasional | Kueri yang menyatakan hasil yang diinginkan |\n| C++ | Menata program besar dan mengelola sumber daya | Kelas dan berbagai paradigma pemrograman |\n| Java | Memindahkan program antarsistem dengan lingkungan eksekusi berbeda | JVM dan bytecode |\n\nFortran muncul di IBM pada 1957. Lisp berkembang bersama riset AI pada akhir 1950-an. COBOL lahir dari upaya perancangan bersama yang dimulai pada 1959.\n\nC adalah bahasa yang berkembang bersama pengembangan Unix. Bahasa ini membantu pemindahan perangkat lunak ke jenis mesin lain. Namun, kode yang bergantung pada sistem operasi dan perangkat keras memerlukan penyesuaian tersendiri.\n\nPemrograman berorientasi objek adalah cara mengorganisasi data dan perilaku yang berkaitan ke dalam objek. C++ merupakan bahasa yang mendukung pemrograman berorientasi objek. Bukan C++ yang menciptakan konsep pemrograman berorientasi objek itu sendiri.\n\n## Perbedaan kompiler dan interpreter\n\nKompiler adalah program yang mengubah kode menjadi representasi lain. Hasil konversinya dapat berupa bahasa mesin. Hasilnya juga dapat berupa format eksekusi perantara seperti bytecode.\n\nInterpreter menafsirkan kode atau representasi perantara sambil menjalankannya. Implementasi bahasa yang sebenarnya terkadang menggabungkan kompilasi dan interpretasi. Membagi bahasa hanya menjadi bahasa terkompilasi yang cepat dan bahasa terinterpretasi yang lambat tidaklah akurat.\n\n| Konsep terkait eksekusi | Peran | Contoh umum |\n| --- | --- | --- |\n| Kompilasi sebelum eksekusi | Menghasilkan kode target sebelum program dijalankan | Pembuatan berkas eksekusi C dan Rust pada umumnya |\n| Bytecode | Format instruksi perantara yang diproses lingkungan eksekusi | Bytecode Java, bytecode CPython |\n| Interpreter | Menafsirkan kode atau instruksi perantara sambil menjalankannya | Eksekusi bytecode pada CPython |\n| Kompilasi JIT | Mengubah kode yang diperlukan menjadi bahasa mesin saat program berjalan | Berbagai JVM dan mesin JavaScript |\n| Runtime | Menyediakan fungsi yang diperlukan untuk menjalankan program | JVM, Node.js |\n\nCPython adalah implementasi Python yang banyak digunakan. CPython mengompilasi kode sumber menjadi bytecode lalu menjalankannya. Menjelaskan Python hanya sebagai bahasa yang setiap kali menerjemahkan kode sumber baris demi baris adalah keliru.\n\nJVM pada Java adalah lingkungan untuk menjalankan bytecode. Struktur ini membantu kode dijalankan pada sistem operasi yang berbeda. Kompatibilitas sebenarnya juga dipengaruhi versi JVM dan pustaka eksternal.\n\n## Apa perbedaan antarmuka web dan server?\n\nFrontend menangani tampilan dan interaksi yang dihadapi pengguna. Backend memproses permintaan di server. Basis data berperan menyimpan dan mengambil data yang diperlukan.\n\nHTML adalah bahasa markup untuk menyatakan struktur dokumen. CSS menentukan gaya dan tata letak tampilan. JavaScript mengimplementasikan evaluasi kondisi dan penanganan tindakan pengguna.\n\n| Nama | Kategori | Peran utama |\n| --- | --- | --- |\n| HTML | Bahasa markup | Struktur dokumen seperti judul, paragraf, dan kolom masukan |\n| CSS | Bahasa stylesheet | Warna, jarak, tata letak tampilan |\n| JavaScript | Bahasa pemrograman | Interaksi browser dan pemrosesan server |\n| TypeScript | Bahasa yang menambahkan sistem tipe pada JavaScript | Pemeriksaan kesalahan sebelum eksekusi dan pengelolaan kode |\n| React | Pustaka antarmuka pengguna | Membuat tampilan dari komponen yang dapat digunakan kembali |\n| Node.js | Runtime JavaScript | Menjalankan JavaScript di luar browser |\n| Next.js | Kerangka kerja berbasis React | Susunan halaman dan fungsi server aplikasi web |\n| PHP | Bahasa pemrograman | Menghasilkan respons web dinamis di server |\n| SQL | Bahasa basis data | Mengambil, menambah, mengubah, dan menghapus data |\n\nReact, Node.js, dan Next.js bukan jenis alat yang sama. Pustaka adalah kumpulan kode yang menyediakan fungsi untuk digunakan sesuai kebutuhan. Kerangka kerja juga menyediakan cara menyusun aplikasi. Runtime adalah lingkungan tempat kode dijalankan.\n\n## Perbandingan bahasa berdasarkan tujuan\n\nPilih bahasa berdasarkan hasil yang ingin dibuat dan lingkungan eksekusi yang sudah ada. Tabel berikut memberikan titik awal yang umum untuk mempertimbangkan tiap bahasa. Kemampuan suatu bahasa tidak terbatas pada pekerjaan yang tercantum dalam tabel.\n\n| Hasil yang ingin dibuat | Bahasa yang dipertimbangkan terlebih dahulu | Hal yang perlu diperiksa sebelum memilih |\n| --- | --- | --- |\n| Aplikasi web yang digunakan di browser | JavaScript dan TypeScript | Dasar HTML dan CSS serta alat penyusunan tampilan |\n| Penataan berkas dan otomatisasi pekerjaan | Python | Format berkas masukan dan lingkungan penerapan |\n| Analisis data dan pemanfaatan model AI | Python | Pustaka analisis dan model yang diperlukan |\n| Server jaringan dan alat operasional | Go | Struktur pemrosesan konkuren dan integrasi dengan sistem yang ada |\n| Sistem bisnis berbasis JVM | Java dan Kotlin | Kompatibilitas kode dan pustaka yang ada |\n| Aplikasi yang berfokus pada iOS | Swift | Alat pengembangan Apple dan fitur platform |\n| Aplikasi yang berfokus pada Android | Kotlin | Alat pengembangan Android dan struktur aplikasi yang ada |\n| Sistem yang memerlukan kendali memori | C, C++, dan Rust | Kebutuhan kinerja dan kemampuan memverifikasi keamanan |\n| Optimalisasi komputasi CPU dan GPU | Mojo | Perangkat keras yang didukung dan fungsi komputasi yang diperlukan |\n| Pengolahan data relasional | SQL | Perbedaan sintaks antarproduk basis data |\n\nLuasnya penggunaan Python juga berkaitan dengan ekosistem pustakanya. NumPy menggunakan kode terkompilasi untuk meningkatkan kecepatan. Tidak semua perhitungan yang ditulis dalam Python dijalankan hanya dengan kode Python.\n\nGo menyertakan dukungan konkurensi dalam rancangan bahasanya. Konkurensi adalah konsep menata beberapa pekerjaan agar dapat berlangsung bersama. Paralelisme adalah keadaan ketika beberapa pekerjaan benar-benar dijalankan pada saat yang sama. Menulis kode konkuren tidak otomatis mempercepat perhitungan.\n\n## Perbedaan TypeScript, Rust, dan Mojo\n\nTypeScript, Rust, dan Mojo berusaha mengatasi masalah yang berbeda. TypeScript membantu memeriksa tipe dalam kode JavaScript. Rust menerapkan aturan ketat pada pengelolaan memori. Mojo ditujukan untuk komputasi berkinerja tinggi dan pemanfaatan perangkat keras.\n\n| Dasar perbandingan | TypeScript | Rust | Mojo |\n| --- | --- | --- | --- |\n| Fokus utama | Pemeriksaan tipe dan pengelolaan kode | Keamanan memori dan kendali sistem | Komputasi berkinerja tinggi pada CPU dan GPU |\n| Penggunaan umum | Aplikasi web dan aplikasi server | Alat sistem dan komponen yang mengutamakan kinerja | Infrastruktur AI dan kernel komputasi |\n| Konsep yang perlu dipahami terlebih dahulu | JavaScript dan tipe data | Kepemilikan, peminjaman, masa hidup | Tipe, memori, komputasi paralel |\n| Hal yang perlu diperiksa secara terpisah | Masukan eksternal dan aturan bisnis | Kode unsafe dan kesalahan logika | Interoperabilitas dengan Python dan dukungan perangkat keras |\n\n### Pemeriksaan tipe pada TypeScript\n\nTypeScript menambahkan pemeriksaan tipe statis pada JavaScript. Fitur ini membantu menemukan penggunaan tipe yang salah sebelum kode dijalankan. Melalui inferensi tipe, sebagian deklarasi ditentukan secara otomatis.\n\nAnda tidak perlu menuliskan tipe setiap variabel secara langsung. Anotasi tipe dihapus dalam proses konversi ke JavaScript pada umumnya. Deklarasi tipe saja tidak menghasilkan pemeriksaan masukan saat program berjalan.\n\n### Kepemilikan dan keamanan memori pada Rust\n\nKepemilikan adalah aturan yang menentukan siapa yang mengelola memori suatu nilai. Peminjaman adalah cara merujuk nilai tanpa memindahkan kepemilikannya. Kompiler memeriksa aturan terkait untuk mencegah kesalahan memori.\n\nJaminan keamanan Rust bertumpu pada asumsi bahwa implementasinya benar. Dalam kode unsafe, penulis bertanggung jawab atas sebagian syarat keamanan. Bahasa ini tidak otomatis mencegah kesalahan rumus perhitungan atau hak akses.\n\n### Hubungan Mojo dan Python\n\nMojo adalah bahasa tersendiri yang menggunakan sintaks mirip Python. Mojo mendukung penulisan kode berkinerja tinggi untuk CPU dan GPU. Mojo juga menyediakan fitur interoperabilitas untuk terhubung dengan kode Python.\n\nJangan berasumsi bahwa kode Python yang sudah ada dapat dipindahkan begitu saja. Periksa fitur yang diperlukan dalam dokumentasi versi Mojo yang akan dipasang. Untuk menggunakan GPU, persyaratan perangkat yang didukung dan driver juga harus terpenuhi.\n\n## Kesalahan umum dalam penjelasan bahasa\n\nPenjelasan singkat tentang bahasa mudah melewatkan syarat penerapannya. Fakta sejarah juga perlu dibedakan dari kemampuan saat ini. Berikut adalah kesalahpahaman yang dapat mengaburkan pertimbangan saat memilih bahasa.\n\n| Penjelasan umum | Pemahaman yang tepat |\n| --- | --- |\n| JavaScript adalah versi web dari Java | Keduanya merupakan bahasa yang berbeda |\n| HTML dan CSS sama-sama muncul pada 1991 | Rekomendasi W3C untuk CSS1 terbit pada 17 Desember 1996 |\n| Kotlin adalah bahasa buatan Google | Pengembangnya adalah JetBrains, sedangkan Google mendukungnya di Android |\n| Kode C dapat berjalan di mana saja setelah dikompilasi ulang | Bagian yang bergantung pada sistem operasi dan perangkat keras mungkin perlu diubah |\n| Python saat ini menempati peringkat popularitas 1 | Penilaian memerlukan lembaga survei, waktu, dan metode penghitungan |\n| Menggunakan Rust menyelesaikan semua masalah keamanan | Keamanan memori dan pemeriksaan hak akses adalah masalah yang berbeda |\n| Menggunakan Mojo mempercepat semua pekerjaan Python | Perlu pengukuran berdasarkan pekerjaan, implementasi, dan perangkat keras |\n| Istilah bug lahir dari insiden serangga | Insiden tersebut memopulerkan istilah yang sudah digunakan sebelumnya |\n\nCatatan terkenal tentang penemuan serangga berasal dari kasus Harvard Mark II pada 1947. Smithsonian menjelaskan bahwa insiden ini membantu memopulerkan istilah terkait. Menyebutnya sebagai kasus ENIAC atau awal terciptanya istilah tersebut tidaklah akurat.\n\n## Bagaimana cara membaca angka kinerja?\n\nAngka kinerja harus ditafsirkan hanya dalam lingkup pekerjaan yang diukur. Waktu kompilasi dan kecepatan eksekusi aplikasi yang sudah jadi adalah metrik yang berbeda. Alat pengembangan yang lebih cepat tidak berarti halaman web juga menjadi lebih cepat dengan rasio yang sama.\n\nMicrosoft mengumumkan peralihan alat TypeScript ke implementasi native. Pengumuman tanggal 11 Maret 2025 memuat hasil pengukuran per proyek. Berikut adalah contoh basis kode VS Code dalam pengumuman tersebut.\n\n| Objek pengukuran | Implementasi sebelumnya | Implementasi native | Peningkatan kecepatan yang diumumkan |\n| --- | --- | --- | --- |\n| Pemrosesan kompilasi TypeScript pada basis kode VS Code | 77.8 detik | 7.5 detik | 10.4 kali |\n\nDalam kondisi yang disebutkan pada pengumuman, waktu pemrosesan berkurang menjadi **7.5 detik**. Jika selisihnya dihitung, waktu untuk satu kali pemrosesan berkurang 70.3 detik. Ini tidak berarti semua proyek akan memberikan hasil yang sama.\n\nTerapkan prinsip yang sama saat membandingkan kecepatan Python dan C. Periksa apakah keduanya dijalankan dengan masukan dan algoritma yang sama. Opsi kompilasi dan pustaka yang digunakan juga termasuk kondisi perbandingan. Angka tanpa keterangan lingkungan eksekusi sulit digunakan sebagai rasio kecepatan secara umum.\n\n## Pemeriksaan tipe dan validasi masukan eksternal\n\nMeskipun lolos pemeriksaan tipe, isi data eksternal tetap harus diperiksa secara terpisah. Perbedaan ini sering terlewat saat meninjau kode buatan AI. Deklarasi tipe menyatakan bentuk nilai yang diharapkan program.\n\nBayangkan aplikasi web yang mendeklarasikan jumlah sebagai tipe angka. API eksternal mungkin justru mengirimkan string. Memberi label tipe atau melakukan asersi tipe tidak memvalidasi nilai tersebut. Diperlukan kode untuk memeriksa data saat program berjalan.\n\n| Tahap pemeriksaan | Hal yang diperiksa | Masalah yang tersisa meski lolos |\n| --- | --- | --- |\n| Pemeriksaan tipe | Penggunaan tipe di dalam kode | Nilai yang benar-benar masuk dari luar |\n| Validasi masukan | Format data dan rentang yang diizinkan | Apakah tindakan tersebut diizinkan bagi pengguna |\n| Pemeriksaan hak akses | Hak akses peminta | Apakah hasilnya sesuai aturan bisnis |\n| Pengujian fungsi | Hasil nyata untuk masukan yang diperkirakan | Kondisi yang belum diuji |\n\nTabel ini merupakan kerangka peninjauan yang menerapkan batas cakupan penghapusan tipe dan keamanan memori. Kerangka ini memisahkan bagian yang dijamin bahasa dari bagian yang harus diperiksa layanan. Mintalah AI melakukan validasi tiap tahap secara terpisah.\n\n## Cara menjelaskan fungsi kepada AI\n\nTuliskan masukan dan hasil yang diharapkan dalam permintaan fungsi. Jika hanya menentukan nama program, kondisi kerjanya mudah terlewat. Jika sudah ada proyek, sampaikan pula bahasa dan versi yang digunakan.\n\n1. Tuliskan lingkungan yang akan digunakan.\n2. Jelaskan bentuk masukan yang akan diproses.\n3. Tentukan hasil untuk masukan yang valid.\n4. Tentukan cara menangani nilai kosong dan masukan yang salah.\n5. Mintalah alasan perubahan beserta cara memeriksanya.\n\nBerikut contoh prompt yang memisahkan persyaratan. Sesuaikan isi berkas yang sebenarnya dengan proyek Anda. Hasil yang dihasilkan harus dijalankan langsung untuk diperiksa.\n\n```text\nPeriksa dahulu bahasa dan lingkungan eksekusi proyek yang ada.\nBaca baris yang memiliki judul dari berkas CSV dan tampilkan sebagai daftar.\nTampilkan pesan kesalahan jika kolom wajib tidak ada.\nBerikan pemberitahuan terpisah untuk baris dengan judul kosong.\nPisahkan kode validasi masukan eksternal dari kode tampilan.\nPeriksa dahulu apakah implementasinya dapat menggunakan dependensi yang sudah ada.\nJelaskan bagian yang diubah dan cara mengujinya.\n```\n\nJika terjadi kesalahan, sampaikan pula kondisi untuk mereproduksinya. Pesan kesalahan berisi petunjuk untuk mempersempit lokasi masalah. Dokumentasi Copilot dari GitHub juga mengharuskan peninjauan kode yang dihasilkan. Sebelum menggunakan kode tersebut, hasil eksekusinya perlu diperiksa.\n\n## Kriteria belajar dasar dan memilih pelatihan\n\nPembelajaran dasar dapat dimulai dengan cakupan kecil sesuai pekerjaan yang ingin dibuat. Untuk pengembangan web, cobalah menghubungkan struktur tampilan dengan perilakunya terlebih dahulu. Untuk otomatisasi, sebaiknya mulai dengan memeriksa masukan berkas dan penyimpanan hasil.\n\n1. Pilih satu bahasa yang sesuai dengan hasil yang ingin dibuat.\n2. Pelajari variabel, tipe, pernyataan kondisional, perulangan, dan fungsi.\n3. Buat fungsi kecil dan bandingkan hasil eksekusinya.\n4. Masukkan data yang salah untuk memeriksa perilaku saat gagal.\n5. Cobalah menjelaskan alasan perubahan kode dengan kata-kata sendiri.\n\nSaat memilih pelatihan, periksa juga materi validasinya, bukan hanya tampilan hasilnya. Lihat apakah ada latihan mereproduksi dan memperbaiki kesalahan. Periksa pula apakah versi dan lingkungan eksekusi yang digunakan disebutkan dengan jelas.\n\n- Penjelasan kode: proses menjelaskan masukan dan keluaran fungsi yang dihasilkan\n- Penanganan kesalahan: latihan membaca pesan kesalahan dan mempersempit penyebabnya\n- Validasi data: contoh penanganan masukan eksternal dan kondisi kegagalan\n- Reproduksibilitas: panduan untuk menjalankan kembali dalam lingkungan yang sama\n\nDefinisi bahasa dapat diperiksa dalam dokumentasi resmi tiap proyek. TypeScript Handbook memuat penjelasan tentang penghapusan tipe. Buku resmi Rust menjelaskan kepemilikan dan unsafe secara terpisah. Dalam Mojo Manual, periksa fitur bahasa dan cakupan interoperabilitas dengan Python.","content_html":"\u003cp\u003eVibe coding memerlukan pemahaman dasar untuk membedakan peran bahasa dan tempat kode dijalankan. Untuk web, JavaScript dan TypeScript menjadi titik awal. Untuk pengolahan data, pertimbangkan Python. Rust dan Mojo digunakan untuk pengembangan sistem dan komputasi berkinerja tinggi.\u003c/p\u003e\n\u003cp\u003eAngka kinerja mengacu pada pengumuman Microsoft tanggal 11 Maret 2025.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#mengapa-dasar-dasar-bahasa-diperlukan-dalam-vibe-coding\" class=\"anchor\" id=\"mengapa-dasar-dasar-bahasa-diperlukan-dalam-vibe-coding\"\u003e\u003c/a\u003eMengapa dasar-dasar bahasa diperlukan dalam vibe coding\u003c/h2\u003e\n\u003cp\u003eVibe coding adalah metode pengembangan yang berpusat pada permintaan dalam bahasa alami untuk membuat kode bersama AI. Permintaan diperbaiki sambil melihat hasil eksekusi program yang dihasilkan. Permintaan dalam bahasa alami pun harus diwujudkan menjadi kode yang benar-benar dapat dijalankan.\u003c/p\u003e\n\u003cp\u003eDasar-dasar bahasa membantu menjelaskan fungsi yang diinginkan secara konkret. Pemahaman ini juga membantu menemukan lokasi kesalahan. Pada tahap awal, bedakan dahulu peran tiap bahasa daripada menghafal sintaks semua bahasa.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTempat eksekusi: browser, server, ponsel, bagian internal sistem operasi\u003c/li\u003e\n\u003cli\u003eMasukan: nilai yang dimasukkan pengguna atau data yang diterima dari luar\u003c/li\u003e\n\u003cli\u003ePemrosesan: pekerjaan yang dilakukan program, seperti perhitungan, pencarian, dan klasifikasi\u003c/li\u003e\n\u003cli\u003eKeluaran: tampilan di layar, pembuatan berkas, penyimpanan data\u003c/li\u003e\n\u003cli\u003eKondisi kegagalan: masukan kosong, format salah, koneksi terputus\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\n\u003ca href=\"#konsep-dasar-yang-perlu-dipahami-mulai-dari-variabel-dan-tipe\" class=\"anchor\" id=\"konsep-dasar-yang-perlu-dipahami-mulai-dari-variabel-dan-tipe\"\u003e\u003c/a\u003eKonsep dasar yang perlu dipahami, mulai dari variabel dan tipe\u003c/h2\u003e\n\u003cp\u003eVariabel dan tipe merupakan dasar untuk menjelaskan data yang ditangani program. Pernyataan kondisional dan perulangan menentukan urutan pemrosesan. Fungsi mengelompokkan pekerjaan yang berkaitan agar dapat digunakan kembali.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eKonsep\u003c/th\u003e\n\u003cth\u003eDefinisi sederhana\u003c/th\u003e\n\u003cth\u003eContoh saat menjelaskan fungsi\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003eVariabel\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eSarana untuk memberi nama pada nilai agar dapat dirujuk\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eNama untuk menyimpan kata pencarian\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003eTipe\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eAturan tentang jenis nilai dan operasi yang diizinkan\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eJumlah berupa angka, judul berupa string\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003ePernyataan kondisional\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eSintaks untuk memilih tindakan berdasarkan kondisi\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eMenolak penyimpanan jika judul kosong\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003ePerulangan\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eSintaks untuk menerapkan pekerjaan yang sama pada beberapa objek\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eMenampilkan setiap item dalam daftar di layar\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003eFungsi\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eKode yang dikelompokkan untuk melakukan pekerjaan tertentu\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eFungsi untuk memeriksa masukan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003eStruktur data\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eCara mengorganisasi data\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eDaftar berurutan, nilai yang dicari berdasarkan nama\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003eObjek\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eUnit yang menyatukan keadaan dan perilaku yang berkaitan\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eJudul postingan dan fungsi penyuntingannya\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003ePenanganan pengecualian\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eCara menangani kesalahan yang terjadi saat program berjalan\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003ePemberitahuan kesalahan ketika berkas tidak dapat dibaca\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003eAPI\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eKesepakatan antarprogram untuk bertukar fungsi atau data\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003eMeminta hasil pencarian dari server\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep\"\u003eDependensi\u003c/td\u003e\n\u003ctd data-label=\"Definisi sederhana\"\u003eKode atau alat eksternal yang digunakan program\u003c/td\u003e\n\u003ctd data-label=\"Contoh saat menjelaskan fungsi\"\u003ePustaka pengolahan tanggal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003ePemeriksaan tipe statis memeriksa penggunaan tipe sebelum program dijalankan. Bahasa bertipe dinamis juga membedakan tipe nilai. Istilah tipe dinamis bukan berarti tidak ada jenis data.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#mengapa-terjadi-peralihan-dari-bahasa-mesin-ke-bahasa-tingkat-tinggi\" class=\"anchor\" id=\"mengapa-terjadi-peralihan-dari-bahasa-mesin-ke-bahasa-tingkat-tinggi\"\u003e\u003c/a\u003eMengapa terjadi peralihan dari bahasa mesin ke bahasa tingkat tinggi\u003c/h2\u003e\n\u003cp\u003ePerkembangan bahasa merupakan proses mengurangi rincian pekerjaan yang harus dituliskan manusia. Bahasa mesin adalah representasi instruksi yang dijalankan prosesor. Bahasa assembly memberi simbol yang dapat dibaca manusia pada instruksi tersebut.\u003c/p\u003e\n\u003cp\u003eAssembly berkaitan erat dengan arsitektur set instruksi prosesor. Pergantian komponen tidak berarti seluruh kode harus ditulis ulang. Beban perubahan meningkat ketika berpindah ke arsitektur set instruksi yang tidak kompatibel.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eBahasa atau perkembangan\u003c/th\u003e\n\u003cth\u003eMasalah yang ingin diatasi\u003c/th\u003e\n\u003cth\u003eKonsep yang perlu diingat\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eBahasa mesin dan assembly\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003eMenyampaikan pekerjaan yang harus dilakukan perangkat keras\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003eKaitan langsung dengan arsitektur set instruksi\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eFortran\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003eMengungkapkan perhitungan ilmiah dalam bentuk yang mendekati rumus\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003ePerhitungan numerik dan kompiler\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eCOBOL\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003eMengolah data bisnis dalam format yang mudah dibaca\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003eEkspresi yang berpusat pada pembukuan dan pemrosesan transaksi\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eLisp\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003ePerhitungan menggunakan simbol dan daftar\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003eRiset AI awal dan ekspresi yang berpusat pada fungsi\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eC\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003eMenulis perangkat lunak sistem secara efisien\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003eKendali memori dan portabilitas\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eSQL\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003eMengolah data dalam basis data relasional\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003eKueri yang menyatakan hasil yang diinginkan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eC++\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003eMenata program besar dan mengelola sumber daya\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003eKelas dan berbagai paradigma pemrograman\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bahasa atau perkembangan\"\u003eJava\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang ingin diatasi\"\u003eMemindahkan program antarsistem dengan lingkungan eksekusi berbeda\u003c/td\u003e\n\u003ctd data-label=\"Konsep yang perlu diingat\"\u003eJVM dan bytecode\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eFortran muncul di IBM pada 1957. Lisp berkembang bersama riset AI pada akhir 1950-an. COBOL lahir dari upaya perancangan bersama yang dimulai pada 1959.\u003c/p\u003e\n\u003cp\u003eC adalah bahasa yang berkembang bersama pengembangan Unix. Bahasa ini membantu pemindahan perangkat lunak ke jenis mesin lain. Namun, kode yang bergantung pada sistem operasi dan perangkat keras memerlukan penyesuaian tersendiri.\u003c/p\u003e\n\u003cp\u003ePemrograman berorientasi objek adalah cara mengorganisasi data dan perilaku yang berkaitan ke dalam objek. C++ merupakan bahasa yang mendukung pemrograman berorientasi objek. Bukan C++ yang menciptakan konsep pemrograman berorientasi objek itu sendiri.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#perbedaan-kompiler-dan-interpreter\" class=\"anchor\" id=\"perbedaan-kompiler-dan-interpreter\"\u003e\u003c/a\u003ePerbedaan kompiler dan interpreter\u003c/h2\u003e\n\u003cp\u003eKompiler adalah program yang mengubah kode menjadi representasi lain. Hasil konversinya dapat berupa bahasa mesin. Hasilnya juga dapat berupa format eksekusi perantara seperti bytecode.\u003c/p\u003e\n\u003cp\u003eInterpreter menafsirkan kode atau representasi perantara sambil menjalankannya. Implementasi bahasa yang sebenarnya terkadang menggabungkan kompilasi dan interpretasi. Membagi bahasa hanya menjadi bahasa terkompilasi yang cepat dan bahasa terinterpretasi yang lambat tidaklah akurat.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eKonsep terkait eksekusi\u003c/th\u003e\n\u003cth\u003ePeran\u003c/th\u003e\n\u003cth\u003eContoh umum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep terkait eksekusi\"\u003eKompilasi sebelum eksekusi\u003c/td\u003e\n\u003ctd data-label=\"Peran\"\u003eMenghasilkan kode target sebelum program dijalankan\u003c/td\u003e\n\u003ctd data-label=\"Contoh umum\"\u003ePembuatan berkas eksekusi C dan Rust pada umumnya\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep terkait eksekusi\"\u003eBytecode\u003c/td\u003e\n\u003ctd data-label=\"Peran\"\u003eFormat instruksi perantara yang diproses lingkungan eksekusi\u003c/td\u003e\n\u003ctd data-label=\"Contoh umum\"\u003eBytecode Java, bytecode CPython\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep terkait eksekusi\"\u003eInterpreter\u003c/td\u003e\n\u003ctd data-label=\"Peran\"\u003eMenafsirkan kode atau instruksi perantara sambil menjalankannya\u003c/td\u003e\n\u003ctd data-label=\"Contoh umum\"\u003eEksekusi bytecode pada CPython\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep terkait eksekusi\"\u003eKompilasi JIT\u003c/td\u003e\n\u003ctd data-label=\"Peran\"\u003eMengubah kode yang diperlukan menjadi bahasa mesin saat program berjalan\u003c/td\u003e\n\u003ctd data-label=\"Contoh umum\"\u003eBerbagai JVM dan mesin JavaScript\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Konsep terkait eksekusi\"\u003eRuntime\u003c/td\u003e\n\u003ctd data-label=\"Peran\"\u003eMenyediakan fungsi yang diperlukan untuk menjalankan program\u003c/td\u003e\n\u003ctd data-label=\"Contoh umum\"\u003eJVM, Node.js\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eCPython adalah implementasi Python yang banyak digunakan. CPython mengompilasi kode sumber menjadi bytecode lalu menjalankannya. Menjelaskan Python hanya sebagai bahasa yang setiap kali menerjemahkan kode sumber baris demi baris adalah keliru.\u003c/p\u003e\n\u003cp\u003eJVM pada Java adalah lingkungan untuk menjalankan bytecode. Struktur ini membantu kode dijalankan pada sistem operasi yang berbeda. Kompatibilitas sebenarnya juga dipengaruhi versi JVM dan pustaka eksternal.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#apa-perbedaan-antarmuka-web-dan-server\" class=\"anchor\" id=\"apa-perbedaan-antarmuka-web-dan-server\"\u003e\u003c/a\u003eApa perbedaan antarmuka web dan server?\u003c/h2\u003e\n\u003cp\u003eFrontend menangani tampilan dan interaksi yang dihadapi pengguna. Backend memproses permintaan di server. Basis data berperan menyimpan dan mengambil data yang diperlukan.\u003c/p\u003e\n\u003cp\u003eHTML adalah bahasa markup untuk menyatakan struktur dokumen. CSS menentukan gaya dan tata letak tampilan. JavaScript mengimplementasikan evaluasi kondisi dan penanganan tindakan pengguna.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eNama\u003c/th\u003e\n\u003cth\u003eKategori\u003c/th\u003e\n\u003cth\u003ePeran utama\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eHTML\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eBahasa markup\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eStruktur dokumen seperti judul, paragraf, dan kolom masukan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eCSS\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eBahasa stylesheet\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eWarna, jarak, tata letak tampilan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eJavaScript\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eBahasa pemrograman\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eInteraksi browser dan pemrosesan server\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eTypeScript\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eBahasa yang menambahkan sistem tipe pada JavaScript\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003ePemeriksaan kesalahan sebelum eksekusi dan pengelolaan kode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eReact\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003ePustaka antarmuka pengguna\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eMembuat tampilan dari komponen yang dapat digunakan kembali\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eNode.js\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eRuntime JavaScript\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eMenjalankan JavaScript di luar browser\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eNext.js\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eKerangka kerja berbasis React\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eSusunan halaman dan fungsi server aplikasi web\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003ePHP\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eBahasa pemrograman\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eMenghasilkan respons web dinamis di server\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Nama\"\u003eSQL\u003c/td\u003e\n\u003ctd data-label=\"Kategori\"\u003eBahasa basis data\u003c/td\u003e\n\u003ctd data-label=\"Peran utama\"\u003eMengambil, menambah, mengubah, dan menghapus data\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eReact, Node.js, dan Next.js bukan jenis alat yang sama. Pustaka adalah kumpulan kode yang menyediakan fungsi untuk digunakan sesuai kebutuhan. Kerangka kerja juga menyediakan cara menyusun aplikasi. Runtime adalah lingkungan tempat kode dijalankan.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#perbandingan-bahasa-berdasarkan-tujuan\" class=\"anchor\" id=\"perbandingan-bahasa-berdasarkan-tujuan\"\u003e\u003c/a\u003ePerbandingan bahasa berdasarkan tujuan\u003c/h2\u003e\n\u003cp\u003ePilih bahasa berdasarkan hasil yang ingin dibuat dan lingkungan eksekusi yang sudah ada. Tabel berikut memberikan titik awal yang umum untuk mempertimbangkan tiap bahasa. Kemampuan suatu bahasa tidak terbatas pada pekerjaan yang tercantum dalam tabel.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eHasil yang ingin dibuat\u003c/th\u003e\n\u003cth\u003eBahasa yang dipertimbangkan terlebih dahulu\u003c/th\u003e\n\u003cth\u003eHal yang perlu diperiksa sebelum memilih\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eAplikasi web yang digunakan di browser\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eJavaScript dan TypeScript\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003eDasar HTML dan CSS serta alat penyusunan tampilan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003ePenataan berkas dan otomatisasi pekerjaan\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003ePython\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003eFormat berkas masukan dan lingkungan penerapan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eAnalisis data dan pemanfaatan model AI\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003ePython\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003ePustaka analisis dan model yang diperlukan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eServer jaringan dan alat operasional\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eGo\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003eStruktur pemrosesan konkuren dan integrasi dengan sistem yang ada\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eSistem bisnis berbasis JVM\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eJava dan Kotlin\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003eKompatibilitas kode dan pustaka yang ada\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eAplikasi yang berfokus pada iOS\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eSwift\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003eAlat pengembangan Apple dan fitur platform\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eAplikasi yang berfokus pada Android\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eKotlin\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003eAlat pengembangan Android dan struktur aplikasi yang ada\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eSistem yang memerlukan kendali memori\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eC, C++, dan Rust\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003eKebutuhan kinerja dan kemampuan memverifikasi keamanan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003eOptimalisasi komputasi CPU dan GPU\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eMojo\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003ePerangkat keras yang didukung dan fungsi komputasi yang diperlukan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Hasil yang ingin dibuat\"\u003ePengolahan data relasional\u003c/td\u003e\n\u003ctd data-label=\"Bahasa yang dipertimbangkan terlebih dahulu\"\u003eSQL\u003c/td\u003e\n\u003ctd data-label=\"Hal yang perlu diperiksa sebelum memilih\"\u003ePerbedaan sintaks antarproduk basis data\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eLuasnya penggunaan Python juga berkaitan dengan ekosistem pustakanya. NumPy menggunakan kode terkompilasi untuk meningkatkan kecepatan. Tidak semua perhitungan yang ditulis dalam Python dijalankan hanya dengan kode Python.\u003c/p\u003e\n\u003cp\u003eGo menyertakan dukungan konkurensi dalam rancangan bahasanya. Konkurensi adalah konsep menata beberapa pekerjaan agar dapat berlangsung bersama. Paralelisme adalah keadaan ketika beberapa pekerjaan benar-benar dijalankan pada saat yang sama. Menulis kode konkuren tidak otomatis mempercepat perhitungan.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#perbedaan-typescript-rust-dan-mojo\" class=\"anchor\" id=\"perbedaan-typescript-rust-dan-mojo\"\u003e\u003c/a\u003ePerbedaan TypeScript, Rust, dan Mojo\u003c/h2\u003e\n\u003cp\u003eTypeScript, Rust, dan Mojo berusaha mengatasi masalah yang berbeda. TypeScript membantu memeriksa tipe dalam kode JavaScript. Rust menerapkan aturan ketat pada pengelolaan memori. Mojo ditujukan untuk komputasi berkinerja tinggi dan pemanfaatan perangkat keras.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDasar perbandingan\u003c/th\u003e\n\u003cth\u003eTypeScript\u003c/th\u003e\n\u003cth\u003eRust\u003c/th\u003e\n\u003cth\u003eMojo\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Dasar perbandingan\"\u003eFokus utama\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003ePemeriksaan tipe dan pengelolaan kode\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003eKeamanan memori dan kendali sistem\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003eKomputasi berkinerja tinggi pada CPU dan GPU\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Dasar perbandingan\"\u003ePenggunaan umum\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003eAplikasi web dan aplikasi server\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003eAlat sistem dan komponen yang mengutamakan kinerja\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003eInfrastruktur AI dan kernel komputasi\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Dasar perbandingan\"\u003eKonsep yang perlu dipahami terlebih dahulu\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003eJavaScript dan tipe data\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003eKepemilikan, peminjaman, masa hidup\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003eTipe, memori, komputasi paralel\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Dasar perbandingan\"\u003eHal yang perlu diperiksa secara terpisah\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003eMasukan eksternal dan aturan bisnis\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003eKode unsafe dan kesalahan logika\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003eInteroperabilitas dengan Python dan dukungan perangkat keras\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003ch3\u003e\n\u003ca href=\"#pemeriksaan-tipe-pada-typescript\" class=\"anchor\" id=\"pemeriksaan-tipe-pada-typescript\"\u003e\u003c/a\u003ePemeriksaan tipe pada TypeScript\u003c/h3\u003e\n\u003cp\u003eTypeScript menambahkan pemeriksaan tipe statis pada JavaScript. Fitur ini membantu menemukan penggunaan tipe yang salah sebelum kode dijalankan. Melalui inferensi tipe, sebagian deklarasi ditentukan secara otomatis.\u003c/p\u003e\n\u003cp\u003eAnda tidak perlu menuliskan tipe setiap variabel secara langsung. Anotasi tipe dihapus dalam proses konversi ke JavaScript pada umumnya. Deklarasi tipe saja tidak menghasilkan pemeriksaan masukan saat program berjalan.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#kepemilikan-dan-keamanan-memori-pada-rust\" class=\"anchor\" id=\"kepemilikan-dan-keamanan-memori-pada-rust\"\u003e\u003c/a\u003eKepemilikan dan keamanan memori pada Rust\u003c/h3\u003e\n\u003cp\u003eKepemilikan adalah aturan yang menentukan siapa yang mengelola memori suatu nilai. Peminjaman adalah cara merujuk nilai tanpa memindahkan kepemilikannya. Kompiler memeriksa aturan terkait untuk mencegah kesalahan memori.\u003c/p\u003e\n\u003cp\u003eJaminan keamanan Rust bertumpu pada asumsi bahwa implementasinya benar. Dalam kode unsafe, penulis bertanggung jawab atas sebagian syarat keamanan. Bahasa ini tidak otomatis mencegah kesalahan rumus perhitungan atau hak akses.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#hubungan-mojo-dan-python\" class=\"anchor\" id=\"hubungan-mojo-dan-python\"\u003e\u003c/a\u003eHubungan Mojo dan Python\u003c/h3\u003e\n\u003cp\u003eMojo adalah bahasa tersendiri yang menggunakan sintaks mirip Python. Mojo mendukung penulisan kode berkinerja tinggi untuk CPU dan GPU. Mojo juga menyediakan fitur interoperabilitas untuk terhubung dengan kode Python.\u003c/p\u003e\n\u003cp\u003eJangan berasumsi bahwa kode Python yang sudah ada dapat dipindahkan begitu saja. Periksa fitur yang diperlukan dalam dokumentasi versi Mojo yang akan dipasang. Untuk menggunakan GPU, persyaratan perangkat yang didukung dan driver juga harus terpenuhi.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#kesalahan-umum-dalam-penjelasan-bahasa\" class=\"anchor\" id=\"kesalahan-umum-dalam-penjelasan-bahasa\"\u003e\u003c/a\u003eKesalahan umum dalam penjelasan bahasa\u003c/h2\u003e\n\u003cp\u003ePenjelasan singkat tentang bahasa mudah melewatkan syarat penerapannya. Fakta sejarah juga perlu dibedakan dari kemampuan saat ini. Berikut adalah kesalahpahaman yang dapat mengaburkan pertimbangan saat memilih bahasa.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ePenjelasan umum\u003c/th\u003e\n\u003cth\u003ePemahaman yang tepat\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003eJavaScript adalah versi web dari Java\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003eKeduanya merupakan bahasa yang berbeda\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003eHTML dan CSS sama-sama muncul pada 1991\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003eRekomendasi W3C untuk CSS1 terbit pada 17 Desember 1996\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003eKotlin adalah bahasa buatan Google\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003ePengembangnya adalah JetBrains, sedangkan Google mendukungnya di Android\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003eKode C dapat berjalan di mana saja setelah dikompilasi ulang\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003eBagian yang bergantung pada sistem operasi dan perangkat keras mungkin perlu diubah\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003ePython saat ini menempati peringkat popularitas 1\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003ePenilaian memerlukan lembaga survei, waktu, dan metode penghitungan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003eMenggunakan Rust menyelesaikan semua masalah keamanan\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003eKeamanan memori dan pemeriksaan hak akses adalah masalah yang berbeda\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003eMenggunakan Mojo mempercepat semua pekerjaan Python\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003ePerlu pengukuran berdasarkan pekerjaan, implementasi, dan perangkat keras\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Penjelasan umum\"\u003eIstilah bug lahir dari insiden serangga\u003c/td\u003e\n\u003ctd data-label=\"Pemahaman yang tepat\"\u003eInsiden tersebut memopulerkan istilah yang sudah digunakan sebelumnya\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eCatatan terkenal tentang penemuan serangga berasal dari kasus Harvard Mark II pada 1947. Smithsonian menjelaskan bahwa insiden ini membantu memopulerkan istilah terkait. Menyebutnya sebagai kasus ENIAC atau awal terciptanya istilah tersebut tidaklah akurat.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#bagaimana-cara-membaca-angka-kinerja\" class=\"anchor\" id=\"bagaimana-cara-membaca-angka-kinerja\"\u003e\u003c/a\u003eBagaimana cara membaca angka kinerja?\u003c/h2\u003e\n\u003cp\u003eAngka kinerja harus ditafsirkan hanya dalam lingkup pekerjaan yang diukur. Waktu kompilasi dan kecepatan eksekusi aplikasi yang sudah jadi adalah metrik yang berbeda. Alat pengembangan yang lebih cepat tidak berarti halaman web juga menjadi lebih cepat dengan rasio yang sama.\u003c/p\u003e\n\u003cp\u003eMicrosoft mengumumkan peralihan alat TypeScript ke implementasi native. Pengumuman tanggal 11 Maret 2025 memuat hasil pengukuran per proyek. Berikut adalah contoh basis kode VS Code dalam pengumuman tersebut.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eObjek pengukuran\u003c/th\u003e\n\u003cth\u003eImplementasi sebelumnya\u003c/th\u003e\n\u003cth\u003eImplementasi native\u003c/th\u003e\n\u003cth\u003ePeningkatan kecepatan yang diumumkan\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Objek pengukuran\"\u003ePemrosesan kompilasi TypeScript pada basis kode VS Code\u003c/td\u003e\n\u003ctd data-label=\"Implementasi sebelumnya\"\u003e77.8 detik\u003c/td\u003e\n\u003ctd data-label=\"Implementasi native\"\u003e7.5 detik\u003c/td\u003e\n\u003ctd data-label=\"Peningkatan kecepatan yang diumumkan\"\u003e10.4 kali\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eDalam kondisi yang disebutkan pada pengumuman, waktu pemrosesan berkurang menjadi \u003cstrong\u003e7.5 detik\u003c/strong\u003e. Jika selisihnya dihitung, waktu untuk satu kali pemrosesan berkurang 70.3 detik. Ini tidak berarti semua proyek akan memberikan hasil yang sama.\u003c/p\u003e\n\u003cp\u003eTerapkan prinsip yang sama saat membandingkan kecepatan Python dan C. Periksa apakah keduanya dijalankan dengan masukan dan algoritma yang sama. Opsi kompilasi dan pustaka yang digunakan juga termasuk kondisi perbandingan. Angka tanpa keterangan lingkungan eksekusi sulit digunakan sebagai rasio kecepatan secara umum.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#pemeriksaan-tipe-dan-validasi-masukan-eksternal\" class=\"anchor\" id=\"pemeriksaan-tipe-dan-validasi-masukan-eksternal\"\u003e\u003c/a\u003ePemeriksaan tipe dan validasi masukan eksternal\u003c/h2\u003e\n\u003cp\u003eMeskipun lolos pemeriksaan tipe, isi data eksternal tetap harus diperiksa secara terpisah. Perbedaan ini sering terlewat saat meninjau kode buatan AI. Deklarasi tipe menyatakan bentuk nilai yang diharapkan program.\u003c/p\u003e\n\u003cp\u003eBayangkan aplikasi web yang mendeklarasikan jumlah sebagai tipe angka. API eksternal mungkin justru mengirimkan string. Memberi label tipe atau melakukan asersi tipe tidak memvalidasi nilai tersebut. Diperlukan kode untuk memeriksa data saat program berjalan.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eTahap pemeriksaan\u003c/th\u003e\n\u003cth\u003eHal yang diperiksa\u003c/th\u003e\n\u003cth\u003eMasalah yang tersisa meski lolos\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Tahap pemeriksaan\"\u003ePemeriksaan tipe\u003c/td\u003e\n\u003ctd data-label=\"Hal yang diperiksa\"\u003ePenggunaan tipe di dalam kode\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang tersisa meski lolos\"\u003eNilai yang benar-benar masuk dari luar\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Tahap pemeriksaan\"\u003eValidasi masukan\u003c/td\u003e\n\u003ctd data-label=\"Hal yang diperiksa\"\u003eFormat data dan rentang yang diizinkan\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang tersisa meski lolos\"\u003eApakah tindakan tersebut diizinkan bagi pengguna\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Tahap pemeriksaan\"\u003ePemeriksaan hak akses\u003c/td\u003e\n\u003ctd data-label=\"Hal yang diperiksa\"\u003eHak akses peminta\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang tersisa meski lolos\"\u003eApakah hasilnya sesuai aturan bisnis\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Tahap pemeriksaan\"\u003ePengujian fungsi\u003c/td\u003e\n\u003ctd data-label=\"Hal yang diperiksa\"\u003eHasil nyata untuk masukan yang diperkirakan\u003c/td\u003e\n\u003ctd data-label=\"Masalah yang tersisa meski lolos\"\u003eKondisi yang belum diuji\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eTabel ini merupakan kerangka peninjauan yang menerapkan batas cakupan penghapusan tipe dan keamanan memori. Kerangka ini memisahkan bagian yang dijamin bahasa dari bagian yang harus diperiksa layanan. Mintalah AI melakukan validasi tiap tahap secara terpisah.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#cara-menjelaskan-fungsi-kepada-ai\" class=\"anchor\" id=\"cara-menjelaskan-fungsi-kepada-ai\"\u003e\u003c/a\u003eCara menjelaskan fungsi kepada AI\u003c/h2\u003e\n\u003cp\u003eTuliskan masukan dan hasil yang diharapkan dalam permintaan fungsi. Jika hanya menentukan nama program, kondisi kerjanya mudah terlewat. Jika sudah ada proyek, sampaikan pula bahasa dan versi yang digunakan.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eTuliskan lingkungan yang akan digunakan.\u003c/li\u003e\n\u003cli\u003eJelaskan bentuk masukan yang akan diproses.\u003c/li\u003e\n\u003cli\u003eTentukan hasil untuk masukan yang valid.\u003c/li\u003e\n\u003cli\u003eTentukan cara menangani nilai kosong dan masukan yang salah.\u003c/li\u003e\n\u003cli\u003eMintalah alasan perubahan beserta cara memeriksanya.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eBerikut contoh prompt yang memisahkan persyaratan. Sesuaikan isi berkas yang sebenarnya dengan proyek Anda. Hasil yang dihasilkan harus dijalankan langsung untuk diperiksa.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003ePeriksa dahulu bahasa dan lingkungan eksekusi proyek yang ada.\n\u003c/span\u003e\u003cspan\u003eBaca baris yang memiliki judul dari berkas CSV dan tampilkan sebagai daftar.\n\u003c/span\u003e\u003cspan\u003eTampilkan pesan kesalahan jika kolom wajib tidak ada.\n\u003c/span\u003e\u003cspan\u003eBerikan pemberitahuan terpisah untuk baris dengan judul kosong.\n\u003c/span\u003e\u003cspan\u003ePisahkan kode validasi masukan eksternal dari kode tampilan.\n\u003c/span\u003e\u003cspan\u003ePeriksa dahulu apakah implementasinya dapat menggunakan dependensi yang sudah ada.\n\u003c/span\u003e\u003cspan\u003eJelaskan bagian yang diubah dan cara mengujinya.\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eJika terjadi kesalahan, sampaikan pula kondisi untuk mereproduksinya. Pesan kesalahan berisi petunjuk untuk mempersempit lokasi masalah. Dokumentasi Copilot dari GitHub juga mengharuskan peninjauan kode yang dihasilkan. Sebelum menggunakan kode tersebut, hasil eksekusinya perlu diperiksa.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#kriteria-belajar-dasar-dan-memilih-pelatihan\" class=\"anchor\" id=\"kriteria-belajar-dasar-dan-memilih-pelatihan\"\u003e\u003c/a\u003eKriteria belajar dasar dan memilih pelatihan\u003c/h2\u003e\n\u003cp\u003ePembelajaran dasar dapat dimulai dengan cakupan kecil sesuai pekerjaan yang ingin dibuat. Untuk pengembangan web, cobalah menghubungkan struktur tampilan dengan perilakunya terlebih dahulu. Untuk otomatisasi, sebaiknya mulai dengan memeriksa masukan berkas dan penyimpanan hasil.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003ePilih satu bahasa yang sesuai dengan hasil yang ingin dibuat.\u003c/li\u003e\n\u003cli\u003ePelajari variabel, tipe, pernyataan kondisional, perulangan, dan fungsi.\u003c/li\u003e\n\u003cli\u003eBuat fungsi kecil dan bandingkan hasil eksekusinya.\u003c/li\u003e\n\u003cli\u003eMasukkan data yang salah untuk memeriksa perilaku saat gagal.\u003c/li\u003e\n\u003cli\u003eCobalah menjelaskan alasan perubahan kode dengan kata-kata sendiri.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSaat memilih pelatihan, periksa juga materi validasinya, bukan hanya tampilan hasilnya. Lihat apakah ada latihan mereproduksi dan memperbaiki kesalahan. Periksa pula apakah versi dan lingkungan eksekusi yang digunakan disebutkan dengan jelas.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePenjelasan kode: proses menjelaskan masukan dan keluaran fungsi yang dihasilkan\u003c/li\u003e\n\u003cli\u003ePenanganan kesalahan: latihan membaca pesan kesalahan dan mempersempit penyebabnya\u003c/li\u003e\n\u003cli\u003eValidasi data: contoh penanganan masukan eksternal dan kondisi kegagalan\u003c/li\u003e\n\u003cli\u003eReproduksibilitas: panduan untuk menjalankan kembali dalam lingkungan yang sama\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDefinisi bahasa dapat diperiksa dalam dokumentasi resmi tiap proyek. TypeScript Handbook memuat penjelasan tentang penghapusan tipe. Buku resmi Rust menjelaskan kepemilikan dan unsafe secara terpisah. Dalam Mojo Manual, periksa fitur bahasa dan cakupan interoperabilitas dengan Python.\u003c/p\u003e\n","tags":["AI generatif","Rekayasa prompt","Pengembangan AI","Pemrograman AI","Alat pengembangan"],"faqs":[{"question":"Apakah saya harus mempelajari semua bahasa sebelum mulai melakukan vibe coding?","answer":"Tidak perlu mempelajari semua bahasa. Pilih terlebih dahulu bahasa yang sesuai dengan hasil yang ingin dibuat. Memahami variabel, tipe, fungsi, dan lokasi eksekusi akan membantu Anda membuat permintaan yang lebih spesifik."},{"question":"Untuk pengembangan web, sebaiknya mulai dari JavaScript atau Python?","answer":"JavaScript adalah titik awal untuk membuat perilaku tampilan di browser. Pelajari juga peran HTML dan CSS. Python dapat dipertimbangkan sebagai titik awal untuk otomatisasi berkas dan pengolahan data."},{"question":"Apakah saya tidak perlu memahami JavaScript jika menggunakan TypeScript?","answer":"Untuk memahami perilaku TypeScript saat dijalankan, diperlukan dasar-dasar JavaScript. TypeScript menambahkan sistem tipe ke JavaScript. Pahami pemeriksaan tipe dan eksekusi sebenarnya sebagai dua hal yang berbeda."},{"question":"Apakah tipe harus dituliskan untuk setiap variabel di TypeScript?","answer":"Jika tipe dapat disimpulkan, Anda tidak perlu menuliskannya secara langsung. Alat menentukan tipe berdasarkan nilai yang ditetapkan dan konteksnya. Tentukan apakah tipe eksplisit diperlukan berdasarkan peran kode."},{"question":"Apakah React dan Node.js juga merupakan bahasa pemrograman?","answer":"React adalah pustaka antarmuka pengguna. Node.js adalah lingkungan eksekusi JavaScript. Next.js diklasifikasikan sebagai kerangka kerja berbasis React."},{"question":"Apakah Python menerjemahkan dan menjalankan kode sumber baris demi baris?","answer":"CPython, implementasi utama Python, mengompilasi kode sumber menjadi bytecode. Setelah itu, bytecode dijalankan. Proses ini sulit dijelaskan hanya dengan pernyataan bahwa kode sumber diterjemahkan baris demi baris."},{"question":"Apakah peninjauan keamanan tidak diperlukan jika menggunakan Rust?","answer":"Keamanan memori Rust tidak berarti keamanan seluruh layanan. Hak akses dan aturan bisnis harus diperiksa secara terpisah. Syarat keamanan kode unsafe juga perlu ditinjau."},{"question":"Apakah Mojo merupakan versi baru Python?","answer":"Mojo adalah bahasa tersendiri dengan sintaks yang mirip dengan Python. Mojo menyediakan fitur integrasi dengan Python. Periksa kompatibilitas kode yang sudah ada dalam dokumentasi resmi untuk versi yang akan digunakan."},{"question":"Apakah GPU wajib diperlukan untuk menggunakan Mojo?","answer":"Mojo juga dapat digunakan untuk menulis kode bagi CPU. GPU bukan syarat wajib bagi semua program. Jika menggunakan fitur GPU, periksa cakupan dukungan perangkat dan driver."},{"question":"Apakah konkurensi dalam Go sama artinya dengan pemrosesan paralel?","answer":"Konkurensi adalah konsep pengaturan agar beberapa tugas dapat berjalan bersamaan. Paralelisme adalah keadaan ketika beberapa tugas benar-benar dieksekusi secara bersamaan. Konkurensi saja tidak menjamin peningkatan kecepatan eksekusi."},{"question":"Apakah Kotlin dikembangkan oleh Google?","answer":"Kotlin dikembangkan oleh JetBrains. Google mendukung Kotlin untuk pengembangan Android. Pihak yang membuat bahasa perlu dibedakan dari pihak yang mendukungnya di suatu platform."},{"question":"Jika kompiler TypeScript menjadi lebih cepat, apakah aplikasi juga menjadi lebih cepat dalam proporsi yang sama?","answer":"Waktu kompilasi dan waktu eksekusi aplikasi adalah dua metrik yang berbeda. Contoh kinerja dari Microsoft berkaitan dengan waktu pemrosesan alat pengembangan. Kecepatan respons aplikasi harus diukur secara terpisah."},{"question":"Apakah kode yang dibuat AI sudah selesai jika lolos pemeriksaan tipe?","answer":"Anda tidak dapat menilai apakah suatu fitur sudah selesai dikembangkan hanya dengan pemeriksaan tipe. Periksa masukan eksternal dan hak akses. Uji apakah hasil yang diperoleh sesuai harapan dalam kondisi normal dan kondisi kegagalan."},{"question":"Apa kriteria untuk memilih pelatihan vibe coding?","answer":"Periksa apakah ada latihan untuk menjelaskan dan memodifikasi kode yang dihasilkan. Anda juga dapat memeriksa apakah reproduksi kesalahan dan validasi masukan dibahas. Kursus yang mencantumkan versi yang digunakan dan lingkungan eksekusi memudahkan pemeriksaan kondisi reproduksi."}],"sources":[{"url":"https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html","title":"Dokumentasi resmi TypeScript: TypeScript for JavaScript Programmers","type":"source"},{"url":"https://www.typescriptlang.org/docs/handbook/2/basic-types","title":"TypeScript Handbook: The Basics, pemeriksaan tipe dan penghapusan tipe","type":"source"},{"url":"https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html","title":"The Rust Programming Language: What Is Ownership?","type":"source"},{"url":"https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html","title":"The Rust Programming Language: Unsafe Rust","type":"source"},{"url":"https://docs.modular.com/mojo/manual/","title":"Mojo Manual: gambaran umum bahasa dan integrasi dengan Python","type":"source"},{"url":"https://docs.modular.com/mojo/requirements/","title":"Mojo System Requirements: persyaratan dukungan CPU dan GPU","type":"source"},{"url":"https://docs.python.org/3/glossary.html","title":"Glosarium resmi Python: bytecode dan konsep terkait eksekusi","type":"source"},{"url":"https://numpy.org/doc/2.0/building/index.html","title":"NumPy 2.0 Manual: Building from source","type":"source"},{"url":"https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/What_is_JavaScript","title":"MDN: What is JavaScript?","type":"source"},{"url":"https://nodejs.org/learn/getting-started/introduction-to-nodejs","title":"Dokumentasi resmi Node.js: Introduction to Node.js","type":"source"},{"url":"https://react.dev/","title":"Dokumentasi resmi React: pustaka antarmuka pengguna","type":"source"},{"url":"https://nextjs.org/docs","title":"Dokumentasi resmi Next.js","type":"source"},{"url":"https://www.php.net/manual/en/introduction.php","title":"PHP Manual: Introduction","type":"source"},{"url":"https://go.dev/doc/faq","title":"FAQ resmi Go: tujuan perancangan dan karakteristik eksekusi","type":"source"},{"url":"https://go.dev/blog/waza-talk","title":"Blog resmi Go: Concurrency is not parallelism","type":"source"},{"url":"https://kotlinlang.org/docs/faq.html","title":"FAQ resmi Kotlin: pihak pengembang dan platform sasaran","type":"source"},{"url":"https://developer.android.com/kotlin","title":"Android Developers: Kotlin and Android","type":"source"},{"url":"https://www.swift.org/about/","title":"Swift.org: About Swift","type":"source"},{"url":"https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html","title":"Oracle Java Tutorials: About the Java Technology","type":"source"},{"url":"https://www.ibm.com/history/fortran","title":"IBM History: Fortran","type":"source"},{"url":"https://www-formal.stanford.edu/jmc/history/lisp/node2.html","title":"John McCarthy: LISP prehistory","type":"source"},{"url":"https://bitsavers.computerhistory.org/magazines/Datamation/196703.pdf","title":"Howard Bromberg: The COBOL Conclusion, Datamation Maret 1967","type":"source"},{"url":"https://www.nokia.com/bell-labs/about/dennis-m-ritchie/chist.html","title":"Dennis Ritchie: The Development of the C Language","type":"source"},{"url":"https://www.stroustrup.com/bs_faq.html","title":"FAQ Bjarne Stroustrup: C++ dan orientasi objek","type":"source"},{"url":"https://www.ibm.com/think/topics/structured-query-language","title":"IBM: What Is Structured Query Language?","type":"source"},{"url":"https://www.w3.org/standards/history/CSS1/","title":"W3C: Riwayat publikasi Cascading Style Sheets, level 1","type":"data_point"},{"url":"https://americanhistory.si.edu/collections/object/nmah_334663","title":"Smithsonian National Museum of American History: Buku log dengan bug komputer","type":"source"},{"url":"https://devblogs.microsoft.com/typescript/typescript-native-port/","title":"Microsoft: TypeScript yang 10x lebih cepat, 11 Maret 2025","type":"data_point"},{"url":"https://docs.github.com/en/copilot/responsible-use/inline-suggestions","title":"GitHub Docs: Keterbatasan saran sebaris Copilot dan tanggung jawab verifikasi","type":"source"}],"images":[{"id":2241,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjEsInB1ciI6ImJsb2JfaWQifX0=--aa435b9d954b7e3cf19dca343a0d0fc5333fe68f/ai-73cc4d9e.webp","is_representative":true,"generation_method":"ai_photo","license":"ai_generated","mime_type":"image/webp","width":1536,"height":1024,"translations":{"ko":{"alt":"실습 교실에서 중년 남성이 노트북을 사용하고 옆의 여성이 탁자 위 스마트폰을 가리키고 있다.","caption":"AI가 생성한 코드는 실행과 테스트로 요구사항에 맞는지 확인해야 합니다.","description":null},"en":{"alt":"A middle-aged man uses a laptop in a classroom while a woman beside him points to a smartphone on the table.","caption":"AI-generated code must be run and tested to verify that it meets the requirements.","description":null},"ja":{"alt":"実習教室で中年の男性がノートパソコンを操作し、隣の女性が机の上のスマートフォンを指さしている。","caption":"AIが生成したコードは、実行とテストで要件を満たしているか確認する必要があります。","description":null},"es":{"alt":"Un hombre de mediana edad usa un portátil en clase mientras una mujer señala un móvil sobre la mesa.","caption":"El código generado por IA debe ejecutarse y probarse para comprobar que cumple los requisitos.","description":null},"id":{"alt":"Pria paruh baya menggunakan laptop di kelas, sementara perempuan di sebelahnya menunjuk ponsel di meja.","caption":"Kode buatan AI harus dijalankan dan diuji untuk memastikan kesesuaiannya dengan kebutuhan.","description":null},"pt":{"alt":"Um homem de meia-idade usa um notebook em aula enquanto uma mulher aponta para um celular sobre a mesa.","caption":"O código gerado por IA deve ser executado e testado para verificar se atende aos requisitos.","description":null},"zh-hant":{"alt":"實作教室裡，一名中年男子操作筆記型電腦，身旁的女子指著桌上的智慧型手機。","caption":"AI 生成的程式碼必須透過執行與測試，確認是否符合需求。","description":null},"de":{"alt":"Ein Mann mittleren Alters nutzt im Kurs einen Laptop, während eine Frau neben ihm auf ein Smartphone zeigt.","caption":"KI-generierter Code muss ausgeführt und getestet werden, um zu prüfen, ob er die Anforderungen erfüllt.","description":null}}},{"id":2242,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjcsInB1ciI6ImJsb2JfaWQifX0=--0a47db349b5b04ebfcd192a40d156aec0886d68c/ai-3af1935f.webp","is_representative":false,"generation_method":"ai_semi","license":"ai_generated","mime_type":"image/webp","width":1536,"height":1024,"translations":{"ko":{"alt":"서버실에서 CPU 방열판과 GPU 카드가 드러난 서버 내부를 살펴보는 여성","caption":"Mojo는 CPU와 GPU의 고성능 연산을 겨냥한 언어입니다.","description":null},"en":{"alt":"A woman inspects an open server with exposed CPU heatsinks and a GPU card in a server room.","caption":"Mojo targets high-performance computing on CPUs and GPUs.","description":null},"ja":{"alt":"サーバールームで、CPUヒートシンクとGPUカードが見えるサーバー内部を確認する女性","caption":"MojoはCPUとGPUでの高性能な演算を目指した言語です。","description":null},"es":{"alt":"Una mujer revisa un servidor abierto con disipadores de CPU y una tarjeta GPU en una sala de servidores.","caption":"Mojo está orientado a la computación de alto rendimiento en CPU y GPU.","description":null},"id":{"alt":"Seorang perempuan memeriksa server terbuka dengan heatsink CPU dan kartu GPU di ruang server.","caption":"Mojo ditujukan untuk komputasi berkinerja tinggi pada CPU dan GPU.","description":null},"pt":{"alt":"Uma mulher examina um servidor aberto com dissipadores de CPU e uma placa GPU em uma sala de servidores.","caption":"Mojo é voltada à computação de alto desempenho em CPUs e GPUs.","description":null},"zh-hant":{"alt":"一名女性在伺服器機房檢查打開的伺服器，內部可見 CPU 散熱器與 GPU 卡","caption":"Mojo 是以 CPU 與 GPU 高效能運算為目標的程式語言。","description":null},"de":{"alt":"Eine Frau prüft einen geöffneten Server mit CPU-Kühlkörpern und GPU-Karte im Serverraum.","caption":"Mojo ist auf Hochleistungsberechnungen mit CPUs und GPUs ausgerichtet.","description":null}}}],"published_at":"2026-10-29T14:25:12+09:00","updated_at":"2026-10-29T14:25:12+09:00","license":"cc_by","translation_status":"reviewed","available_locales":["ko","en","ja","es"],"data_locales":["ko","en","ja","es","id","pt","zh-hant","de"],"url":"https://injoys.com/en/articles/vibe-coding-programming-language-basics"}