- मिडिल और हाई स्कूल के छात्रों के लिए 12 सत्रों की प्रोग्रामिंग कक्षा में सिंटैक्स से अधिक बुनियादी अवधारणाओं पर ध्यान देने के लिए 1970 में आई stack-based concatenative language Forth को चुना गया
- कागज़ की प्लेटों से Last-In First-Out संरचना और operations को सीधे करने के बाद उसे कंप्यूटर पर ले जाया गया, ताकि छात्र Forth interpreter के काम करने के तरीके को अनुभव के स्तर पर समझ सकें
- बिना installation वाले Easy Forth में drawing, animation और game को final assignment बनाया गया, और छात्रों ने Snake के नियम व रंग बदले या pixel-स्तर के काम पूरे किए
- Forth में सिंटैक्स का बोझ कम है, लेकिन beginners को stack जैसी low-level संरचनाओं से जल्दी जूझना पड़ा; संभव है कि शुरुआती कक्षा के लिए तुरंत visual feedback देने वाला Scratch बेहतर रहता
- किसी खास language से अधिक महत्वपूर्ण वह environment है जिसमें नतीजे जल्दी देखे जा सकें और खुद exploration किया जा सके; और जैसे-जैसे LLM पर निर्भरता के कारण skills सीखने या बनाए रखने का जोखिम बढ़ता है, human-centered education की ज़रूरत और बढ़ती है
Forth चुनने का कारण
- Python या Scratch की जगह stack-based concatenative language Forth को चुनकर एक कम आज़माए गए शैक्षिक रास्ते को खोजा गया
- सीमित कक्षा समय में बुनियादी अवधारणाएँ सिखाने के लिए सिंटैक्स सिखाने का बोझ टालना चाहा गया
- Python प्रोग्रामिंग अनुभव रखने वालों को pseudocode जैसा लग सकता है, लेकिन पहली बार सीखने वालों के लिए वह भी समझना आसान नहीं था
- उम्मीदवार भाषाएँ Forth और Haskell थीं
- Forth लिखे गए क्रम में commands चलाता है, इसलिए stack समझ लेने पर program बनाया जा सकता है—यह बात आकर्षक लगी
- Haskell गणित में सीखी जाने वाली variable और function की अवधारणाओं से अच्छी तरह मेल खाता था, इसलिए variables को value रखने वाले डिब्बे की तरह मानने वाले सामान्य programming तरीके की उलझन से बचा जा सकता था
- आखिरकार Forth चुनने के दो कारण थे
- इसे custom learning environment में integrate करना आसान था
- कक्षा के अंतिम demonstration में functional programming की तुलना में procedural programming को समझना आसान होगा, ऐसा लगा
- कम जानी-पहचानी language इस्तेमाल करने से प्रोग्रामिंग अनुभव वाले छात्रों को भी कुछ नया सीखने का मौका मिला, और beginners भी अलग-थलग नहीं पड़े
12 घंटे का पाठ्यक्रम डिज़ाइन
- कक्षा हफ्ते में 1 बार, हर बार 1 घंटे की थी, कुल 12 सत्र हुए; और यह उम्मीद नहीं थी कि छात्र कक्षा के बाहर बहुत अधिक homework करेंगे
- अंतिम लक्ष्य यह था कि छात्र Forth environment में drawing, animation या game में से एक खुद बनाएं
- कोर्स खत्म होने के बाद भी देखने और संभालकर रखने लायक कोई परिणाम छोड़ना चाहा गया
- ऐसी स्थिति से बचना था जहाँ बहुत तकनीकी बातें सीखने के बाद भी हाथ में कुछ ठोस न बचे
- हर छात्र का operating system अलग था और कुछ devices पर बाहरी software install नहीं किया जा सकता था, इसलिए बिना अलग download या installation के अपने-अपने कंप्यूटर पर code चल पाना ज़रूरी था
- शुरुआत में Rust से Forth को सीधे implement करके उसे WASM के रूप में कक्षा की website में embed करने की योजना थी, लेकिन bugs ठीक करने में उम्मीद से ज़्यादा समय लगा और योजना बदलनी पड़ी
- Nick Morgan का Easy Forth पाठ्यक्रम और interpreter के रूप में अपनाया गया, और हर कक्षा की slides, lesson plan और Easy Forth की copy को online portal पर रखा गया
कंप्यूटर की अवधारणा से शुरू हुई कक्षा
- पहली कक्षा में computing के इतिहास और कंप्यूटर क्या है, वहीं से शुरुआत की गई
- अबेकस सहित कई devices दिखाकर पूछा गया कि क्या वे कंप्यूटर हैं, और फिर कंप्यूटर को “जो भी संख्या की गणना करे” के रूप में परिभाषित किया गया
- इस परिभाषा के अनुसार लगभग कुछ भी कंप्यूटर हो सकता है, और छात्र खुद भी इसमें शामिल हो सकते हैं—यह बात सामने आई
- कंप्यूटर की सीमा को लेकर मौजूद धारणा को व्यापक करने के बाद Forth, उसके वास्तविक उपयोग क्षेत्रों और embedded applications का परिचय दिया गया
- Easy Forth यह मानकर चलता था कि पाठक कम-से-कम एक programming language और stack data structure पहले से जानते हैं, लेकिन छात्रों के पास यह ज्ञान नहीं था, इसलिए अलग से समझाना पड़ा
कागज़ की प्लेटों से समझा गया data stack
- कंप्यूटर इस्तेमाल करने से पहले Forth की नींव data stack को कागज़ की प्लेटों से visualise किया गया
- spaces से अलग किए गए numbers input के क्रम में stack में जाते हैं
1 2 3डालने के बाद. . .से output लेने पर आख़िर में डाला गया item पहले निकलता है और परिणाम3 2 1होता है- stack एक Last-In First-Out संरचना है, जो ऊपर item डालने वाले push और ऊपर से निकालने वाले pop पर चलती है
- हर छात्र को कागज़ की प्लेटें दी गईं और उनसे Forth operations सीधे करवाए गए
- संख्या push करते समय प्लेट पर संख्या लिखकर उसे सबसे ऊपर रखा गया
- addition करते समय ऊपर की दो प्लेटें निकालकर जोड़ी गईं, फिर परिणाम लिखी नई प्लेट ऊपर रखी गई
8 6 +में दो values डालकर उन्हें जोड़ते हैं और14को stack पर रखते हैं2 3 *में दो values को गुणा करके6को stack पर रखा जाता है
- कई operations दोहराते हुए छात्रों ने खुद Forth interpreter की भूमिका निभाई
- यह समझने के बाद कि कंप्यूटर इसी काम को automate करता है, वे असली device पर गए
Easy Forth अभ्यास और अंतिम प्रोजेक्ट
- हर हफ्ते Easy Forth lessons के साथ concepts की व्याख्या, अभ्यास प्रश्न और Q&A किए गए, और पूरा कोर्स बिना किसी बड़ी समस्या के चलता रहा
- कुल 12 घंटों के भीतर पूरा होने वाला और सीखी गई चीज़ें दिखाने वाला final project बनाने के लिए Easy Forth के graphics framework का इस्तेमाल किया गया
- drawing, animation या game बनाने की छूट दी गई
- नया game पूरी तरह बनाने के लिए समय कम पड़ सकता था, इसलिए built-in Snake game को modify करके मौलिक परिणाम बनाने के लिए प्रोत्साहित किया गया
- Easy Forth playground code को अलग page में निकाला गया और उसे इस तरह बढ़ाया गया कि एक तरफ code और दूसरी तरफ बड़ा graphics area दिखे
- आखिरी कक्षा में छात्रों ने जल्दी ही समझ लिया कि Snake code में थोड़ा-सा बदलाव करने पर भी नियम और रंग बदल जाते हैं
- वे बड़े पैमाने पर refactoring करने के स्तर तक नहीं पहुँचे थे, लेकिन Forth से डरे बिना उसे explore और modify करने लायक सहज हो चुके थे
- built-in graphics से चीज़ें बनाना और lines जैसी shapes आसानी से खींचने के लिए नए words बनाने के उदाहरण दिखाए गए
- हर छात्र ने अपना अलग काम चुना, और ज़्यादातर ने pixel स्तर पर चित्र बनाए
- कोर्स खत्म होने के बाद भी, जो छात्र चाहें वे प्रयोग और सीखना जारी रख सकें, इसके लिए environment कुछ समय तक online रखा गया
Forth शिक्षा से मिले निष्कर्ष
- Forth एक दिलचस्प शैक्षिक language थी, लेकिन यह सबसे अच्छा विकल्प था या नहीं, इस पर निश्चितता नहीं थी
- इसमें कठिन सिंटैक्स नहीं है, लेकिन beginners को उन system elements के बारे में सीधे सोचना पड़ा जिन्हें कई programmers abstraction के नीचे छिपा देते हैं
- stack कंप्यूटर विज्ञान की एक बुनियादी data structure है, लेकिन शुरुआती शिक्षा में उसे सबसे पहले रखना ज़रूरी नहीं
- code को words की शृंखला के रूप में लिख पाना शक्तिशाली लगा, और अधिक high-level components वाली concatenative languages भी शिक्षा में उपयोगी हो सकती हैं
- Factor जैसी language या बिल्कुल अलग approach भी उम्मीदवार हो सकती है
- अगर फिर से चुनना हो तो अंदरूनी संरचना की बजाय स्पष्ट और तत्काल visual feedback देने वाले माध्यम पर विचार किया जा सकता है
- Scratch low-level details के बिना control flow, variables, functions आदि सिखा सकता है और sprites को आसानी से move कराया जा सकता है
- किसी खास programming language का महत्व बहुत बड़ा नहीं था, और इतने छोटे कोर्स में भी छात्र Forth को प्रभावी ढंग से सीख सके
- हर छात्र के लिए उपयुक्त paradigm अलग हो सकता है, इसलिए learning process को पूरी तरह fine-tune करना मुश्किल है
- ऐसा environment महत्वपूर्ण है जिसमें परिणाम जल्दी और बार-बार देखे जा सकें और self-directed exploration संभव हो
- छात्रों को कंप्यूटर विज्ञान की बुनियादी data structures को गहराई से समझने वाला एक low-level शुरुआती अनुभव मिला
- कक्षा चलाने वाले के लिए भी यह teaching method को उसी तरह सुधारने का अवसर बना, जैसी दोहराव-आधारित learning छात्रों से अपेक्षित थी
LLM युग में ज़रूरी human-centered learning
- जैसे-जैसे programming probabilistic automation से संचालित होती जाती है, लोगों को खुद programming करना सिखाना और अधिक महत्वपूर्ण हो जाता है
- जो लोग पहले से programming जानते हैं, वे भी अगर LLM पर निर्भर हो जाएँ तो skills कमजोर हो सकती हैं, और जो लोग शुरुआत से नहीं सीखते, वे शायद ये skills बना ही न पाएं
- नई skills सीखना चाहने वाले लोग भी प्रतिष्ठित सामग्री की बजाय LLM का उपयोग अधिक करने लगे हैं
- LLM गलत हो सकते हैं, उनमें user को खुश करने की प्रवृत्ति हो सकती है, और कुछ मामलों में वे मानसिक रोग को गंभीर रूप से बढ़ा सकते हैं
- दुनिया के साथ interact करना सीख रहे बच्चों के लिए ये गुण और भी अधिक खतरनाक हैं
- पृष्ठभूमि चाहे जो हो, सभी लोगों—विशेषकर बच्चों—को programming जैसी skills सीखने के लिए human-centered environment उपलब्ध कराया जाना चाहिए
- अलग-अलग पृष्ठभूमि वाले लोगों को समय और ऊर्जा लगाकर ज्ञान साझा करना होगा, और यह भी सिखाना होगा कि अतिरिक्त ज्ञान सुरक्षित तरीके से कैसे प्राप्त किया जाए
- विशेषज्ञ शिक्षक न होने पर भी लोगों को सिखाने का तरीका सीखना चाहिए, और ऐसे स्थान बनाने चाहिए जहाँ लोगों के बीच ज्ञान स्वतंत्र रूप से प्रवाहित हो
1 टिप्पणियां
Lobste.rs की राय
Easy Forth एक अच्छा संसाधन लगता है, और मैं सिफारिश करता हूँ कि हर प्रोग्रामर 10 मिनट निकालकर Forth का अनुभव करे। यह सीखने में बहुत सरल, साथ ही परिचित होते हुए भी सोचने का तरीका हिला देने वाली भाषा है, और जब किसी high-level language को शुरू से जल्दी बनाना हो तो इसे implement करना भी आसान है
DOES>जैसे तत्व ऐसे नहीं हैंForth को implement करना मज़ेदार था, लेकिन जितना ज़्यादा code लिखा, उतना कम पसंद आया।
DUP,ROT,SWAPजैसे शोर पैदा करने वाले शब्दों की वजह से flow को follow करना कठिन हो जाता है, और यह global variables के उपयोग को भी बढ़ावा देता है, जो मुझे पसंद नहींhttps://archive.ph/0ZOVa