6 पॉइंट द्वारा GN⁺ 2023-08-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह एक तकनीकी व्याख्या है जो बताती है कि कंप्यूटर किसी प्रोग्राम को शुरुआत से अंत तक कैसे चलाता है, और इसका फोकस इस बात को समझने पर है कि बूट होने से लेकर प्रोग्राम चलने तक कंप्यूटर कैसे काम करता है
  • यह उन सवालों से शुरू होती है कि प्रोग्राम चलने पर वास्तव में क्या होता है, क्या प्रोग्राम सीधे CPU पर चलते हैं, syscalls क्या हैं और कैसे काम करते हैं, और कई प्रोग्राम एक साथ कैसे चल पाते हैं
  • इसकी पृष्ठभूमि में यह समस्या-बोध है कि जो लोग विश्वविद्यालय नहीं जाते, उनके लिए समग्र सिस्टम सामग्री बहुत कम है, इसलिए अलग-अलग गुणवत्ता वाली और कभी-कभी परस्पर विरोधी कई स्रोतों को देखना पड़ता है
  • कई हफ्तों की शोध और लगभग 40 पन्नों के नोट्स के आधार पर, यह सीखी हुई बातों को एक मज़बूत लेख में व्यवस्थित करने के उद्देश्य से तैयार की गई सामग्री है
  • जो पाठक इसे जल्दी पढ़ना चाहते हैं या जिन्हें लगता है कि वे यह पहले से जानते हैं, उनके लिए Chapter 3: How to Run a Program का लिंक अलग से दिया गया है

1 टिप्पणियां

 
GN⁺ 2023-08-10
Hacker News राय
  • नमस्ते! मैं Lexi हूँ, जिसने यह लेख/मिनीबुक लिखी है
    “वेबसाइट खोलने पर क्या होता है?” वाला क्लासिक सवाल तो है, लेकिन मुझे हमेशा “प्रोग्राम चलाने पर क्या होता है?” में ज़्यादा दिलचस्पी रही। करीब 3 महीने पहले इस सवाल का जवाब न दे पाना मुझे इतना खल गया कि मैंने खुद पढ़ने का फैसला किया
    प्रोग्रामिंग में जो कुछ भी जानती हूँ, वह सब खुद सीखा है, इसलिए लगा यह भी आसान होगा, लेकिन बिल्कुल नहीं था। ऑपरेटिंग सिस्टम और CPU कैसे काम करते हैं, इस पर ऑनलाइन सामग्री ज़्यादातर बेहद खराब थी, और सामग्री खुद भी बहुत कम थी। इसलिए पढ़ते हुए मैंने सोचा कि खुद ही एक अच्छी सामग्री बनानी चाहिए, और जो सीखा उसे整理 करते-करते 60 पेज का Google Doc बन गया, वहीं से लिखना शुरू किया
    लेकिन लिखते-लिखते पता चला कि उस विशाल डॉक्यूमेंट का बड़ा हिस्सा गलत था, और मुझे और रिसर्च करनी पड़ी। बार-बार सुधारते रहने पर भी इंटरनेट पर सामग्री की गुणवत्ता अब भी खराब थी, और लेख को और बेहतर बनाना था। चित्र और डायग्राम भी चाहिए थे, लेकिन मुझे ड्रॉइंग नहीं आती थी, इसलिए Figma खोला और प्रयोग किए, और हैकाथॉन में मिले Wacom टैबलेट से कुछ हिस्से बनाए
    करीब 3 महीने बाद अब मेरे पास ऐसा नतीजा है जिस पर मुझे सचमुच गर्व है। भद्दे-से इलस्ट्रेशन समेत Putting the "You" in CPU का अंतिम संस्करण साझा करते हुए खुशी हो रही है। यह काम कंप्यूटर पसंद करने वाले हाई-स्कूल छात्रों की कम्युनिटी Hack Club(https://hackclub.com) के हिस्से के तौर पर बनाया गया
    कुछ हफ्ते पहले इसका एक अभी-अधूरा संस्करण संयोग से HN पर चर्चित हुआ था, और मिला फीडबैक मेरे लिए सच में बहुत मूल्यवान था। उसके बाद मैंने काफी सफाई की है, और अब जाकर इसे खुद दुनिया के साथ साझा करने लायक संतुष्ट हूँ
    वेबसाइट एक static HTML/CSS प्रोजेक्ट है और सब कुछ मैंने शुरू से खुद लिखा है। खासकर navigation component मुझे पसंद है। उम्मीद है आपको पढ़ने में मज़ा आएगा, और यह ऐसा संसाधन बनेगा जिससे कोई भी सीख सके

    • मैंने सिर्फ सरसरी तौर पर देखा है, लेकिन यह काफी अच्छी introductory book जैसी लगती है, और इसका style भी पसंद आया
      कुछ नया खुद सीखते समय ऐसी सामग्री लिखना बहुत अच्छा तरीका है। यह सोचने की प्रक्रिया को साफ करता है, और वे हिस्से सामने लाता है जिन्हें शुरुआत में आप समझा हुआ मानते हैं लेकिन जो अब भी धुंधले होते हैं
      अंत की यह पंक्ति भी अच्छी लगी: “यह लेख लिखते समय मैंने GPT-3.5 और GPT-4 से काफी बातचीत की। उन्होंने बहुत झूठ बोले और ज़्यादातर जानकारी बेकार थी, लेकिन समस्याएँ सुलझाने में कभी-कभी बहुत मदद मिली। अगर आप LLM की सीमाएँ जानते हैं और उसकी हर बात पर बेहद शक करते हैं, तो कुल मिलाकर मदद सकारात्मक हो सकती है। हालांकि लेखन खराब है। उससे अपने लिए मत लिखवाइए।” शानदार प्रोजेक्ट है
    • शुरुआती कुछ पेज पढ़ने के बाद मेरा एकमात्र फीडबैक है कि क्यूट/चुलबुले वाक्य कम कर दिए जाएँ तो अच्छा होगा
      उदाहरण के लिए “CPU सभी calculations संभालता है। वही बड़ा भाई है। शज़ैम अलाकाब्लैम है…” जैसे संदर्भ में मज़ाकिया वाक्य हटाकर “CPU सभी calculations संभालता है। कंप्यूटर ऑन होते ही वह instructions को एक-एक करके execute करना शुरू कर देता है” जैसा लिखना कहीं ज़्यादा पठनीय लगता है
      मैं तकनीकी रूप से बहुत गहरे स्तर का व्यक्ति नहीं हूँ, लेकिन लिखने के पैसे पाने वाले व्यक्ति के तौर पर मुझे ऐसा दिखता है। काम अपने-आप में बेहतरीन है, इसे जारी रखें
    • मैंने खुद जांच नहीं की है, लेकिन कम-से-कम अगर आपको पता हो कि कहाँ देखना है, तो यह मानना मुश्किल है कि ज़्यादातर जानकारी इतनी कठिनाई से मिलती होगी या गलत होगी
      ऐसे विषय आम तौर पर undergraduate स्तर के computer architecture और operating systems courses में अच्छी तरह कवर होते हैं। हालांकि आजकल उनका चलन कम हो गया है और वे ज़्यादातर electives बन गए हैं
      कई universities ने free lectures उपलब्ध कराए हैं, और इस क्षेत्र के professors की लिखी किताबें भी हैं। अगर आप अधिक आधुनिक रुझानों के करीब देखना चाहें, तो संबंधित technical conference talks भी काफी उपयोगी हैं
      फिर भी पढ़ाना एक कम आंकी जाने वाली कला है, और जानकारी को अधिक accessible बनाना या उससे बातचीत को अधिक रोचक बनाना निश्चित रूप से बहुत मूल्यवान है
    • मैं यह ज़रूर बताना चाहूँगा कि LWN(https://lwn.net/) लंबे समय से ऐसी operating systems information बनाने के लिए समर्पित रहा है जो खराब नहीं है। एक बार देखिए, और संभव हो तो साथ जुड़िए :)
    • अभी मैंने लेख को बस जल्दी-जल्दी देखा है, लेकिन यह शानदार लग रहा है। बधाई, और ऐसे काम जारी रखें
      पहले मैं research engineer के रूप में काम करता था; मेरे मामले में, मैं एक university lab में computer security research करने वाला software engineer था। जैसा कि दूसरे comment में कहा गया कि operating systems course elective है, graduate students में भी ऐसे लोग होते हैं जिनके पास operating systems की इस स्तर की समझ नहीं होती
      अच्छी जानकारी ढूँढना मुश्किल जरूर है, लेकिन वह मौजूद है। आपने मुश्किल से मिलने वाली जानकारी को जोड़कर बेहतर रूप में बनाया, यही इसका प्रमाण है। मेरी degree mathematics में है, लेकिन computing knowledge मैंने खुद सीखा। इस तरह सीखने की क्षमता और अत्यधिक technical जानकारी को accessible तरीके से समझाने की क्षमता सच में महत्वपूर्ण है और इसे कम नहीं आंकना चाहिए
      मैं सिर्फ दो links साझा करूँगा, वरना यह अंतहीन हो सकता है। पहला, https://git.lain.faith/sys64738/airs-notes.git और linker part की table of contents https://lwn.net/Articles/276782/ है। अगर आपने ELF और linking की बस सतह ही छुई है, तो Ian Lance Taylor की 20-part blog series और अतिरिक्त विषयों में ELF के बारे में वह सब है जो आप जानना चाहते थे, साथ ही ऐसी बातें भी हैं जो आपको यह संदेह करवा देंगी कि commands आखिर काम कैसे करती हैं। ELF का साथी DWARF भी संक्षेप में आता है, जो एक virtual machine भी है और हर बार C++ exception होने पर इस्तेमाल होता है
      दूसरा, https://0xax.gitbooks.io/linux-insides/content/ भी एक बेहतरीन project है। यह human-readable तरीके से बताता है कि Linux kernel कई काम कैसे करता है। लगभग पक्का है कि इसे HN पर पहले ही साझा किया जा चुका है
  • बहुत अच्छी तरह लिखा है, और ऐसे विषय को गहराई से खंगालने के लिए बधाई
    आजकल 17 साल के लोग जिन चीज़ों को समझते नहीं, उन्हें जोड़कर “प्रोग्रामिंग” कर लें तो कुछ हद तक चल जाता है, लेकिन मेरा मानना है कि आखिरकार वे एक सीमा से टकराएंगे। इसलिए आप अभी जो कर रहे हैं, वह सिर्फ आपके लिए नहीं बल्कि इस सामग्री से सीखने वाले सभी लोगों के लिए वाकई बहुत मूल्यवान है
    बढ़िया काम :) अगर अभी तक नहीं किया है, तो अब emulator आज़माइए। यह बेहद मज़ेदार है

    • “आजकल 17 साल के लोग जिन चीज़ों को समझते नहीं, उन्हें जोड़कर प्रोग्रामिंग कर सकते हैं” वाली बात मेरे बारे में भी है। मैं 26 साल से यही कर रहा हूं
      अगर “किसी दिन सीमा से टकराना” है, तो उत्सुक हूं कि वह जल्द होगा या नहीं
    • 17 से 21 साल की उम्र के आसपास तो उल्टा मेरे programming जीवन का वह दौर था जब मैं सबसे कम चीज़ें जोड़-तोड़कर इस्तेमाल करता था
      मैंने MVC framework शून्य से बनाया, interpreter और compiler भी बनाए, और गलती से machine learning और natural language processing को भी शून्य से फिर से ईजाद करने की कोशिश की। हर तरह के शानदार और मज़ेदार काम किए
      फिर मुझे पैसा और prior art का पता चला। जब दूसरे लोग बताते हैं कि “बस इसे इस्तेमाल कर लो”, तो उसे मान लेने से चीज़ें बहुत जल्दी बन जाती हैं। frameworks भी। jQuery ने ज़िंदगी इतनी आसान बना दी, यह देखकर हैरानी हुई
      अब कई साल बाद, जो चीज़ें पहले “बस जोड़-तोड़कर इस्तेमाल” लगती थीं, वे अब “काफी low-level का advanced काम” लगती हैं। क्योंकि उन abstractions के ऊपर फिर नई abstractions बना दी गई हैं
      आज beginner जिन चीज़ों को “किसी तरह कर लेता है”, वे अगली पीढ़ी के लिए low-level dragon beware zone बन जाएंगी। Programming इस लिहाज़ से कमाल है
    • मैं इससे कड़े तौर पर असहमत हूं। अगर आप किसी बहुत संकरे क्षेत्र में सिर्फ किसी खास technical task वाली भूमिका नहीं चाहते, तो आखिरकार documentation पढ़कर cloud services और JavaScript libraries को जोड़ने की क्षमता सचमुच बहुत अहम हो जाती है
      बल्कि जिसने programming को academic तरीके से सीखा है, वह कई technologies को basic level पर समझकर आगे बढ़ने वाली स्थितियों में पूरी तरह overwhelmed होने की अधिक संभावना रखता है
      अगर किसी बड़ी कंपनी में project manager और designer requirements को सीमित कर दें ताकि आप सिर्फ execution पर ध्यान दे सकें, तो बात अलग है, लेकिन ज़्यादातर लोगों के लिए यह दुर्लभ स्थिति है
    • 10 साल पहले, 30 साल के developer के रूप में जब मैं अभी-अभी industry में आया था, तब मैं बिल्कुल ऐसा ही था। कुछ चीज़ें नहीं बदलतीं
    • या फिर operating system आज़माना भी अच्छा रहेगा। बहुत पहले Operating System Concepts नाम की किताब को follow करते हुए मैंने ऐसे ही कई topics देखे थे
      मुझे सिर्फ cover पर वाला dinosaur याद था, इसलिए title फिर से खोजना पड़ा
  • इस guide को पूरा करने के लिए बधाई
    अगर आप university नहीं जाते, तो comprehensive systems material बहुत ज़्यादा नहीं मिलता—quality अलग-अलग होती है और कभी-कभी आपस में टकराने वाली बहुत सारी सामग्री खंगालनी पड़ती है—यह बात यहां दिखती है
    जो सबसे अच्छी सामग्री मिल सकती है, वह Charles Petzold की Code: The Hidden Language of Computer Hardware and Software है। इसका 2nd edition अभी-अभी आया है
    https://codehiddenlanguage.com/

    • Noam Nisan और Shimon Schocken की The Elements of Computing Systems और संबंधित nand2tetris project भी उतने ही अच्छे, या शायद उससे बेहतर हैं। यह कहीं अधिक hands-on तरीका है
      https://mitpress.mit.edu/9780262539807/the-elements-of-compu...
      https://www.nand2tetris.org/
    • मैंने वह किताब पढ़ी और सचमुच पसंद की, लेकिन आजकल इसके बजाय Turing Complete नाम का game strongly recommend करता हूं
      यह NAND gates से लेकर function calls तक बहुत अच्छी तरह ले जाता है, और बहुत मज़ेदार interactive तरीके से चलता है। पढ़ते हुए दिमाग में यह कल्पना करने के बजाय कि चीज़ें कैसे चलेंगी, आप खुद बनाते हैं
      मैंने अपने CPU assembly और programmable shader language से LED matrix चलाने वाला एक छोटा SIMD/GPU तक बना लिया
    • धन्यवाद! इसमें hardware वाला एहसास है और यह बहुत दिलचस्प दिखता है। शायद किसी दिन पढ़ूंगा
    • वेबसाइट देखते हुए मुझे यह किताब याद आई
      15 साल पहले जब खरीदी थी, तो CPU architecture वाले हिस्से पर मेरी आंखें धुंधली हो गई थीं, लेकिन शायद अब मैं तैयार हूं। हाल ही में 2nd edition भी खरीदा है
  • यह लेख मेरी reading list में है। पहले इसके इस छोटे-से detail ने मेरा दिल जीत लिया था
    “हर page के bottom में margin जोड़ा है ताकि reader consistent eye level बनाए रख सके।”
    बहुत छोटा और पीछे मुड़कर देखें तो obvious detail है। लेकिन हैरानी की बात है कि यह काफी आरामदायक है। जब मैंने यह notice किया, तो समझ गया कि यह passion project है

    • काफी अच्छे UI details हैं। लेखक का 17 साल का होना भी इससे संबंधित लगता है
      लगता है उन्होंने web पर किताब को कैसे present किया जाए, इस पर बहुत सोचा है, और ऐसी नई conventions बनाई हैं जैसी नई पीढ़ी से उम्मीद की जा सकती है। उदाहरण के लिए, ऊपर chapter navigation widget में previous/next chapters का हल्का opaque दिखना मैंने पहली बार देखा
  • मेरी उम्र लगभग 40 है, और मैंने ऐसा कुछ कभी नहीं किया। अभी-अभी impostor syndrome को शांत करने की कोशिश कर रहा था, अब और करना पड़ेगा
    सचमुच बढ़िया काम :p

    • कोई ऐसा काम शुरू करने के लिए कभी देर नहीं होती जो आपको achievement का एहसास दे सके। चाहे 17 साल के हों, 40 के हों, या 80 के
      अभी पर्याप्त समय बाकी है, और जल्दबाज़ी की कोई खास वजह भी नहीं। कोई प्रेरक idea चुनिए, और जितना छोटा free time निकाल सकें, उसमें धीरे-धीरे करते रहिए
      मुख्य बात शायद यह है कि वह काम करते हुए आपको खुद पर गर्व महसूस हो। Final result आखिरकार अपने-आप आ जाएगा
  • OP, अपने काम के लिए उम्र को बहाना मत बनाइए। यह लेख उससे बेहतर है जो ज़्यादातर लोग पूरी ज़िंदगी में कर पाते हैं। शानदार काम

    • अगर उम्र का ज़िक्र नहीं किया होता, तो यहां इसे बिल्कुल ध्यान नहीं मिलता। बेहतरीन सामग्री के new में दम तोड़ देने के मामले बहुत हैं। उम्र को marketing element के रूप में इस्तेमाल करने का फैसला किया गया, और यह साफ तौर पर काम आया
    • self-promotion material के आगे उम्र लगाना—चाहे कम उम्र हो या ज़्यादा—बहुत पुराने समय से कारगर marketing angle रहा है। इसका इस्तेमाल करने के लिए मैं दोष नहीं देना चाहूंगा
    • अगर लेखक ने यह नहीं बताया होता कि वह 17 साल का है, तो इस ChatGPT स्तर के CPU summary में किसी की दिलचस्पी होने की संभावना बहुत कम थी
  • अगर कोई 17 साल की उम्र में ऐसा content बना रहा है, तो कल्पना भी नहीं कर सकता कि इस field को profession के तौर पर चुनने पर आगे चलकर वह कितने कमाल के काम करेगा। सच में शानदार

    • इस लेख को पढ़कर और repositories देखते हुए मुझे उल्टा लगा। मेरी इच्छा है कि वे tech industry में नौकरी के तौर पर न जाएँ, बल्कि अभी जो कर रहे हैं उसे जारी रखने का रास्ता खोजें
      छोटी-मोटी management, उससे भी छोटी corporate goals, और बेमतलब career growth के नीचे उनकी आत्मा न कुचले। वे अभी भी बेहतरीन काम कर रहे हैं, इसलिए काश कोई fellowship जैसी चीज़ हो जो उन्हें tech industry के hamster wheel में अपनी आत्मा घिसे बिना यह जारी रखने दे
  • OP को Casey Muratori का computerenhance.com course एक बार देखना चाहिए
    course के शुरुआती हिस्से का assignment 1978 का Intel 8086 simulator बनाता है। आधुनिक x86_64 assembly भी अभी तक उससे काफी मिलती-जुलती है। वहाँ ऐसी बहुत-सी computer knowledge सीखने को मिलती है जो सच में दूसरी जगह मिलना मुश्किल है

  • मैं भी लगभग 17 साल का हूँ, इस नज़र से कहूँ तो बहुत अच्छा किया! :^)
    सिर्फ 20 मिनट पहले मैं 16-bit integer का पहला byte निकालने का तरीका ढूँढते-ढूँढते endianness के बारे में जान पाया, और आप CPU पर पूरी एक किताब लिख रहे हैं
    Crafting Interpreters खत्म करने के बाद ज़रूर पढ़ूँगा। हालाँकि कई और projects की तरह इसकी progress भी पक्का धीमी हो गई है, इसलिए थोड़ा समय लग सकता है lol

  • बहुत अच्छा लेख है और style भी पसंद आया। लेख और illustrations/memes का combination सच में मज़ेदार था
    RISC/CISC terminology को लेकर मैं थोड़ा reserved हूँ, लेकिन यह शायद हर किसी की अपनी preference का मामला हो सकता है >.>
    kernel के कुछ हिस्से कैसे काम करते हैं, यह पता लगाने में समय बिताने वाले व्यक्ति के तौर पर मैं समझ सकता हूँ कि यह लेख बनाने की प्रक्रिया कितनी painful रही होगी। फिर भी लेख देखकर लगता है कि यह पूरी तरह worth it था
    NT side पर Windows Internals जानने लायक बहुत-सी चीज़ें cover करता है, और Microsoft docs भी खराब नहीं हैं। मेरे हिसाब से वे Linux kernel docs से निश्चित रूप से बेहतर हैं, और बहुत अच्छा starting point हैं
    अगर आप Windows के बारे में और जानना चाहते हैं, तो game hacking forums/resources भी recommend करूँगा। उनमें बहुत कुछ filter करना पड़ता है, लेकिन niche topics पर वे कभी-कभी काफी अच्छे information source हो सकते हैं
    आखिर में, smartphone पर देखते समय कुछ code blocks का font काफी बड़ा था, इसलिए पढ़ना मुश्किल था। उदाहरण के लिए chapter 6 का main.c ऐसा है
    साथ ही, “अगर आप computers पसंद करने वाले teenager हैं और अभी Hack Club Slack में नहीं हैं, तो अभी join करें” वाला वाक्य मुझे बहुत अच्छी तरह याद दिला देता है कि मैं बूढ़ा हो रहा हूँ lol