1 पॉइंट द्वारा GN⁺ 2 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Principia Softwarica Plan 9 from Bell Labs के kernel, shell, window system, compiler, linker, editor, browser, debugger source code को किताबों के रूप में समझाता है, ताकि कंप्यूटर के अंदरूनी कामकाज को समझने में मदद मिल सके
  • हर किताब source code और documentation को साथ रखने वाले literate program से बनाई जाती है, और असली code तथा किताब दोनों एक ही document से अपने-आप जनरेट होते हैं
  • पूरी series का आकार 205,081 LOC, 82,014 LOE, 6,312 पेज है, और लक्ष्य code की हर line के लिए explanation की एक line जोड़ते हुए LOE/LOC 1.0 हासिल करना है
  • Plan 9 का पूरा system केवल 183K LOC का है, और एक समान C style के साथ “everything is a file”, per-process namespace, network transparency जैसी अवधारणाओं को लगातार लागू करके पूरे operating system को समझाया जा सकने वाला विषय बनाता है
  • project source github.com/aryx/principia-softwarica पर सार्वजनिक है, और Getting Started में Docker या source से Plan 9 को build और run करने का तरीका दिया गया है

प्रोजेक्ट अवलोकन

  • Principia Softwarica किताबों की एक series है, जो programmers द्वारा इस्तेमाल किए जाने वाले core system programs के पूरे source code को विस्तार से समझाकर कंप्यूटर के अंदरूनी कामकाज को समझने में मदद करती है
  • सभी programs Plan 9 from Bell Labs से लिए गए हैं, जो Unix के उत्तराधिकारी के रूप में डिज़ाइन किया गया operating system है, और इसका मुख्य आधार यह है कि code छोटा और सुरुचिपूर्ण है
  • जिन programs को शामिल किया गया है उनमें kernel, shell, window system, compiler, linker, editor, web browser, debugger शामिल हैं, और हर program एक अलग किताब के रूप में व्यवस्थित है
  • किताबें implementation की व्याख्या करने वाले documents भी हैं और implementation स्वयं भी
    • हर program literate program से निकलता है, जिसमें source code और documentation दोनों साथ होते हैं, और असली code और किताब दोनों इसी document से अपने-आप जनरेट होते हैं
    • literate programming के बारे में अलग से जानकारी more about literate programming में है
  • project source github.com/aryx/principia-softwarica पर सार्वजनिक रूप से उपलब्ध है

इसकी ज़रूरत क्यों है

  • शिक्षा में कमी

    • terminal window में ls टाइप करने पर क्या होता है, इसका जवाब shell, C library, kernel, graphics stack और window system—सभी से होकर गुजरता है
    • Keith Adams, जो Facebook में सहकर्मी थे और बाद में Slack Chief Architect बने, इस सवाल का इस्तेमाल interview question के रूप में करते थे. पूरा trace The Journey of ls में दिया गया है
    • आज “full-stack” का मतलब आम तौर पर React, Node, cloud से लिया जाता है, लेकिन असली निचले stack में compiler, linker, kernel और system calls होते हैं
    • system programs की अवधारणाओं को समझाने वाली बेहतरीन textbooks मौजूद हैं, लेकिन असली source code दिखाने वाली सामग्री बहुत कम है, और Principia Softwarica इस gap को भरने की कोशिश करता है
  • AI युग में महत्व

    • AI coding tools उन programs जैसे grep, sed, diff, awk, gcc, ld को दिन में सैकड़ों बार चलाते हैं, जिन्हें Principia Softwarica समझाता है
    • अगर coding के काम में code लिखना 20% और समझना 80% है, तो AI जितना 20% हिस्सा संभालेगा, उतना ही यह 80%—कि code वास्तव में क्या करता है, हार्डवेयर तक नीचे जाकर समझना—और महत्वपूर्ण हो जाएगा
    • इसके पीछे यह सोच है कि अगर machines ने deep learning से सीखा है, तो इंसानों को भी गहराई से सीखना चाहिए

किताबें और दायरा

  • पूरी series का आकार 205,081 LOC, 82,014 LOE, 6,312 पेज है, और कुल LOE/LOC अनुपात 0.40 है

  • LOC का मतलब code lines की संख्या, LOE का मतलब explanation lines की संख्या, और Pages का मतलब typeset किए गए पन्नों की संख्या है

  • लक्ष्य यह है कि सभी किताबों में LOE/LOC 1.0 हासिल किया जाए, ताकि code की हर line के लिए explanation की एक line हो

    • हरा रंग 0.75 या उससे अधिक को दिखाता है, यानी लक्ष्य के करीब
    • पीला रंग 0.50 या उससे अधिक को दिखाता है, यानी काम प्रगति पर है
    • नारंगी रंग 0.25 या उससे अधिक को दिखाता है, यानी अभी काफी लेखन बाकी है
    • लाल रंग 0.25 से कम को दिखाता है, यानी अभी ज़्यादातर code है और explanation कम है
  • मुख्य सिस्टम

  • डेवलपमेंट टूलचेन

  • डेवलपर टूल्स

  • ग्राफ़िक्स

  • नेटवर्किंग और अन्य प्रोग्राम

  • Web browser: mothra, webfs, hget webcookies uhtml resize, tcs, 12,949 LOC, 4,482 LOE, 384 पृष्ठ

Plan 9 को चुनने के कारण

  • Plan 9 इतना छोटा है कि पूरे operating system को व्यावहारिक रूप से समझा जा सके, यह एक सुसंगत C style में लिखा गया है, और कुछ शक्तिशाली विचारों को समान रूप से लागू करता है
    • सब कुछ file है
    • per-process namespace का उपयोग करता है
    • network transparency प्रदान करता है
  • यह macOS या Windows जितना चमकदार नहीं है, लेकिन मूल रूप से वही core services देता है
    • processes और memory को manage करने वाला kernel
    • window system
    • shell
    • compiler
    • networking
    • graphical applications
  • पूरा Plan 9 system, जिसमें kernel, compiler, shell, window system आदि सब शामिल हैं, 183K LOC है, और vim 350K LOC से लगभग 2 गुना छोटा है
  • अगर 400 पन्नों की एक किताब लगभग 12K LOC को cover करती है, तो Principia Softwarica पूरे Plan 9 को लगभग 15 किताबों में cover कर सकता है
    • gdb जैसे एक single program के लिए 10 गुना अधिक किताबें चाहिए होंगी
    • gcc के लिए 100 गुना अधिक किताबें चाहिए होंगी
  • Wayland, X11 का आधुनिक विकल्प है और Clang, GCC का आधुनिक विकल्प है, लेकिन सिर्फ “clean rewrite” से program छोटा नहीं हो जाता
  • शुरू से simplicity को लक्ष्य बनाकर डिज़ाइन किया गया Plan 9 approach हर line को किताब में समझा पाना संभव बनाता है

सीखी गई बातों को दूसरे systems पर लागू करने का तरीका

  • Plan 9 को सीधे इस्तेमाल करना ज़रूरी नहीं है; एक छोटा और elegant operating system समझ लेने से Linux, macOS, Windows के बारे में intuition मिल सकती है
  • kernel, compiler, linker, shell, editor, debugger, GUI toolkit, network stack — ये सभी एक ही मूल समस्याओं को हल करते हैं, और code 5 हज़ार lines का हो या 5 लाख का, समस्या का सार वही रहता है
  • Plan 9 का C compiler पढ़ने से GCC को explore करते समय काम आने वाली vocabulary मिलती है
  • Plan 9 के linker को एक बार में समझ लेने पर LLD का relocation handling भारी नहीं लगता और वह पढ़े जाने योग्य चीज़ बन जाता है
  • acid किस तरह symbol table पढ़ता है और stack walk करता है, यह देखने से GDB में क्या देखना चाहिए, यह सीखा जा सकता है
  • छोटी implementation, बड़े codebase में मूलभूत जटिलता और आकस्मिक जटिलता के बीच फर्क करने के लिए एक working model देती है
  • Plan 9 के ideas पहले से ही व्यापक रूप से फैल चुके हैं
    • UTF-8 को Thompson और Pike ने Plan 9 के लिए बनाया था
    • /proc Plan 9 से आया
    • Docker और containers की नींव Linux namespaces, Plan 9 से आई
    • Go को Pike और Thompson ने बनाया, और goroutine को Plan 9 के libthread से प्रेरणा मिली
    • 9P protocol का उपयोग WSL2 में होता है
  • Principia Softwarica जिन grep, sed, awk, diff, cc, ld को समझाता है, वे programmer के रोज़ाना इस्तेमाल के tools हैं, और वही concepts Plan 9 में कहीं अधिक स्पष्ट रूप में व्यक्त होते हैं
  • plan9port Plan 9 user space के grep, sed, awk को Linux और macOS पर लाता है
  • goken9cc Linux, macOS, Windows पर Plan 9 C toolchain का उपयोग करके उन्हीं platforms के लिए native binaries बनाने देता है

source code और execution

  • github.com/aryx/principia-softwarica — Principia Softwarica में इस्तेमाल किया गया Plan 9 code और literate programs
  • Getting Started — Docker या source से Plan 9 को build और run करने का तरीका
  • The Journey of ls — एक simple command किस तरह system की हर layer से होकर गुजरता है, और किताबें आपस में कैसे जुड़ती हैं

OCaml port और सहायक tools

  • कई किताबें लिखने के बाद कुछ programs को statically typed functional language OCaml में port किया गया
  • मूल प्रेरणा C code को बेहतर समझना था
    • program को दूसरी language में ले जाने से यह सामने आता है कि कौन-सा हिस्सा मूलभूत है और कौन-सा incidental
    • port में आने वाले bugs, original में छिपे सूक्ष्म हिस्सों को उजागर करते हैं
  • OCaml port आगे चलकर अलग project XIX बन गया, जिसके पास OCaml version tools को कवर करने वाली अपनी website और literate programming book series है
  • syncweb — सभी किताबें बनाने में उपयोग किया गया literate programming tool, और Noweb का उत्तराधिकारी
  • goken9cc — Linux, macOS, Windows पर Plan 9 को build करने के लिए C cross-compiler, और Kencc का उत्तराधिकारी

संबंधित काम और अंतर

  • Project Oberon Principia Softwarica के सबसे क़रीब है, इस अर्थ में कि यह compiler और window system सहित पूरे source code के साथ पूरा operating system प्रस्तुत करता है
    • Oberon केवल Oberon programs चला सकता है, इसलिए Smalltalk की तरह सुंदर लेकिन अलग-थलग self-contained दुनिया है
    • Plan 9 और Unix general-purpose systems हैं, जो किसी भी language में लिखे programs को compile और run कर सकते हैं
    • Oberon में networking नहीं है और यह custom hardware पर चलता है
    • Principia Softwarica, वास्तविक operating system के ऊपर compiler, linker, shell, debugger, graphics, networking तक का अधिक व्यापक दायरा कवर करता है
  • The Elements of Computing Systems को Nand2Tetris के नाम से भी जाना जाता है, और यह NAND gates से Tetris तक computer बनाता है
    • शैक्षणिक रूप से उत्कृष्ट है, लेकिन hardware और software दोनों lecture के लिए बनाए गए toy CPU, toy OS, toy language हैं
    • Principia Softwarica इसके उलट, वास्तविक hardware पर चलने वाले वास्तविक code और वास्तविक operating system को समझाने वाला approach अपनाता है
  • Computer Systems: A Programmer's Perspective को CS:APP के नाम से जाना जाता है, और यह memory layout, linking, virtual memory, concurrency जैसे systems programming concepts को समझाने वाली उत्कृष्ट textbook है
    • CS:APP concepts पर रुक जाता है; यह वास्तविक kernel, वास्तविक linker, वास्तविक compiler का source code नहीं दिखाता
    • Principia Softwarica उस source code को line-by-line समझाकर CS:APP को पूरक बनाता है

प्रगति का इतिहास और लेखक

  • मार्च 2026 में Principia Softwarica website सार्वजनिक की गई
  • 2025 में इसे फिर से शुरू किया गया ताकि यह QEMU और Raspberry Pi पर दोबारा build और run हो सके, और Dockerfile तथा CI जोड़े गए
  • 2019 से 2024 तक Semgrep के काम की वजह से एक ठहराव अवधि रही
  • 2017 में kernel को Raspberry Pi पर port किया गया और Shell तथा Graphics किताबों पर काम हुआ
  • 2016 में Build System किताब पूरी हुई और पहले Libcore तथा Compiler literate programs बनाए गए
  • 2015 में Assembler और Linker किताबें पूरी हुईं और Knuth से मुलाकात हुई
  • 2014 में Plan 9 को fork किया गया, macOS पर cross-compile किया गया, और पहले literate programs बनाते हुए project शुरू हुआ
  • Principia Softwarica को Yoann Padioleau ने लिखा है, और code में Ken Thompson, Rob Pike, Dave Presotto, Phil Winterbottom, Tom Duff, Andrew Hume, Russ Cox का code शामिल है
  • जैसे Principia Mathematica का लक्ष्य गणित की नींव को कवर करना है, वैसे ही Principia Softwarica का लक्ष्य मूलभूत system programs को कवर करना है

1 टिप्पणियां

 
GN⁺ 2 시간 전
Lobste.rs की राय
  • शीर्षक साफ़ तौर पर Principia Mathematica का संदर्भ देता है, लेकिन “softwarica” लैटिन नहीं है
    यह ऐसे लगता है जैसे लैटिन जैसा दिखाने के लिए लिखा गया कोई C function call foo(bar; baz] की तरह टूट गया हो, और इससे बेहतर शीर्षक “Principia Programmatum” (प्रोग्रामों के सिद्धांत) या “Principia Artis Programmatoriae” (प्रोग्रामिंग कला के सिद्धांत) हो सकता था

    • सख्ती से देखें तो “Programmatum” भी वास्तव में मौजूद नहीं है, और सबसे नज़दीकी “Programmum” का अर्थ “घोषणा, अध्यादेश” है, प्रोग्राम नहीं
      लैटिन में software या programming के लिए शब्द नहीं हैं, इसलिए नया शब्द गढ़ना भी ठीक है
      “Programmum/Programmatum” ज़्यादा स्वाभाविक इसलिए लगता है क्योंकि अंग्रेज़ी “program” फ़्रेंच “programme” से आया है, और वह आगे लैटिन “programmum” से
      अगर फ़्रेंच logiciel से ज़्यादा सीधे लिया जाए, तो वह “logique” (तर्क) + “iel” (matériel से आया प्रत्यय) है, और इसे लैटिन “logica”, “materialis/materia” से जोड़कर “program” को “logicia” और “programs” को “logicium” के रूप में बदला जा सकता है
      हालांकि, मैंने लैटिन सिर्फ़ हाई स्कूल में 2 साल पढ़ी थी, इसलिए पूरा भरोसा नहीं है
    • “Principia Programmatica” भी संभव लगता है
    • मुझे लगा कि बात ही लैटिन को जानबूझकर बिगाड़ने की है
      यह पहले से ही एक मृत भाषा है, और शीर्षक एक प्रसिद्ध असफल प्रोजेक्ट का संदर्भ देता है, इसलिए आज के समय में किसी अंग्रेज़ी किताब को शुद्ध लैटिन शीर्षक देना अपने आप में थोड़ा हास्यास्पद लगता है
      मैं यह बात उस व्यक्ति के रूप में कह रहा हूँ जो पहले लैटिन काफ़ी धाराप्रवाह पढ़ लेता था
  • शुरुआत में Plan 9 का ज़िक्र देखकर मैं ठिठक गया था, लेकिन लेखक ने Plan 9 क्यों चुना, इसकी विस्तृत व्याख्या मुझे अच्छी लगी
    संक्षेप में, क्योंकि यह छोटा है, और वह व्याख्या ख़ुद किताब के लिए एक शानदार प्रचार-लेख जैसी लगती है

    • Plan 9 के ज़िक्र पर आप क्यों ठिठके, यह जानने की जिज्ञासा है
  • यह बात अच्छी लगी कि लेखक ने OCaml को Plan 9 पर port करने के बाद, C में क्या हो रहा है इसे बेहतर समझने के लिए user space के बड़े हिस्से को OCaml में फिर से लिखा
    इस प्रक्रिया में कोड हैरानी की बात है कि Windows पर भी चलने लगा, और यह जानने की उत्सुकता है कि इस काम को फंड कौन कर रहा है

    • काफ़ी पुराना OCaml 1.07 इस्तेमाल किया गया, यह दिलचस्प है
      https://aryx.github.io/xix/#about
  • यह सचमुच बेहिसाब बड़ा काम है
    17 खंड, 6,000 से ज़्यादा पन्ने हैं, और लगता है जैसे यह सब पिछले हफ़्ते ही जारी हुआ हो
    क्या किसी को लेखक के बारे में कुछ और संदर्भ या पृष्ठभूमि पता है?

    • यह 9fans thread देखें
      https://www.mail-archive.com/9fans@9fans.net/msg45156.html
      संक्षेप में, यह 2014 में शुरू हुआ था, और लेखक कल स्थानीय समयानुसार 13:45 पर IWP9 में इस काम पर प्रस्तुति देने वाला है
      http://iwp9.org/#prg
    • मन में बार-बार यह विचार आता है कि पाठकों के लिए शायद कुछ छोटी किताबें ज़्यादा उपयोगी होतीं
      बेशक, लेखक ने इस प्रक्रिया में बहुत कुछ सीखा होगा
  • Principia Softwarica एक किताबों की श्रृंखला है जो programmers द्वारा इस्तेमाल किए जाने वाले मुख्य programs के पूरे source code को विस्तार से समझाते हुए बताती है कि कंप्यूटर अंदर से कैसे काम करते हैं
    kernel, shell, window system, compiler, linker, editor, debugger आदि को अलग-अलग किताबों में लिया गया है, और लक्षित operating system Plan 9 लगता है

    • “लक्षित operating system Plan 9 लगता है” बहुत ग़लत-सटीक सारांश है
      पेज पर Learn Here, Apply Everywhere लिखा है, और यह भी समझाया गया है कि Plan 9 का इस्तेमाल करना ज़रूरी नहीं है
      मकसद यह है कि अगर आप एक छोटे और सुरुचिपूर्ण operating system को समझ लें, तो Linux, macOS, यहाँ तक कि Windows के बारे में भी गहरी समझ विकसित कर सकते हैं
  • मैं समझता हूँ कि लेखक क्या कहना चाहता है, लेकिन “Oberon सिर्फ़ Oberon programs चला सकता है” कहना Oberon system की कोई मूलभूत सीमा नहीं है
    सिद्धांततः कोई भी programming language उस architecture और runtime को target कर सकती है

  • यह तो समझ में आता है कि यह Plan 9 से fork हुआ है, लेकिन जिज्ञासा है कि Plan 9 और Inferno में बेहतर कौन है

  • यह बहुत ही महत्वाकांक्षी प्रोजेक्ट लगता है
    मेरा मानना है कि अच्छा code पढ़ने से, ख़ासकर ऐसा code जिसमें design choices की व्याख्या भी हो, इंसान बेहतर programmer बनता है
    और अगर वह code आपके अपने क्षेत्र से थोड़ा बाहर का हो, तो यह और भी ज़्यादा सच है, इसलिए यह एक बेहतरीन learning tool हो सकता है