Watlings - Küçük programları düzelterek WebAssembly Text Format öğrenme
(github.com/EmNudge)- Watlings, çok sayıda küçük programı düzelterek WebAssembly Text Format öğrenmeye yönelik bir alıştırma projesidir
- Her görev,
exercisesdizinindeki yönergeler izlenerek tamamlanır ve yanıtlarnpm start 001_helloile test edilir - Çözümü kontrol etmek için
npm run show 001_hello, çözümü doğrudan göreve uygulamak içinnpm run solve 001_hellokomutu 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-exnrefbayrağı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
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;
fetchveyaXMLHttpRequestdâhil neredeyse tüm web API’leriTarayı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/
Açabileceği imkânlar düşünüldüğünde ilerleyiş çok uzun sürüyor gibi görünüyor
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
Belirli bağlamlarda iyi bir model, ancak bu deponun formatı kod örnekleriyle birlikte söz dizimi ve özellikleri öğreten
rustlingsveyaziglingse daha yakınExercism’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
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
WASM’in GC gibi özelliklerini denemek istiyorsanız WABT yerine Binaryen’in
wasm-optaracını kullanmak daha iyi.wasm-optçok daha fazla WASM uzantısını destekliyorOldukç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ı
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
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
Harika bir proje
Bir ölçüde ilgili bir depoyu burada sürdürüyorum: https://github.com/eliben/wasm-wat-samples/
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