Membuka jurnal...
Membuka jurnal...
01 April 2026 • Day 3
Programming class
Catatan materi Introduction to Programming Language. Materi menjelaskan akar programming language dari CPU, pola listrik, binary, machine code, register, Intel developer manual, assembly language, assembler, machine-dependent code, low-level vs high-level programming language, compiler sebagai translator, JavaScript sebagai high-level language untuk web, serta demo menjalankan source code dengan Node.js.
Hari ini aku belajar Introduction to Programming Language. Materi ini tidak langsung masuk ke syntax programming language, tetapi menjelaskan dulu kenapa programming language dibutuhkan, apa hubungan programming language dengan CPU, dan kenapa manusia tidak menulis program langsung dalam machine code. Materi dimulai dari CPU atau Central Processing Unit. CPU adalah pusat kendali komputer. Ia mengontrol banyak komponen seperti keyboard, mouse, graphic card, fan, RAM, dan proses perhitungan. CPU sering disebut otak komputer karena banyak keputusan dan instruksi diproses di sana. Tetapi CPU tetap hanya benda fisik yang terdiri dari material seperti silikon, tembaga, dan sedikit emas. Pertanyaan pentingnya adalah: bagaimana benda fisik seperti itu bisa melakukan penjumlahan, pengurangan, perkalian, dan instruksi lain? Jawabannya adalah pola listrik. Di bawah CPU ada pin-pin kecil yang dapat menerima sinyal listrik. Sinyal listrik dapat berupa low voltage dan high voltage. Dalam representasi binary, low voltage bisa dianggap 0 dan high voltage bisa dianggap 1. Kombinasi 0 dan 1 ini menjadi pola instruksi yang bisa dimengerti oleh CPU. Pola instruksi seperti ini disebut machine code atau bahasa mesin. Machine code adalah bahasa yang benar-benar dekat dengan hardware. CPU tidak memahami bahasa manusia seperti “tambahkan dua angka”. CPU memahami pola listrik tertentu yang dialirkan ke pin-pin tertentu. Pola listrik tersebut sudah ditentukan oleh produsen CPU. Misalnya Intel punya developer manual yang menjelaskan opcode dan pola instruksi tertentu untuk operasi seperti add, subtract, dan operasi lainnya. Manual seperti ini biasanya lebih berguna untuk pembuat operating system atau pembuat programming language, bukan untuk web developer sehari-hari, tetapi konsepnya penting agar aku paham akar dari programming language. Materi lalu memperkenalkan register. Register adalah hardware kecil di dalam CPU yang dapat menyimpan data sementara. Register mirip seperti RAM karena sama-sama menyimpan data, tetapi register jauh lebih cepat karena posisinya berada di dalam CPU. Kalau data ada di RAM, CPU harus mengambilnya lewat jalur di motherboard. Kalau data ada di register, aksesnya lebih dekat dan lebih cepat. Contoh yang dibahas adalah melakukan operasi 2 + 3. Angka 2 dapat dimasukkan ke register AX, angka 3 ke register DX, lalu CPU diberi instruksi untuk menambahkan AX dan DX. Pada Intel, register bisa bernama AX, CX, DX, BX, SP, BP, dan lainnya. Untuk membuat instruksi add, programmer perlu tahu opcode, modifier mode, register yang dipakai, dan apakah operand berasal dari register atau memory. Semua itu akhirnya menjadi pola bit yang dialirkan ke CPU sebagai machine code. Dari contoh itu terlihat bahwa menulis program langsung memakai machine code sangat melelahkan. Manusia tidak nyaman menulis instruksi dalam bentuk 0 dan 1. Karena itu muncul ide untuk membuat bahasa yang sedikit lebih manusiawi, lalu membuat translator yang menerjemahkan bahasa itu menjadi machine code. Bahasa yang lebih manusiawi dari machine code ini adalah assembly language, sedangkan translator-nya disebut assembler. Assembly lebih mudah daripada machine code karena programmer bisa menulis instruksi seperti add ax dx, bukan menulis pola bit secara manual. Tetapi assembly masih punya masalah besar: machine dependent. Artinya, assembly sangat bergantung pada jenis hardware. Code yang memakai register AX dan DX bisa berjalan di CPU Intel x86 karena register itu ada di sana, tetapi tidak otomatis berjalan di ARM karena ARM memakai register seperti R0, R1, R2, dan R3. Jadi assembly masih dekat dengan mesin dan harus menyesuaikan arsitektur CPU. Karena assembly masih terlalu dekat dengan hardware, manusia membuat bahasa yang lebih tinggi lagi: high-level programming language. Bahasa seperti C, Java, Swift, Python, dan JavaScript lebih manusiawi karena programmer tidak perlu memikirkan register hardware secara langsung. Translator bernama compiler dapat menerjemahkan high-level language menjadi assembly atau machine code yang sesuai dengan platform. Bahasa yang dekat dengan hardware disebut low-level programming language, sedangkan bahasa yang lebih dekat dengan manusia disebut high-level programming language. Di bootcamp ini, high-level programming language yang dipelajari adalah JavaScript. Alasannya karena targetnya adalah web development. JavaScript adalah bahasa utama untuk membuat website interaktif dan nantinya bisa dipakai bersama HTML, CSS,
High-level code terasa terputus dari hardware sehingga pemahaman menjadi dangkal.
Solusi: Review bagaimana low/high voltage dipetakan ke binary, bagaimana machine code merepresentasikan instruksi CPU, dan bagaimana compiler menjembatani keduanya.
Environment berbeda dapat menghasilkan error berbeda dan membuat pengecekan assignment tidak konsisten.
Solusi: Ikuti standar bootcamp: Mac boleh, selain itu gunakan Ubuntu/Linux dual boot sesuai instruksi.
Ini membuat bingung kenapa Node, compiler, runtime, atau instalasi dibutuhkan.
Solusi: Pahami bahwa source code adalah teks dan butuh compiler/runtime
Komentar akan muncul setelah disetujui admin.
Belum ada komentar yang disetujui.
Kode yang memakai register seperti AX/DX tidak langsung berjalan di ARM yang memakai register seperti R0/R1.
Solusi: Gunakan high-level language saat butuh portability dan biarkan compiler menangani translation spesifik arsitektur.