Putting the “You” in CPU - Panduan tentang cara CPU menjalankan program, ditulis oleh remaja 17 tahun
(github.com/hackclub)- Sebuah penjelasan teknis tentang bagaimana komputer menjalankan program dari awal hingga akhir, dengan fokus pada pemahaman cara kerja komputer dari proses startup sampai eksekusi program
- Berangkat dari pertanyaan tentang apa yang sebenarnya terjadi saat program dijalankan, apakah program berjalan langsung di CPU, apa itu syscalls dan bagaimana cara kerjanya, serta bagaimana beberapa program dapat berjalan secara bersamaan
- Latar belakangnya adalah kesadaran bahwa bagi mereka yang tidak kuliah, tidak banyak materi sistem yang komprehensif, sehingga harus menelusuri berbagai sumber dengan kualitas yang beragam dan kadang saling bertentangan
- Berdasarkan riset selama beberapa minggu dan catatan hampir 40 halaman, materi ini bertujuan merangkum apa yang dipelajari menjadi satu tulisan yang solid
- Untuk pembaca yang ingin membaca cepat atau merasa sudah memahami materinya, tautan Chapter 3: How to Run a Program disediakan secara terpisah
1 komentar
Opini Hacker News
Halo! Saya Lexi, penulis artikel/minibuku ini
Ada pertanyaan klasik, “apa yang terjadi saat membuka sebuah situs web?”, tetapi saya selalu lebih penasaran dengan “apa yang terjadi saat menjalankan sebuah program?” Sekitar 3 bulan lalu, saya merasa sangat frustrasi karena tidak bisa menjawab pertanyaan itu, jadi saya memutuskan untuk mempelajarinya sendiri
Semua yang saya ketahui tentang pemrograman saya pelajari secara otodidak, jadi saya kira ini juga akan mudah, tetapi ternyata sama sekali tidak. Sebagian besar materi online tentang cara kerja sistem operasi dan CPU sangat buruk, dan materinya sendiri juga hampir tidak ada. Jadi sambil belajar, saya berpikir harus membuat materi yang bagus sendiri; ketika saya merapikan apa yang saya pelajari, hasilnya menjadi Google Doc setebal 60 halaman, dan dari sana saya mulai menulis
Namun saat menulis, saya menyadari bahwa banyak bagian dari dokumen besar itu keliru, sehingga saya harus meneliti lebih jauh. Saya terus mengulang dan memperbaikinya, sementara kualitas materi di internet tetap buruk, jadi tulisan ini harus dibuat lebih baik. Saya juga membutuhkan gambar dan diagram, tetapi karena tidak bisa menggambar, saya membuka Figma dan bereksperimen, lalu menggambar sebagian dengan tablet Wacom yang saya dapat dari hackathon
Kini, sekitar 3 bulan kemudian, saya punya hasil yang benar-benar saya banggakan. Saya senang bisa membagikan versi final Putting the "You" in CPU, lengkap dengan ilustrasi yang seadanya. Karya ini dibuat sebagai bagian dari Hack Club(https://hackclub.com), komunitas siswa SMA yang menyukai komputer
Beberapa minggu lalu, versi yang masih dikerjakan kebetulan mendapat respons di HN, dan saya sangat berterima kasih atas umpan balik yang diterima. Sejak itu saya cukup banyak merapikannya, dan baru sekarang saya merasa cukup puas untuk membagikannya sendiri kepada dunia
Situs webnya adalah proyek HTML/CSS statis dan semuanya saya tulis sendiri dari nol. Saya terutama menyukai komponen navigasinya. Semoga Anda menikmati membacanya, dan semoga ini bisa menjadi materi yang dapat dipelajari siapa saja
Menulis materi seperti ini saat mempelajari sesuatu yang baru secara otodidak adalah cara yang sangat bagus. Itu memperjelas proses berpikir, dan membantu menemukan bagian-bagian yang awalnya Anda kira sudah dipahami tetapi ternyata masih kabur
Saya juga menyukai kalimat di bagian akhir ini: “Selama menulis artikel ini, saya cukup banyak berbicara dengan GPT-3.5 dan GPT-4. Mereka banyak berbohong dan sebagian besar informasinya tidak berguna, tetapi sesekali sangat membantu dalam memecahkan masalah. Jika Anda memahami batasan LLM dan sangat mencurigai semua yang dikatakannya, total manfaatnya bisa positif. Namun tulisannya buruk. Jangan biarkan ia menulis untuk Anda.” Proyek yang keren
Misalnya, dalam konteks seperti “CPU menangani semua komputasi. Ia kakak terbesar. Shazam alakablam…”, akan jauh lebih enak dibaca jika kalimat bercanda itu dihilangkan dan ditulis seperti “CPU menangani semua komputasi. Sejak komputer dinyalakan, ia mulai mengeksekusi instruksi satu per satu”
Saya bukan orang yang sangat mendalam secara teknis, tetapi sebagai seseorang yang dibayar untuk menulis, begitulah kesan saya. Karyanya sendiri luar biasa, jadi lanjutkan
Topik seperti ini biasanya dibahas dengan baik dalam mata kuliah arsitektur komputer dan sistem operasi tingkat sarjana. Sekarang memang sudah kurang populer sehingga kebanyakan menjadi mata kuliah pilihan
Banyak universitas membuka kuliah gratis, dan ada juga buku yang ditulis oleh profesor di bidang tersebut. Jika ingin melihat yang lebih dekat dengan tren terbaru, presentasi konferensi teknis terkait juga cukup bermanfaat
Meski begitu, mengajar adalah seni yang kurang dihargai, dan membuat informasi lebih mudah diakses atau lebih menyenangkan untuk diinteraksikan jelas sangat bernilai
Dulu saya bekerja sebagai research engineer; dalam kasus saya, saya adalah software engineer yang melakukan riset keamanan komputer di laboratorium universitas. Seperti komentar lain yang mengatakan bahwa mata kuliah sistem operasi adalah pilihan, bahkan di antara mahasiswa pascasarjana pun ada yang tidak memiliki pemahaman sistem operasi sejauh ini
Informasi yang bagus memang sulit ditemukan, tetapi jelas ada. Fakta bahwa Anda menggabungkan informasi yang sulit ditemukan dan membuatnya menjadi bentuk yang lebih baik adalah buktinya. Gelar saya di matematika, tetapi pengetahuan komputasi saya pelajari secara otodidak. Cara belajar seperti ini dan kemampuan menyampaikan informasi yang sangat teknis agar mudah diakses benar-benar penting dan tidak boleh diremehkan
Saya hanya membagikan dua tautan. Kalau tidak, ini bisa berlanjut tanpa akhir. Pertama, https://git.lain.faith/sys64738/airs-notes.git dan daftar isi bagian linker https://lwn.net/Articles/276782/. Jika Anda baru sekadar menggores permukaan ELF dan linking, seri blog 20 bagian oleh Ian Lance Taylor beserta topik tambahannya memuat semua yang ingin Anda ketahui tentang ELF, sampai hal-hal yang membuat Anda meragukan bagaimana sebenarnya perintah-perintah bekerja. Pendamping ELF, DWARF, yang juga merupakan mesin virtual yang digunakan setiap kali exception C++ terjadi, juga dibahas singkat
Kedua, https://0xax.gitbooks.io/linux-insides/content/ juga proyek yang luar biasa. Ini menelusuri bagaimana kernel Linux melakukan berbagai hal dengan cara yang ramah dibaca manusia. Hampir pasti sudah pernah dibagikan di HN
Ditulis dengan sangat baik, dan selamat karena sudah menggali topik seperti ini secara mendalam
Anak 17 tahun zaman sekarang bisa saja “memprogram” dengan menyambung-nyambungkan hal yang tidak mereka pahami dan tetap lolos sampai batas tertentu, tetapi pada akhirnya saya rasa akan mentok. Jadi apa yang Anda lakukan sekarang benar-benar bernilai besar, bukan hanya untuk diri Anda, tetapi juga untuk semua orang yang akan belajar dari materi ini
Bagus sekali :) Kalau belum, sekarang cobalah pakai emulator. Sangat menyenangkan
Kalau “suatu hari akan mentok”, saya penasaran apakah itu akan segera terjadi
Saya membuat framework MVC dari nol, membuat interpreter dan compiler, dan tanpa sengaja juga mencoba menciptakan ulang machine learning dan pemrosesan bahasa alami dari nol. Saya melakukan segala macam hal keren dan menyenangkan
Lalu saya menemukan uang dan prior art. Ternyata kalau menerima ketika orang lain memberi tahu “pakai saja ini”, saya bisa membuat sesuatu jauh lebih cepat. Termasuk framework. Saya takjub jQuery bisa membuat hidup semudah itu
Sekarang, setelah beberapa tahun berlalu, hal-hal yang dulu tampak seperti “sekadar disambung-sambungkan” kini dianggap sebagai “pekerjaan tingkat lanjut yang sangat low-level”. Karena di atas abstraksi itu sudah dibangun abstraksi baru lagi
Hal-hal yang sekarang “bisa dikerjakan seadanya” oleh pemula akan menjadi zona awas naga low-level bagi generasi berikutnya. Pemrograman hebat dalam hal itu
Justru orang yang mendekati pemrograman secara akademis lebih mungkin kewalahan total ketika harus berhadapan dengan pekerjaan yang menuntut memahami berbagai teknologi pada level dasar lalu lanjut menggunakannya
Lain ceritanya kalau di perusahaan raksasa ada project manager dan desainer yang mempersempit spesifikasi sehingga Anda bisa fokus hanya pada eksekusi, tetapi bagi kebanyakan orang itu situasi yang jarang terjadi
Saya cuma ingat dinosaurus di sampulnya, jadi harus mencari lagi judulnya
Selamat karena sudah menyelesaikan panduan ini
Kalau tidak kuliah, terlihat sekali bagian tentang harus menggali banyak materi sistem yang komprehensifnya tidak banyak, kualitasnya beragam, dan kadang saling bertentangan
Materi terbaik yang bisa ditemukan adalah Code: The Hidden Language of Computer Hardware and Software karya Charles Petzold. Edisi ke-2 baru saja terbit
https://codehiddenlanguage.com/
https://mitpress.mit.edu/9780262539807/the-elements-of-compu...
https://www.nand2tetris.org/
Game itu membawa Anda dengan sangat baik dari gerbang NAND sampai pemanggilan fungsi, lewat cara interaktif yang sangat menyenangkan. Alih-alih membaca lalu membayangkan di kepala bagaimana cara kerjanya, Anda langsung membuatnya
Saya sampai membuat assembly CPU sendiri dan SIMD/GPU kecil yang menggerakkan matriks LED dengan bahasa shader yang bisa diprogram
Saat membelinya 15 tahun lalu, mata saya berkabut di bagian struktur CPU, tetapi mungkin sekarang saya sudah siap. Saya juga baru-baru ini membeli edisi ke-2
Ini tulisan yang sudah saya masukkan ke daftar bacaan. Dulu satu detail kecil ini langsung membuat saya suka
“Kami menambahkan ruang kosong di bagian bawah setiap halaman agar pembaca dapat mempertahankan ketinggian pandangan yang konsisten.”
Detail yang benar-benar kecil, dan kalau dipikir-pikir jelas semestinya begitu. Tetapi ternyata nyaman sekali. Saat menyadarinya, saya tahu ini adalah proyek yang dikerjakan dengan passion
Ia banyak memikirkan bagaimana merepresentasikan buku di web, dan sepertinya menciptakan konvensi baru yang bisa diharapkan dari generasi baru. Misalnya, saya baru pertama kali melihat cara bab sebelumnya/berikutnya tampak sedikit tembus pandang pada widget navigasi bab di bagian atas
Saya hampir 40 tahun, dan saya belum pernah menghasilkan hal seperti ini. Baru saja saya hendak menenangkan impostor syndrome, sekarang sepertinya perlu ditenangkan lagi
Benar-benar kerja bagus :p
Waktu masih cukup banyak, dan tidak ada banyak alasan untuk terburu-buru. Pilih satu ide yang menginspirasi, lalu kerjakan perlahan dalam sedikit waktu luang yang bisa Anda sisihkan
Intinya sepertinya adalah merasa bangga pada diri sendiri karena melakukan hal itu. Hasil akhirnya pada akhirnya akan mengikuti
OP, jangan jadikan usia sebagai pembenaran untuk karya Anda. Tulisan ini lebih baik daripada yang bisa dilakukan kebanyakan orang sepanjang hidup mereka. Karya yang keren
new. Ia memilih menjadikan usia sebagai elemen pemasaran, dan jelas itu berhasilKalau pada usia 17 tahun sudah bisa membuat konten seperti ini, saya bahkan tidak bisa membayangkan hal luar biasa apa yang akan ia lakukan ke depannya jika memilih bidang ini sebagai profesi. Benar-benar hebat
Saya tidak ingin jiwanya tertekan oleh urusan manajemen remeh, target perusahaan yang lebih remeh lagi, dan perkembangan karier yang tidak bermakna. Ia sudah melakukan pekerjaan yang hebat sekarang, jadi saya berharap ada semacam fellowship yang memungkinkannya terus berkarya tanpa jiwanya terkikis oleh roda hamster industri teknologi
OP sebaiknya mencoba melihat kuliah Casey Muratori di computerenhance.com
Tugas di bagian awal kuliah itu adalah membuat simulator Intel 8086 dari tahun 1978. Assembly x86_64 modern pun masih cukup mirip dengannya. Anda akan belajar banyak pengetahuan komputer yang benar-benar sulit ditemukan di tempat lain
Dari sudut pandang saya yang juga hampir 17 tahun, kerja bagus! :^)
Baru 20 menit lalu saya sedang mencari cara mengambil byte pertama dari integer 16-bit lalu mengetahui tentang endianness, sementara Anda sedang menulis satu buku tentang CPU
Setelah menyelesaikan Crafting Interpreters, saya pasti akan membacanya. Hanya saja, seperti banyak proyek lain, laju pengerjaannya jelas melambat, jadi mungkin butuh waktu lol
Tulisan yang sangat bagus, dan saya suka gayanya. Kombinasi tulisan dengan ilustrasi/meme benar-benar menyenangkan
Soal istilah RISC/CISC, saya agak punya reservasi, tapi itu mungkin soal selera masing-masing >.>
Sebagai orang yang pernah menghabiskan waktu mencari tahu cara kerja sebagian kernel, saya bisa membayangkan betapa menyakitkannya proses membuat tulisan ini. Tapi dari hasil tulisannya, jelas sepadan
Untuk sisi NT, Windows Internals membahas banyak hal yang ingin diketahui, dan dokumentasi Microsoft juga tidak buruk. Menurut saya jelas lebih baik daripada dokumentasi kernel Linux, dan merupakan titik awal yang sangat bagus
Jika ingin tahu lebih banyak tentang Windows, saya juga merekomendasikan forum/materi game hacking. Ada banyak hal yang harus disaring, tetapi untuk topik-topik niche, kadang itu bisa menjadi sumber informasi yang cukup bagus
Terakhir, saat dilihat di smartphone, font di beberapa blok kode cukup besar sehingga sulit dibaca. Misalnya
main.cdi Bab 6Selain itu, kalimat “jika Anda remaja yang menyukai komputer dan belum ada di Hack Club Slack, bergabunglah sekarang juga” benar-benar mengingatkan saya bahwa saya sedang menua lol