5 पॉइंट द्वारा GN⁺ 2024-11-02 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • NandGame एक शैक्षिक puzzle game है, जिसमें सरल logic parts से शुरू करके अंत में programmable computer असेंबल किया जाता है
  • हर level में specification के अनुसार काम करने वाला component बनाना होता है, और तैयार किया गया part अगले चरण का building block बन जाता है
  • computer architecture या software की पूर्व जानकारी की जरूरत नहीं है, और math में भी जोड़ और घटाव के स्तर तक जानना पर्याप्त है, हालांकि कुछ tasks में समय लग सकता है
  • पहला task inputs a और b दोनों के 1 होने पर ही output 0 देने वाले nand component को wires और relay से implement करना है
  • toolbox के parts को नीले area में drag करके रखा जाता है, और spacebar, arrow keys व Escape से drag और cancel को control किया जाता है

बुनियादी parts से computer तक

  • NandGame बुनियादी components को जोड़कर धीरे-धीरे अधिक powerful parts बनाने और अंत में programmable computer तैयार करने के तरीके से आगे बढ़ता है
  • यह कई levels में बंटा है, और हर चरण में दिए गए specification के मुताबिक काम करने वाला component बनाना होता है
    • पूरा किया गया component बाद के levels में इस्तेमाल होने वाला part बन जाता है
    • शुरुआत सबसे सरल logic component से होती है

जरूरी पूर्व-ज्ञान और कठिनाई

  • computer architecture या software के बारे में कोई पूर्व जानकारी जरूरी नहीं है
  • math में जोड़ और घटाव से अधिक की जरूरत नहीं होती
  • कुछ tasks को हल करने में समय लग सकता है, इसलिए धैर्य चाहिए

पहला task: nand बनाना

  • पहला task wires और relay का इस्तेमाल करके nand component implement करना है
  • inputs a और b को output से जोड़ना है, लेकिन circuit ऐसा बनाना होगा कि specification के मुताबिक behavior मिले
  • 1 का मतलब current flow की स्थिति है, और 0 का मतलब current न flow होना है
  • V input हमेशा 1 रहने वाला constant current देता है

nand specification

  • nand का output तभी 0 होता है जब दोनों inputs 1 हों
  • सटीक input-output specification इस प्रकार है
a b output
0 0 1
0 1 1
1 0 1
1 1 0

#操作方式

  • toolbox के components को नीले area में drag करके रखा जाता है
  • drag किए जा सकने वाले item को उठाने के लिए spacebar दबाएं
  • drag करते समय item को arrow keys से move करें
  • फिर spacebar दबाने पर वह नई जगह पर रखा जाता है, और Escape दबाने पर cancel होता है

1 टिप्पणियां

 
GN⁺ 2024-11-02
Hacker News की राय
  • यह गेम पसंद आया, इसलिए एक छोटा FPGA development board खरीदा और खुद अपना instruction set और soft CPU बनाकर देखा
    व्यावहारिक तो नहीं था, लेकिन मजेदार exercise थी, और open source ecosystem ठीक-ठाक व कीमत कम होने की वजह से iCE40 board चुना: https://www.digikey.com/en/products/detail/lattice-semicondu...
    अब शायद इससे बेहतर विकल्प भी हो सकते हैं

    • Niklaus Wirth ने भी कुछ ऐसा ही किया था; बहाना यह था कि उन्हें अपने पसंदीदा Xerox PARC souvenir mouse से communicate करने वाला कोई commercial box नहीं मिल रहा था
      आम तौर पर लोग जैसे-तैसे कोई USB converter बना लेते, लेकिन Wirth ने इसे ठीक से संभालने के लिए FPGA board लिया, soft CPU बनाया, और उस पर OS, window system, language toolchain वगैरह चढ़ा दिए
      इसके चलते वे hardware design app और text editor चला सके, और अपने पसंदीदा mouse के साथ और भी soft CPU designs पर experiment कर सके
    • अगला कदम शायद Tiny Tapeout होगा: https://www.tinytapeout.com/
  • इसी तरह का गेम Turing Complete खेला था, और वह वाकई मजेदार था: https://store.steampowered.com/app/1444480/Turing_Complete/
    यह Nand2Tetris किताब से काफी मिलता-जुलता है

    • Turing Complete में 30 घंटे लगाने के बाद ही समझ आया कि हुआ क्या
      मैंने मशीन को 32-bit instructions पर upgrade कर दिया था, और उसके लिए assembly language documentation तक लिख डाली थी
      अभी early access में है, फिर भी शानदार गेम है
    • Turing Complete निश्चित रूप से recommend करने लायक है
      दिखने में अच्छा, polish भी बढ़िया, और काफी addictive है
      GOG पर भी है, यह अच्छी बात है: https://www.gog.com/game/turing_complete
  • संबंधित पोस्ट:
    NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=36862274 - जुलाई 2023
    NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=31055307 - अप्रैल 2022
    NandGame – Build a Computer from Scratch - https://news.ycombinator.com/item?id=25282507 - दिसंबर 2020
    Show HN: Online challenge: Build a CPU from scratch - https://news.ycombinator.com/item?id=17508151 - जुलाई 2018

    • पता नहीं पहले की पोस्ट कैसे छूट गईं, लेकिन मैंने किताब पढ़ी है और computer खुद implement करके भी देखा है
      वाकई मजेदार exercise है
  • इसे देखकर याद आया कि मैं कितना कुछ भूल चुका हूं, इसलिए थोड़ा कड़वा लगा
    20 साल से भी ज्यादा पहले university में electrical engineering की थी और computer architecture में specialize किया था, लेकिन पेशेवर तौर पर उसका बिल्कुल उपयोग नहीं किया और software side में चला गया
    यहां की चीजें कैसे करनी हैं, कुछ भी याद नहीं था, और trial-and-error के बाद मुश्किल से half-adder तक बना पाया

    • ऐसी प्रतिक्रिया समझ में आती है, लेकिन मुझे लगता है कि पहले की पढ़ाई ने बार-बार सही दिशा वाले फैसले लेने में आपकी मदद की होगी
      यह वैसा ही है जैसे यह याद न होने पर खुद को कोसना कि Corn Laws किसने पास किए थे, या अमेरिका में refrigerated shipping शुरू करने वाला कौन था
      अगर मुख्य narrative और background समझ हो—जैसे युद्ध engineering की मांग करते हैं, agricultural revolution के बाद industrial revolution आता है, और इतिहास class struggle है—तो नई जानकारियां magnetic field में टुकड़ों की तरह अपनी जगह पर फिट होने लगती हैं
      इसलिए खुद को ज्यादा मत कोसिए, अपने प्रति थोड़ा और उदार हो सकते हैं
  • इस गेम और Nand2Tetris course दोनों करने के बाद ही समझ आया कि दोनों एक ही computer implement करते हैं
    यह गेम interactive graphical version है, जबकि original Nand2Tetris में logic gates के बीच connections click और drag करने के बजाय text HDL में लिखा जाता है
    दोनों ही मजेदार और educational थे, लेकिन NandGame ज्यादा मजेदार लगा
    फिर भी दोनों का संबंध पता होना अच्छा है। NandGame पूरा करने के बाद Nand2Tetris के follow-up assignments, यानी higher layers के computer software वाले काम तक आगे बढ़ सकते हैं, और दूसरा version कर चुके लोगों के साथ experience और content share करना भी आसान होता है

    • nand2tetris try किया था, और university में hardware courses में काफी अच्छा भी था, फिर भी यह course और किताब “बाकी उल्लू बना दो” जैसा लगा
      assignments करने के लिए मुझे university textbooks और exam papers तक फिर से खोजने पड़े, और CPU के मुख्य हिस्से को लगभग पूरा करने वाले बिंदु पर जाकर छोड़ दिया
      lectures और text सच कहूं तो काफी कमी वाले लगे, और internet era में यह आम बात है या नहीं पता नहीं, लेकिन मुझे उम्मीद थी कि course और textbook कुछ हद तक self-contained होंगे
    • Nand2Tetris-compatible drag-and-drop simulator कम से कम एक और है
      Andrew Wilkes का desktop-based LogicSimX/Logic Simulator 2: https://logicsimx.com/about/ https://andrew-wilkes.itch.io/logic-simulator-2
      ठीक लगता है, लेकिन ठीक से evaluate करने जितना मैं नहीं जानता
  • सोचने वाली बात यह है कि अगर पहले चरण में NAND gate को असल में बनाने वाले हिस्से को छोड़ दें, तो इस प्रक्रिया के अंत में जो चीज़ निकलती है वह आखिरकार neural network जैसी ही दिखती है
    एक NAND gate को व्यक्त करने के लिए 2 neurons चाहिए, n layers की गहराई, weight matrix में बहुत सारे 0, और थोड़ी-सी storage वाली संरचना जैसी लगती है
    सवाल यह है: अगर सिर्फ assembly-level input/output semantics दिए जाएं, तो क्या एक खाली neural network को train करके ऐसी संरचना जैसा बनाया जा सकता है? Backpropagation तो जाहिर है नहीं चलेगा, लेकिन क्या किसी तरह की directed search संभव नहीं होगी?

    • पिछले साल मैंने एक दोस्त के साथ यह आज़माया था
      3-majority gate और कई दूसरे gates इस्तेमाल किए, लेकिन एक layer से आगे backpropagation ठीक से नहीं चला, शायद bit precision कम होने की वजह से
      “backpropagation के बिना training” की समस्या वाकई काफी कठिन है और आखिरकार हमने छोड़ दिया
      क्या backpropagation के बिना neural network train करने का कोई अच्छा तरीका है? Information bottleneck कुछ हद तक लगता है, लेकिन neural network के बिना mutual information का आकलन करना मुश्किल है
    • कई दशक पहले शुरुआती neural network experiments में से कुछ का मकसद यह दिखाना था कि logic gates को सफलतापूर्वक model किया जा सकता है
  • मुझे इस क्षेत्र का कोई अनुभव नहीं है, इसलिए अच्छा होगा अगर कोई बताए कि हर component क्या करता है
    relay क्या करता है, c और in क्या हैं, यह समझ नहीं आ रहा
    यह भी उलझन है कि अलग power source होने के बावजूद, a या b को power से जोड़कर on करने पर सिर्फ उसी से power क्यों आ जाती है

    • relay एक बिजली से नियंत्रित switch है
      coil (c) में power आने पर switch की state default state से उलट state में बदल जाती है
      default-on switch में c = 0 होने पर in value output तक pass होती है, लेकिन c = 1 होने पर coil में power आती है और switch खुल जाता है या off हो जाता है
      default-off switch उल्टा काम करता है
      c coil है, और power मिलने पर switch को toggle करता है
      in वह value है जो switch बंद होने पर गुजरती है; यहां यह 1 या 0 है
      अलग power source इसलिए चाहिए ताकि दोनों input values से स्वतंत्र रूप से 1 value मिल सके
      उदाहरण के लिए, अगर दोनों inputs 0 हों और फिर भी हमेशा 1 output करना हो, तो खींचने के लिए एक high value चाहिए; power वही भूमिका निभाती है
    • C शायद coil या control का C होगा
      relay एक mechanical switch है जिसे लोहे के core पर लिपटी coil से बना electromagnet control करता है
      जब coil में current बहता है, तो वह metal spring को खींचता है, और इसके परिणामस्वरूप in से output तक current बहने देता है या उल्टा उसे काट सकता है
      दिए गए दो तरह के relay parts इन्हीं दो actions को दिखाते हैं
  • वाकई शानदार। सभी को MHRD भी एक बार देखने या खेलकर देखने की सलाह दूंगा
    https://store.steampowered.com/app/576030/MHRD/

  • अच्छा लग रहा है। अफसोस है कि किताब को आखिर तक नहीं कर पाया, और इसे और ज्यादा आज़माना चाहता हूं