Watlings - छोटे प्रोग्राम ठीक करते हुए WebAssembly Text Format सीखें
(github.com/EmNudge)- Watlings एक अभ्यास प्रोजेक्ट है, जिसमें कई छोटे प्रोग्राम ठीक करते हुए WebAssembly Text Format सीखा जाता है
- हर अभ्यास
exercisesडायरेक्टरी के अंदर दिए गए निर्देशों के अनुसार पूरा किया जाता है, औरnpm start 001_helloसे उत्तर को टेस्ट किया जाता है - समाधान देखने के लिए
npm run show 001_hello, और समाधान को सीधे अभ्यास पर लागू करने के लिएnpm run solve 001_helloकमांड का उपयोग किया जाता है - कंपाइल और टेस्ट के लिए Node 23+ तथा wasm-tools का उपयोग होता है, और स्क्रिप्ट के भीतर
wasm-tools parseकॉल किया जाता है - 015 नंबर के बाद के अभ्यास exception handling, GC types जैसी नई WebAssembly सुविधाओं का उपयोग करते हैं, और इनके लिए Node.js 23 या उससे ऊपर में उपलब्ध
--experimental-wasm-exnrefफ़्लैग की आवश्यकता होती है - ब्राउज़र में चलने वाला वेब वर्ज़न उपलब्ध है, और एडिटर के रूप में VSCode तथा wat-lsp एक्सटेंशन की सिफारिश की जाती है
- सीखने का तरीका फ़ाइल-आधारित टिप्पणियों के जरिए काम और पृष्ठभूमि बताता है, संभव हो तो व्याख्या कम रखता है, और अलग-अलग संदर्भों में सिंटैक्स से बार-बार परिचित कराने वाला सीधे लिखने पर केंद्रित दृष्टिकोण अपनाता है
- प्रोजेक्ट संरचना के संदर्भ उदाहरण के रूप में rustlings और Ziglings का उल्लेख किया गया है
1 टिप्पणियां
Hacker News टिप्पणियाँ
मैं इसे इधर-उधर अक्सर देखता हूँ, लेकिन ब्राउज़र के WASM में जो चीज़ गायब है वह सिर्फ़ DOM access नहीं है, बल्कि
fetchयाXMLHttpRequestसमेत लगभग सभी web API हैंब्राउज़र जिन web API को सपोर्ट करता है लेकिन WASM नहीं करता, उनकी सूची यहाँ है, और DOM उनमें से सिर्फ़ एक है: https://developer.mozilla.org/en-US/docs/Web/API
फिर भी अगर GC तय होकर ब्राउज़र में सपोर्ट हो जाए, तो ऐसे interfaces इस्तेमाल करने की संभावना है। कहा गया है कि GC सपोर्ट होने पर WebAssembly code JavaScript, DOM और सामान्य WebIDL-defined objects को reference और access कर सकेगा
आख़िरी paragraph देखें: https://webassembly.org/docs/web/
इससे जो possibilities खुल सकती हैं, उन्हें देखते हुए progress बहुत ज़्यादा समय ले रही लगती है
Exercism model से काफ़ी मिलता-जुलता लगता है। Exercism में भी छोटी exercises से भरा एक मुफ्त WASM course है: https://exercism.org/tracks/wasm
सोचता हूँ कि author ने उस course में contribute करने या साथ काम करने पर विचार किया था या नहीं। ऐसा करने से यह ज़्यादा बड़े audience तक पहुँच सकता है और Exercism के मौजूदा tools का भी फायदा मिल सकता है
कुछ contexts में यह अच्छा model है, लेकिन इस repository का format
rustlingsयाziglingsके ज़्यादा करीब है, जहाँ code examples के साथ syntax और features सीखे जाते हैंExercism का Wasm module ऐसा नहीं है कि ज़रूर “broken” हो, इसलिए मुझे नहीं पता कि मेरा contribution welcome होगा या नहीं
दूसरे शब्दों में, वे difficulty के हिसाब से sorted LeetCode-style problem sets जैसी होती हैं
एक proper course में exercises को language features के हिसाब से arrange करना चाहिए। Exercism ने इसके लिए पहले से एक बढ़िया interface बनाया है, लेकिन ज़्यादातर languages में इसका इस्तेमाल नहीं होता: https://exercism.org/tracks/csharp/concepts
नई language या framework सीखते समय मेरे पसंदीदा तरीकों में से एक koans है, और यह उसी की याद दिलाता है: https://github.com/ahmdrefat/awesome-koans/blob/master/koans...
basic features से advanced features तक smoothly ऊपर जाना, tests fail होते देखना, वजह समझना और फिर fix करना—यह TDD-style flow सीखने के लिए अच्छा बैठता है। “आहा!” वाले moment का dopamine भी देता है
WASM की GC जैसी features experiment करनी हों तो WABT के बजाय Binaryen का
wasm-optइस्तेमाल करना बेहतर है।wasm-optकहीं ज़्यादा WASM extensions सपोर्ट करता हैकाफ़ी cool है
मैंने WASM को सीधे गहराई से नहीं छुआ है, लेकिन इस guide को एक बार try करने का सोच रहा हूँ, और अब जबकि कई साल बीत चुके हैं, मुझे लगता है कि इसने web development को बड़ा फायदा दिया है
यह वह “JavaScript killer” नहीं है जिसकी कुछ लोगों ने उम्मीद की थी, लेकिन शुरुआत से उसका मकसद भी वह नहीं था। इसके बजाय यह मौजूदा ecosystem के साथ काफ़ी अच्छी तरह integrate होता है, existing use cases को optimize करता है, और भारी computation की ज़रूरत हो तो नए use cases भी संभव बनाता है
हर web developer के लिए यह net positive है। तेज़ libraries, impressive developer tools, और ज़्यादा portable Node binaries मिलते हैं
सोचता हूँ क्या कोई और वजह है जो मैं miss कर रहा हूँ
WebAssembly adoption का लगातार आगे बढ़ना अच्छा लग रहा है। यहाँ Microsoft को अक्सर छोटी बात मानकर लिया जाता है, लेकिन अगर WASM में interest है तो Blazor WebAssembly को ज़रूर experiment करके देखें
यह बहुत powerful framework है, जो C# और अधिकांश .NET libraries, यहाँ तक कि NuGet packages को भी browser में compiled WASM के रूप में इस्तेमाल करने देता है
अगर किसी package को disk पर files पढ़नी पड़ती हों, तो क्या वह सीधे fail हो जाएगा, या file read interface behavior को server-side rendering जैसे किसी तरीके पर hand off करता है?
शानदार project है
मैं कुछ हद तक related repository यहाँ maintain कर रहा हूँ: https://github.com/eliben/wasm-wat-samples/
मैंने WASM try किया, लेकिन locally connect करने की कोशिश कर रहे SQLite database connection को expose करने में problem आई
सोचता हूँ क्या किसी ने ऐसा कुछ किया है या कोई अच्छा resource बता सकता है
यह सच में दिलचस्प है कि WebAssembly हाथ से कुछ हद तक लिखी जा सकने वाली real language जैसा दिखता है
target बनाते समय यह entry barrier को काफ़ी कम कर देगा
जैसे-जैसे WebAssembly कई ecosystems की common language बनता जा रहा है, इसके काम करने के तरीके की solid समझ बनाने में समय लगाना और भी valuable होता जा रहा है