4 poin oleh GN⁺ 2023-09-06 | 1 komentar | Bagikan ke WhatsApp
  • Watlings adalah proyek latihan untuk mempelajari WebAssembly Text Format sambil memperbaiki berbagai program kecil
  • Setiap tugas diselesaikan dengan mengikuti instruksi di dalam direktori exercises, lalu menguji jawabannya dengan npm start 001_hello
  • Untuk memeriksa solusi gunakan perintah npm run show 001_hello, dan untuk menerapkan solusi langsung ke tugas gunakan npm run solve 001_hello
  • Kompilasi dan pengujian menggunakan Node 23+ serta wasm-tools, dan di dalam skrip memanggil wasm-tools parse
  • Tugas setelah nomor 015 menggunakan fitur WebAssembly yang lebih baru seperti exception handling dan GC types, serta memerlukan flag --experimental-wasm-exnref yang hanya tersedia di Node.js 23 ke atas
  • Tersedia versi web yang bisa dijalankan di browser, dan editor yang direkomendasikan adalah VSCode dengan ekstensi wat-lsp
  • Metode belajarnya menggunakan pendekatan berfokus pada menulis langsung, dengan memberikan tugas dan latar belakang lewat komentar per file, meminimalkan penjelasan, dan membuat pengguna berulang kali terpapar sintaks dalam konteks yang berbeda
  • Sebagai contoh referensi struktur proyek, disebutkan rustlings dan Ziglings

1 komentar

 
GN⁺ 2023-09-06
Komentar Hacker News
  • Saya sering melihat ini di berbagai tempat, tetapi yang kurang dari WASM di browser bukan hanya akses DOM, melainkan hampir semua Web API, termasuk fetch dan XMLHttpRequest
    Daftar Web API yang didukung browser tetapi tidak didukung WASM ada di sini, dan DOM hanyalah salah satunya: https://developer.mozilla.org/en-US/docs/Web/API
    Namun, jika GC sudah dipastikan dan didukung di browser, ada kemungkinan antarmuka seperti ini bisa digunakan. Disebutkan bahwa jika GC didukung, kode WebAssembly dapat merujuk dan mengakses JavaScript, DOM, serta objek biasa yang didefinisikan WebIDL
    Lihat paragraf terakhir: https://webassembly.org/docs/web/

  • Terlihat sangat mirip dengan model Exercism. Exercism juga punya kursus WASM gratis yang diisi latihan-latihan kecil: https://exercism.org/tracks/wasm
    Saya penasaran apakah penulis mempertimbangkan untuk berkontribusi ke kursus itu atau bekerja sama. Dengan begitu, ini bisa menjangkau pembaca yang lebih luas dan memanfaatkan tooling Exercism yang sudah ada

    • Saya sangat menyukai Exercism, tetapi model latihannya di sana jauh lebih bebas, dalam potongan yang jauh lebih besar dan relatif kurang mengajar
      Dalam konteks tertentu itu model yang bagus, tetapi format repositori ini lebih dekat ke rustlings atau ziglings, yang mempelajari sintaks dan fitur bersama contoh kode
      Modul Wasm di Exercism tidak benar-benar “rusak”, jadi saya tidak yakin kontribusi saya akan disambut
    • Hal yang tidak saya sukai dari Exercism adalah, kecuali untuk bahasa populer, latihannya umumnya tidak sistematis
      Dengan kata lain, lebih mirip kumpulan soal ala LeetCode yang diurutkan berdasarkan tingkat kesulitan
      Untuk kursus yang benar, latihan seharusnya disusun berdasarkan fitur bahasa. Exercism sudah membuat antarmuka yang bagus untuk ini, tetapi sebagian besar bahasa tidak memanfaatkannya: https://exercism.org/tracks/csharp/concepts
  • Salah satu cara yang saya sukai saat mempelajari bahasa atau framework baru adalah koans, dan ini mengingatkan saya pada itu: https://github.com/ahmdrefat/awesome-koans/blob/master/koans...
    Alurnya cocok untuk belajar: naik perlahan dari fitur dasar ke fitur lanjutan, melihat tes gagal, memahami alasannya, lalu memperbaikinya dengan gaya TDD. Juga memberi dopamin dari momen “aha!”

    • Kedengarannya seperti cara yang bagus untuk belajar bahasa sendiri. Sayangnya Rust tidak ada; penasaran apakah ada tautan yang bisa direkomendasikan
  • Untuk bereksperimen dengan fitur seperti GC di WASM, lebih baik memakai wasm-opt dari Binaryen daripada WABT. wasm-opt mendukung jauh lebih banyak ekstensi WASM

  • Cukup keren
    Saya belum pernah mengutak-atik WASM secara langsung dan mendalam, tetapi saya berencana mencoba panduan ini, dan menurut saya sekarang, setelah beberapa tahun berlalu, WASM sudah memberi manfaat besar bagi pengembangan web
    Ini bukan “pembunuh JavaScript” seperti yang diharapkan sebagian orang, tetapi memang bukan itu tujuannya sejak awal. Sebaliknya, WASM terintegrasi cukup baik dengan ekosistem yang ada untuk mengoptimalkan use case yang sudah ada, dan ketika perlu komputasi berat, ia juga memungkinkan use case baru
    Ini keuntungan bersih bagi semua web developer. Kita mendapat library yang lebih cepat, development tool yang impresif, dan binary Node yang lebih portabel

    • Saya mengamati WASM dari jauh, dan pemahaman saya, alasan ia bukan pembunuh JS adalah karena tidak bisa mengakses DOM atau sebagian besar DOM API secara langsung
      Saya penasaran apakah ada alasan lain yang saya lewatkan
  • Senang melihat adopsi WebAssembly terus maju. Microsoft sering dibahas sedikit di sini, tetapi jika tertarik dengan WASM, sangat disarankan mencoba Blazor WebAssembly
    Ini framework yang sangat kuat yang memungkinkan C#, sebagian besar library .NET, bahkan paket NuGet, digunakan di browser sebagai WASM terkompilasi

    • Saat mengatakan “sebagian besar paket NuGet”, saya penasaran apa batasannya
      Jika sebuah paket perlu bisa membaca file di disk, apakah langsung gagal, atau apakah antarmuka pembacaan file mengalihkan operasinya ke sesuatu seperti server-side rendering?
    • Dari yang saya baca, tampaknya ada masalah yang sama seperti saat mengompilasi Go ke WASM. Payload-nya besar, dan bahkan setelah dikompresi biasanya beberapa MB
  • Proyek yang keren
    Saya mengelola repositori yang agak terkait di sini: https://github.com/eliben/wasm-wat-samples/

    • Kelihatannya sangat berguna. Andai saya tahu ini saat pertama belajar wat; sepertinya akan menjadi referensi yang bagus
  • Saya pernah mencoba WASM, tetapi mengalami masalah saat mengekspos koneksi database SQLite yang ingin saya hubungkan secara lokal
    Penasaran apakah ada yang pernah melakukan hal serupa atau bisa menunjukkan materi yang bagus

  • Sangat menarik bahwa WebAssembly terlihat seperti bahasa sungguhan yang sampai batas tertentu bisa ditulis dengan tangan
    Sepertinya ini akan cukup menurunkan hambatan masuk saat menjadikannya target

  • Karena WebAssembly menjadi bahasa bersama di berbagai ekosistem, makin layak menginvestasikan waktu untuk memahami cara kerjanya dengan solid