4 puan yazan GN⁺ 2023-09-06 | 1 yorum | WhatsApp'ta paylaş
  • Watlings, çok sayıda küçük programı düzelterek WebAssembly Text Format öğrenmeye yönelik bir alıştırma projesidir
  • Her görev, exercises dizinindeki yönergeler izlenerek tamamlanır ve yanıtlar npm start 001_hello ile test edilir
  • Çözümü kontrol etmek için npm run show 001_hello, çözümü doğrudan göreve uygulamak için npm run solve 001_hello komutu kullanılır
  • Derleme ve test için Node 23+ ve wasm-tools kullanılır; betiklerin içinde wasm-tools parse çağrılır
  • 015 numaralı görevden sonraki görevler exception handling, GC types gibi daha yeni WebAssembly özelliklerini kullanır ve yalnızca Node.js 23 ve üzeri sürümlerde sunulan --experimental-wasm-exnref bayrağını gerektirir
  • Tarayıcıda çalıştırılabilen bir web sürümü sunulur; editör olarak VSCode ve wat-lsp eklentisinin kullanılması önerilir
  • Öğrenme yöntemi, dosya başına yorumlarla yapılacak işi ve arka planı sunan, açıklamayı olabildiğince azaltan ve sözdizimine farklı bağlamlarda tekrar tekrar maruz bırakan doğrudan yazma odaklı bir yaklaşımdır
  • Proje yapısı için referans örnekler olarak rustlings ve Ziglings belirtilir

1 yorum

 
GN⁺ 2023-09-06
Hacker News yorumları
  • Bunu sık sık birçok yerde görüyorum ama tarayıcıdaki WASM’de eksik olan şey yalnızca DOM erişimi değil; fetch veya XMLHttpRequest dâhil neredeyse tüm web API’leri
    Tarayıcının desteklediği ama WASM’in desteklemediği web API’lerinin listesi burada; DOM bunlardan yalnızca biri: https://developer.mozilla.org/en-US/docs/Web/API
    Yine de GC kesinleşip tarayıcılar tarafından desteklenirse bu arayüzleri kullanma ihtimali var. GC desteklendiğinde WebAssembly kodunun JavaScript, DOM ve genel WebIDL tanımlı nesnelere referans verebileceği ve erişebileceği belirtiliyor
    Son paragrafa bakın: https://webassembly.org/docs/web/

  • Exercism modeline çok benziyor. Exercism’de de küçük alıştırmalarla dolu ücretsiz bir WASM kursu var: https://exercism.org/tracks/wasm
    Yazarın o kursa katkıda bulunmayı ya da birlikte çalışmayı düşünüp düşünmediğini merak ediyorum. Böylece daha geniş bir okur kitlesine ulaşabilir ve Exercism’in mevcut araçlarından da yararlanabilir gibi duruyor

    • Exercism’i gerçekten seviyorum ama oradaki alıştırma modeli çok daha serbest biçimli; daha büyük parçalar hâlinde ve görece daha az öğretici
      Belirli bağlamlarda iyi bir model, ancak bu deponun formatı kod örnekleriyle birlikte söz dizimi ve özellikleri öğreten rustlings veya ziglingse daha yakın
      Exercism’in Wasm modülü ille de “bozuk” değil; bu yüzden katkımın memnuniyetle karşılanıp karşılanmayacağından emin değilim
    • Exercism’de hoşuma gitmeyen şey, popüler diller dışında alıştırmaların genelde sistemli olmaması
      Başka bir deyişle, zorluk seviyesine göre sıralanmış LeetCode tarzı bir problem demetine daha yakın
      Düzgün bir kursta alıştırmalar dil özelliklerine göre düzenlenmeli. Exercism bunun için zaten harika bir arayüz oluşturmuş, ancak çoğu dilde kullanılmıyor: https://exercism.org/tracks/csharp/concepts
  • Yeni bir dil veya framework öğrenirken sevdiğim yöntemlerden biri koans; bu da onu hatırlatıyor: https://github.com/ahmdrefat/awesome-koans/blob/master/koans...
    Temel özelliklerden ileri özelliklere doğru yumuşakça ilerlemesi, testin başarısız olduğunu görüp nedenini anladıktan sonra düzeltmeye dayanan TDD tarzı akışın öğrenmeye iyi uyması. “Aha!” anının dopaminini de veriyor

    • Tek başına dil öğrenmek için iyi bir yöntem gibi geliyor. Ne yazık ki Rust eksik; önerebileceğiniz bir bağlantı var mı merak ediyorum
  • WASM’in GC gibi özelliklerini denemek istiyorsanız WABT yerine Binaryen’in wasm-opt aracını kullanmak daha iyi. wasm-opt çok daha fazla WASM uzantısını destekliyor

  • Oldukça hoş
    WASM’i doğrudan derinlemesine kurcalamadım ama bu rehberi denemeyi düşünüyorum; aradan birkaç yıl geçmişken web geliştirmeye büyük fayda sağladığını düşünüyorum
    Bazılarının beklediği “JavaScript katili” değil ama zaten amacı da bu değildi. Bunun yerine mevcut ekosistemle epey iyi entegre olup mevcut kullanım senaryolarını optimize ediyor; ağır hesaplama gerektiğinde de yeni kullanım senaryolarını mümkün kılıyor
    Tüm web geliştiriciler için net bir kazanım. Daha hızlı kütüphaneler, etkileyici geliştirme araçları ve daha taşınabilir Node ikili dosyaları ortaya çıktı

    • WASM’i uzaktan takip ettim; JS katili olmamasının nedeni DOM’a veya DOM API’lerinin çoğuna doğrudan erişememesi diye anlıyorum
      Kaçırdığım başka bir neden var mı merak ediyorum
  • WebAssembly’nin benimsenmesinin ilerlemeye devam etmesi sevindirici. Burada Microsoft genelde kısa kısa ele alınıyor ama WASM ile ilgileniyorsanız Blazor WebAssembly’yi mutlaka denemenizi öneririm
    C#’ı, .NET kütüphanelerinin çoğunu ve NuGet paketlerini tarayıcıda derlenmiş WASM olarak kullanmanızı sağlayan çok güçlü bir framework

    • “NuGet paketlerinin çoğu” derken sınırların ne olduğunu merak ediyorum
      Diskteki dosyaları okuyabilmesi gereken bir paketse doğrudan başarısız mı oluyor, yoksa dosya okuma arayüzü davranışı sunucu tarafı render gibi bir yönteme mi devrediyor, merak ediyorum
    • Okuduğum kadarıyla Go’yu WASM’e derlerken yaşananla aynı sorun var gibi görünüyor. Payload büyük ve sıkıştırıldıktan sonra bile genelde birkaç MB oluyor
  • Harika bir proje
    Bir ölçüde ilgili bir depoyu burada sürdürüyorum: https://github.com/eliben/wasm-wat-samples/

    • Gerçekten faydalı görünüyor. İlk kez wat öğrenirken bunu bilmiş olmayı isterdim; harika bir başvuru kaynağı olacak gibi
  • WASM’i denedim ama yerelde bağlanmaya çalıştığım SQLite veritabanı bağlantısını dışa açarken sorun yaşadım
    Benzer bir şey yapmış biri var mı ya da iyi kaynak önerebilecek olan var mı merak ediyorum

  • WebAssembly’nin elle bir ölçüde yazılabilecek gerçek bir dil gibi görünmesi gerçekten ilginç
    Hedef olarak seçildiğinde giriş engelini epey düşürecek gibi

  • WebAssembly çeşitli ekosistemlerin ortak dili hâline geldikçe, nasıl çalıştığına sağlam bir anlayış geliştirmek için zaman ayırmanın değeri artıyor