6 poin oleh GN⁺ 2023-08-10 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2023-08-10
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

    • Saya baru membacanya sekilas, tetapi ini tampak seperti buku pengantar yang cukup bagus, dan saya juga suka gayanya
      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
    • Setelah membaca beberapa halaman awal, satu-satunya masukan saya adalah sebaiknya kurangi ungkapan imut-imut
      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
    • Saya belum meneliti sendiri, tetapi setidaknya jika tahu harus melihat ke mana, saya sulit percaya bahwa sebagian besar informasi itu sangat sulit ditemukan atau keliru
      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
    • Saya ingin menegaskan bahwa LWN(https://lwn.net/) sudah lama berkomitmen membuat informasi sistem operasi yang tidak buruk. Silakan lihat-lihat, dan kalau bisa ikut bergabung :)
    • Saya sejauh ini baru membaca sekilas, tetapi kelihatannya luar biasa. Selamat, dan teruskan pekerjaan seperti ini
      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

    • Ucapan “anak 17 tahun zaman sekarang boleh memprogram dengan menyambung-nyambungkan hal yang tidak mereka pahami” juga berlaku untuk saya. Saya sudah melakukannya selama 26 tahun
      Kalau “suatu hari akan mentok”, saya penasaran apakah itu akan segera terjadi
    • Masa sekitar umur 17 sampai 21 justru adalah periode ketika saya paling sedikit menyambung-nyambungkan sesuatu dalam hidup pemrograman saya
      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
    • Saya sangat tidak setuju. Kecuali jika Anda mengincar posisi yang hanya mengerjakan tugas teknis spesifik di bidang yang sangat sempit, pada akhirnya kemampuan membaca dokumentasi dan merangkai layanan cloud dengan library JavaScript menjadi benar-benar penting
      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 persis seperti itu ketika baru masuk industri sebagai developer umur 30 tahun, 10 tahun lalu. Ada juga hal yang tidak berubah
    • Atau mencoba sistem operasi juga bagus. Saya ingat dulu mengikuti buku Operating System Concepts dan membahas banyak topik serupa
      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/

    • Saya rasa The Elements of Computing Systems karya Noam Nisan dan Shimon Schocken serta proyek nand2tetris terkait sama bagusnya atau bahkan lebih bagus. Pendekatannya jauh lebih hands-on
      https://mitpress.mit.edu/9780262539807/the-elements-of-compu...
      https://www.nand2tetris.org/
    • Saya membaca buku itu dan sangat menyukainya, tetapi sekarang saya sangat merekomendasikan game bernama Turing Complete sebagai gantinya
      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
    • Terima kasih! Terasa berbau hardware dan terlihat sangat menarik. Sepertinya suatu hari akan saya baca
    • Saat melihat situs webnya, saya teringat buku ini
      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

    • Ada cukup banyak detail UI yang sangat bagus. Fakta bahwa penulisnya berumur 17 tahun juga tampaknya relevan
      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

    • Tidak pernah terlalu terlambat untuk mulai melakukan sesuatu yang sepertinya akan memberi rasa pencapaian. Baik umur 17, 40, maupun 80 tahun
      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

    • Kalau tidak menyebut usia, ini sama sekali tidak akan mendapat perhatian di sini. Banyak materi hebat yang mati begitu saja di new. Ia memilih menjadikan usia sebagai elemen pemasaran, dan jelas itu berhasil
    • Menaruh usia di depan materi promosi diri, baik muda maupun tua, adalah sudut pemasaran yang sudah ampuh sejak lama. Saya tidak ingin menyalahkannya karena memanfaatkan itu
    • Kalau penulisnya tidak mengatakan bahwa ia berumur 17 tahun, sangat kecil kemungkinan ada orang yang tertarik pada ringkasan CPU setingkat ChatGPT ini
  • Kalau 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

    • Setelah membaca tulisan ini dan melihat-lihat repositorinya, saya justru berpikir sebaliknya. Saya berharap ia tidak masuk ke industri teknologi sebagai pekerjaan, dan bisa menemukan cara untuk terus melakukan apa yang ia lakukan sekarang
      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.c di Bab 6
    Selain 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