1 poin oleh GN⁺ 2 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Principia Softwarica adalah seri yang menguraikan source code kernel, shell, sistem window, compiler, linker, editor, browser, dan debugger dari Plan 9 from Bell Labs ke dalam bentuk buku untuk membantu memahami cara kerja internal komputer
  • Setiap buku dibuat dari literate program yang memuat source code dan dokumentasi sekaligus, sehingga kode nyata dan bukunya dihasilkan otomatis dari dokumen yang sama
  • Seluruh seri ini mencakup 205.081 LOC, 82.014 LOE, dan 6.312 halaman, dengan target mencapai LOE/LOC 1.0, yakni satu baris penjelasan untuk setiap baris kode
  • Plan 9 berukuran kecil dengan total sistem hanya 183K LOC, dan menerapkan secara konsisten gaya C yang seragam serta gagasan seperti “everything is a file”, namespace per-proses, dan transparansi jaringan, sehingga seluruh sistem operasi menjadi sesuatu yang bisa dijelaskan secara menyeluruh
  • Source proyek tersedia secara terbuka di github.com/aryx/principia-softwarica, dan Getting Started menyediakan cara membangun dan menjalankan Plan 9 lewat Docker atau dari source

Gambaran proyek

  • Principia Softwarica adalah seri buku yang membantu programmer memahami cara kerja internal komputer dengan menguraikan secara rinci seluruh source code program sistem inti yang mereka gunakan
  • Semua program diambil dari Plan 9 from Bell Labs, sistem operasi yang dirancang sebagai penerus Unix, dengan asumsi utama bahwa kodenya kecil dan elegan
  • Program yang dibahas mencakup kernel, shell, sistem window, compiler, linker, editor, browser web, dan debugger, dan setiap program disusun sebagai buku terpisah
  • Buku ini merupakan dokumen yang menjelaskan implementasi sekaligus implementasi itu sendiri
    • Setiap program berasal dari literate program yang memuat source code dan dokumentasi sekaligus, dan baik kode nyata maupun bukunya sama-sama dihasilkan otomatis dari dokumen ini
    • Penjelasan terpisah tentang literate programming tersedia di more about literate programming
  • Source proyek tersedia secara terbuka di github.com/aryx/principia-softwarica

Mengapa ini diperlukan

  • Celah dalam pendidikan

    • Saat mengetik ls di jendela terminal, jawaban atas apa yang sebenarnya terjadi akan melewati shell, pustaka C, kernel, stack grafis, dan sistem window
    • Keith Adams adalah rekan kerja di Facebook dan kemudian menjadi Chief Architect Slack, dan ia menggunakan pertanyaan ini sebagai pertanyaan wawancara. Pelacakan lengkapnya ada di The Journey of ls
    • Saat ini, “full-stack” biasanya berarti React, Node, dan cloud, tetapi stack lapisan bawah yang sesungguhnya mencakup compiler, linker, kernel, dan system call
    • Ada buku teks yang sangat baik untuk menjelaskan konsep program sistem, tetapi hampir tidak ada materi yang menunjukkan source code nyata, dan Principia Softwarica berupaya mengisi celah ini
  • Pentingnya di era AI

    • Alat coding AI menjalankan program seperti grep, sed, diff, awk, gcc, dan ld yang dijelaskan Principia Softwarica ratusan kali per hari
    • Jika dalam pekerjaan coding penulisan kode adalah 20% dan pemahaman adalah 80%, maka semakin AI mengambil alih 20% itu, semakin penting pula 80% untuk memahami apa yang sebenarnya dilakukan kode hingga ke level hardware
    • Ada kesadaran masalah bahwa jika mesin telah belajar mendalam lewat deep learning, manusia juga harus belajar secara mendalam

Buku dan cakupan

Alasan memilih Plan 9

  • Plan 9 cukup kecil untuk dipahami seluruh sistem operasinya secara realistis, ditulis dengan gaya C yang konsisten, dan menerapkan beberapa ide kuat secara seragam
    • semuanya adalah file
    • menggunakan namespace per proses
    • menyediakan transparansi jaringan
  • Meski tidak semewah macOS atau Windows, secara esensial ia menyediakan layanan inti yang sama
    • kernel yang mengelola proses dan memori
    • sistem jendela
    • shell
    • compiler
    • jaringan
    • aplikasi grafis
  • Seluruh sistem Plan 9, termasuk kernel, compiler, shell, sistem jendela, dan lainnya, berjumlah 183K LOC, hampir 2 kali lebih kecil daripada vim 350K LOC
  • Jika satu buku setebal 400 halaman membahas sekitar 12K LOC, maka Principia Softwarica bisa membahas seluruh Plan 9 dalam sekitar 15 buku
    • program tunggal seperti gdb memerlukan 10 kali lebih banyak buku
    • gcc memerlukan 100 kali lebih banyak buku
  • Wayland adalah pengganti modern untuk X11 dan Clang adalah pengganti modern untuk GCC, tetapi “penulisan ulang yang bersih” saja tidak otomatis membuat program menjadi lebih kecil
  • Pendekatan Plan 9 yang dirancang sejak awal dengan sasaran kesederhanaan memungkinkan setiap baris dijelaskan dalam bentuk buku

Cara menerapkan yang dipelajari ke sistem lain

  • Tidak perlu menggunakan Plan 9 secara langsung; dengan memahami satu sistem operasi yang kecil dan elegan, kita bisa memperoleh intuisi tentang Linux, macOS, dan Windows
  • Kernel, compiler, linker, shell, editor, debugger, GUI toolkit, dan network stack semuanya menyelesaikan masalah dasar yang sama, dan esensi masalahnya tetap sama apakah kodenya 5 ribu baris atau 500 ribu baris
  • Membaca compiler C Plan 9 memberi kosakata yang dibutuhkan saat menjelajahi GCC
  • Jika linker Plan 9 bisa dipahami sekaligus, penanganan relokasi di LLD tidak lagi terasa melelahkan dan menjadi sesuatu yang bisa dibaca
  • Dengan melihat bagaimana acid membaca symbol table dan menelusuri stack, kita bisa belajar apa yang harus dicari di GDB
  • Implementasi kecil menyediakan model kerja untuk membedakan kompleksitas esensial dari kompleksitas insidental dalam codebase besar
  • Ide-ide Plan 9 sudah tersebar luas
    • UTF-8 dibuat oleh Thompson dan Pike untuk Plan 9
    • /proc berasal dari Plan 9
    • Linux namespaces, fondasi Docker dan container, berasal dari Plan 9
    • Go dibuat oleh Pike dan Thompson, dan goroutine terinspirasi dari libthread di Plan 9
    • protokol 9P digunakan di WSL2
  • grep, sed, awk, diff, cc, ld yang dijelaskan oleh Principia Softwarica adalah alat yang dipakai programmer setiap hari, dan konsep yang sama diekspresikan jauh lebih jelas di Plan 9
  • plan9port membawa grep, sed, awk dari user space Plan 9 ke Linux dan macOS
  • goken9cc memungkinkan penggunaan toolchain C Plan 9 di Linux, macOS, dan Windows untuk membuat binary native bagi platform tersebut

Kode sumber dan menjalankan

Port OCaml dan alat pendukung

  • Setelah menulis beberapa buku, sebagian program di-port ke OCaml, bahasa fungsional bertipe statis
  • Motivasi awalnya adalah untuk memahami kode C dengan lebih baik
    • memindahkan program ke bahasa lain mengungkap bagian mana yang esensial dan mana yang sampingan
    • bug pada port mengungkap bagian-bagian halus yang tersembunyi di sumber aslinya
  • Port OCaml berkembang menjadi proyek terpisah, XIX, yang memiliki situs web sendiri dan seri buku literate programming untuk membahas versi alat dalam OCaml
  • syncweb — alat literate programming yang digunakan untuk membuat semua buku, dan merupakan keturunan Noweb
  • goken9cc — compiler silang C untuk membangun Plan 9 di Linux, macOS, dan Windows, serta merupakan keturunan Kencc

Pekerjaan terkait dan perbedaannya

  • Project Oberon adalah yang paling dekat secara semangat dengan Principia Softwarica karena sama-sama menyajikan seluruh sistem operasi beserta seluruh source code-nya, termasuk compiler dan sistem jendela
    • Oberon hanya dapat menjalankan program Oberon, sehingga seperti Smalltalk: indah tetapi merupakan dunia mandiri yang terisolasi
    • Plan 9 dan Unix adalah sistem serbaguna yang dapat mengompilasi dan menjalankan program yang ditulis dalam bahasa apa pun
    • Oberon tidak memiliki jaringan dan berjalan di perangkat keras kustom
    • Principia Softwarica mencakup cakupan yang lebih luas di atas sistem operasi nyata, dari compiler, linker, shell, debugger, grafis, hingga jaringan
  • The Elements of Computing Systems juga dikenal sebagai Nand2Tetris, dan membangun komputer dari gerbang NAND hingga Tetris
    • secara edukatif sangat bagus, tetapi perangkat keras dan perangkat lunaknya adalah CPU mainan, OS mainan, dan bahasa mainan yang dibuat untuk perkuliahan
    • Principia Softwarica mengambil pendekatan sebaliknya: menjelaskan kode nyata dan sistem operasi nyata yang berjalan di perangkat keras nyata
  • Computer Systems: A Programmer's Perspective dikenal sebagai CS:APP, dan merupakan buku teks yang sangat baik untuk menjelaskan konsep pemrograman sistem seperti tata letak memori, linking, memori virtual, dan konkurensi
    • CS:APP berhenti pada konsep dan tidak menunjukkan source code dari kernel nyata, linker nyata, atau compiler nyata
    • Principia Softwarica melengkapi CS:APP dengan menjelaskan source code tersebut baris demi baris

Riwayat perkembangan dan penulis

  • Pada Maret 2026, situs web Principia Softwarica dipublikasikan
  • Pada 2025, proyek ini dilanjutkan agar bisa dibangun dan dijalankan lagi di QEMU dan Raspberry Pi, serta ditambahkan Dockerfile dan CI
  • Dari 2019 hingga 2024, ada masa jeda karena pekerjaan di Semgrep
  • Pada 2017, kernel di-port ke Raspberry Pi dan pekerjaan pada buku Shell dan Graphics berlangsung
  • Pada 2016, buku Build System selesai dan program literate pertama untuk Libcore dan Compiler dibuat
  • Pada 2015, buku Assembler dan Linker selesai dan bertemu Knuth
  • Pada 2014, proyek dimulai dengan melakukan fork pada Plan 9, cross-compile di macOS, dan membuat program literate pertama
  • Principia Softwarica ditulis oleh Yoann Padioleau, dan kodenya mencakup karya dari Ken Thompson, Rob Pike, Dave Presotto, Phil Winterbottom, Tom Duff, Andrew Hume, dan Russ Cox
  • Seperti Principia Mathematica membahas fondasi matematika, tujuan Principia Softwarica adalah membahas program sistem dasar

1 komentar

 
GN⁺ 2 jam lalu
Opini Lobste.rs
  • Judulnya jelas merujuk ke Principia Mathematica, tetapi “softwarica” bukan bahasa Latin
    Rasanya seperti pemanggilan fungsi C yang ditulis agar terlihat seperti Latin tetapi rusak seperti foo(bar; baz], dan judul yang lebih baik mungkin “Principia Programmatum” (prinsip-prinsip program) atau “Principia Artis Programmatoriae” (prinsip-prinsip seni pemrograman)

    • Kalau mau benar-benar ketat, “Programmatum” juga tidak ada, dan yang paling dekat, “Programmum”, berarti “pengumuman, dekret”, bukan program
      Dalam bahasa Latin tidak ada kata untuk software atau pemrograman, jadi membuat kata baru juga tidak masalah
      “Programmum/Programmatum” terdengar lebih masuk akal karena kata Inggris “program” berasal dari bahasa Prancis “programme”, yang kemudian berasal dari bahasa Latin “programmum”
      Kalau diambil lebih langsung dari bahasa Prancis logiciel, itu terdiri dari “logique” (logika) + “iel” (akhiran dari matériel), dan ini bisa dihubungkan ke bahasa Latin “logica”, “materialis/materia” sehingga “program” bisa dipindahkan menjadi “logicia” dan “programs” menjadi “logicium”
      Namun, saya hanya belajar bahasa Latin selama dua tahun di SMA, jadi tidak terlalu yakin
    • “Principia Programmatica” juga tampak mungkin
    • Saya mengira inti leluconnya memang Latin yang sengaja dibuat rusak
      Ini bahasa yang sudah mati, dan karena judulnya merujuk pada proyek yang gagal yang sudah terkenal, memberi judul Latin yang benar pada buku berbahasa Inggris masa kini justru terasa agak menggelikan
      Bahkan sebagai orang yang dulu cukup lancar membaca bahasa Latin, saya merasa begitu
  • Awalnya saya sempat berhenti di penyebutan Plan 9, tetapi saya suka penjelasan rinci penulis tentang kenapa memilih Plan 9
    Singkatnya karena sistemnya kecil, dan penjelasan itu sendiri terbaca seperti tulisan promosi yang sangat bagus untuk bukunya

    • Penasaran kenapa Anda sempat berhenti di penyebutan Plan 9
  • Saya suka bahwa setelah penulis mem-porting OCaml ke Plan 9, ia menulis ulang sebagian besar user space dalam OCaml untuk lebih memahami apa yang sebenarnya terjadi di C
    Dalam proses itu, kodenya ternyata juga bisa berjalan di Windows, dan saya jadi penasaran siapa yang mendanai pekerjaan ini

  • Ini pekerjaan yang benar-benar luar biasa besar
    17 volume, lebih dari 6.000 halaman, dan semuanya tampak seperti baru dirilis minggu lalu
    Penasaran apakah ada yang tahu konteks atau latar belakang tambahan tentang penulisnya

    • Lihat saja thread 9fans ini
      https://www.mail-archive.com/9fans@9fans.net/msg45156.html
      Singkatnya, proyek ini dimulai pada 2014, dan penulis dijadwalkan mempresentasikan karyanya di IWP9 besok pukul 13:45 waktu setempat
      http://iwp9.org/#prg
    • Saya tetap merasa beberapa buku yang lebih pendek mungkin akan lebih berguna bagi pembaca
      Tentu saja, penulisnya tampaknya belajar sangat banyak selama proses ini
  • Principia Softwarica adalah seri buku yang menjelaskan cara kerja internal komputer dengan mengupas seluruh source code dari program-program inti yang dipakai programmer secara rinci
    Kernel, shell, window system, compiler, linker, editor, debugger, dan lain-lain masing-masing dibahas dalam buku terpisah, dan sistem operasi yang dituju tampaknya Plan 9

    • Ringkasan “sistem operasi yang dituju tampaknya Plan 9” itu sangat tidak akurat
      Di halamannya tertulis Learn Here, Apply Everywhere, dan dijelaskan bahwa Anda tidak perlu memakai Plan 9
      Maksudnya, jika Anda memahami satu sistem operasi kecil yang elegan, Anda bisa memperoleh intuisi yang dalam juga tentang Linux, macOS, bahkan Windows
  • Saya paham maksud penulisnya, tetapi mengatakan bahwa “Oberon hanya bisa menjalankan program Oberon” rasanya bukan batasan dari sistem Oberon
    Secara prinsip, bahasa pemrograman apa pun bisa menargetkan arsitektur dan runtime itu

  • Saya paham ini bercabang dari Plan 9, tetapi saya penasaran, antara Plan 9 dan Inferno, mana yang lebih baik

  • Ini tampak seperti proyek yang sangat ambisius
    Saya percaya membaca kode yang bagus, terutama kode yang disertai penjelasan tentang pilihan desain, membuat kita menjadi programmer yang lebih baik
    Apalagi jika itu kode dari area yang sedikit di luar bidang kita sendiri, dan ini bisa menjadi alat belajar yang hebat