4 पॉइंट द्वारा GN⁺ 2023-09-06 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2023-09-06
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/

    • GC proposal 2018 में आया था https://github.com/WebAssembly/proposals/issues/16, और code भी है: https://github.com/WebAssembly/gc/blob/master/proposals/gc/O...
      इससे जो possibilities खुल सकती हैं, उन्हें देखते हुए progress बहुत ज़्यादा समय ले रही लगती है
    • अगर उसे “solve” कर दिया गया, तो अगला Java Applets बनने का जोखिम भी है
    • मैंने WebAssembly को लगातार follow नहीं किया है, लेकिन JS का पुराना “इलाज” बताई गई चीज़ को basic features पाने में इतना समय क्यों लगा, यह सोचता हूँ
  • Exercism model से काफ़ी मिलता-जुलता लगता है। Exercism में भी छोटी exercises से भरा एक मुफ्त WASM course है: https://exercism.org/tracks/wasm
    सोचता हूँ कि author ने उस course में contribute करने या साथ काम करने पर विचार किया था या नहीं। ऐसा करने से यह ज़्यादा बड़े audience तक पहुँच सकता है और Exercism के मौजूदा tools का भी फायदा मिल सकता है

    • मुझे Exercism सच में बहुत पसंद है, लेकिन वहाँ का exercise model कहीं ज़्यादा free-form है, इसलिए blocks बड़े होते हैं और comparatively कम सिखाते हैं
      कुछ contexts में यह अच्छा model है, लेकिन इस repository का format rustlings या ziglings के ज़्यादा करीब है, जहाँ code examples के साथ syntax और features सीखे जाते हैं
      Exercism का Wasm module ऐसा नहीं है कि ज़रूर “broken” हो, इसलिए मुझे नहीं पता कि मेरा contribution welcome होगा या नहीं
    • Exercism में जो बात मुझे पसंद नहीं है, वह यह है कि popular languages को छोड़कर exercises आम तौर पर systematic नहीं होतीं
      दूसरे शब्दों में, वे 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 भी देता है

    • अकेले language सीखने के लिए यह अच्छा तरीका लगता है। अफ़सोस कि Rust missing है; सोचता हूँ क्या आप कोई link recommend कर सकते हैं
  • 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 मिलते हैं

    • मैंने WASM को दूर से follow किया है, और मेरी समझ में JS killer न होने की वजह यह है कि यह DOM या अधिकांश DOM APIs को directly access नहीं कर सकता
      सोचता हूँ क्या कोई और वजह है जो मैं miss कर रहा हूँ
  • WebAssembly adoption का लगातार आगे बढ़ना अच्छा लग रहा है। यहाँ Microsoft को अक्सर छोटी बात मानकर लिया जाता है, लेकिन अगर WASM में interest है तो Blazor WebAssembly को ज़रूर experiment करके देखें
    यह बहुत powerful framework है, जो C# और अधिकांश .NET libraries, यहाँ तक कि NuGet packages को भी browser में compiled WASM के रूप में इस्तेमाल करने देता है

    • “अधिकांश NuGet packages” कहते समय limitations क्या हैं, यह सोचता हूँ
      अगर किसी package को disk पर files पढ़नी पड़ती हों, तो क्या वह सीधे fail हो जाएगा, या file read interface behavior को server-side rendering जैसे किसी तरीके पर hand off करता है?
    • जितना मैंने पढ़ा है, इसमें वही problem दिखती है जो Go को WASM में compile करने पर आती है। Payload बड़ा होता है, और compression के बाद भी आम तौर पर कई MB रहता है
  • शानदार project है
    मैं कुछ हद तक related repository यहाँ maintain कर रहा हूँ: https://github.com/eliben/wasm-wat-samples/

    • सच में useful लगता है। काश पहली बार wat सीखते समय मुझे यह पता होता; यह बढ़िया reference material बन सकता है
  • मैंने WASM try किया, लेकिन locally connect करने की कोशिश कर रहे SQLite database connection को expose करने में problem आई
    सोचता हूँ क्या किसी ने ऐसा कुछ किया है या कोई अच्छा resource बता सकता है

  • यह सच में दिलचस्प है कि WebAssembly हाथ से कुछ हद तक लिखी जा सकने वाली real language जैसा दिखता है
    target बनाते समय यह entry barrier को काफ़ी कम कर देगा

  • जैसे-जैसे WebAssembly कई ecosystems की common language बनता जा रहा है, इसके काम करने के तरीके की solid समझ बनाने में समय लगाना और भी valuable होता जा रहा है