랭킹으로 돌아가기

EmNudge/watlings

JavaScriptwatlings.emnudge.dev

Learn WebAssembly by writing small programs!

exercisesguidelearningwasmwastwatwebassembly
스타 성장
스타
1.8k
포크
45
주간 성장
이슈
1
5001k1.5k
2023년 8월2024년 7월2025년 7월2026년 7월
아티팩트npmnpm install watlings
README

Watlings

Learn the WebAssembly Text Format by fixing a bunch of small programs!

Try it in your browser!


Example Exercise


Usage

This project uses Node 23+ & wasm-tools for compilation and testing.

Note: Later exercises (015+) use newer WebAssembly features like exception handling and GC types that require the --experimental-wasm-exnref flag, which is only available in Node.js 23 and later.


git clone git@github.com:EmNudge/watlings.git
cd watlings

Complete lessons by following the instructions in each exercise within the exercises directory.

Test your answer to an exercise with the start command:

npm start 001_hello

If you'd like to view the solution to an exercise, use the show command:

npm run show 001_hello

To apply it directly to the exercise, use solve instead of show:

npm run solve 001_hello

We recommend using VSCode with the wat-lsp extension.

This should provide syntax highlighting, intellisense, and other helpful features as you work through the exercises.

Using wasm-tools CLI

To compile your WAT code, this project uses the wasm-tools CLI.

Install wasm-tools and ensure wasm-tools is on your PATH. The scripts will invoke wasm-tools parse under the hood.

See install instructions: wasm-tools


Motivations

I've found just diving in to be the best way to build experience with programming.

Rustlings & Ziglings have both had tremendous returns to my journeys with both languages.

WebAssembly (and by extension WAT) has a more sparse educational landscape than most and I was hoping to fill some of the gaps by building a project with the same sort of structure.


Pedagogical Philosophy

Outlined here are some thoughts on what makes a good teaching experience.

Typing Over Reading

The goal is to learn by doing. Comments on each file outline a task and some background. However, a lot about a language can be gleaned by its syntax alone. We should be adding as little explanation as possible.

Occasional gaps in knowledge can be filled by consistent exposure to the syntax within different contexts. Certain things can therefore be learned without any mention.

Introduction text is superfluous. Words add visual noise, so we should be careful with our count. Coding itself should supplement ambiguities in the text.

If you find a text confusing or too verbose, please create a discussion post!

Create Struggle

Studies have shown that one cannot learn effectively without effort. This applies to practically every domain of knowledge. These projects should be educational, not easy.

This does not mean we should make the education itself elusive. We should not make learning more difficult, but instead more intentional.

When introducing a lot of new syntax, keep the problem scope small, but force the user to read a bit. If the syntax is not new, increase the problem scope. Maybe many variations of the same task.


Credits

관련 저장소
rust-lang/rustlings

:crab: Small exercises to get you used to reading and writing Rust code!

Rustcrates.ioMIT Licenserustrustlings
rustlings.rust-lang.org
63.6k11.2k
inancgumus/learngo

❤️ 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. 🚀 Learn Go by fixing 1000+ tiny programs.

GoGo ModulesOthergolanggo
twitter.com/inancgumus
20.1k2.7k
hasaneyldrm/exercises-dataset

1,324-exercise fitness dataset — animation GIFs, 180×180 thumbnails, muscle-group & equipment data, and step-by-step instructions in 6 languages. The exercise data layer behind the LogPress app.

HTMLOtherfitnessfitness-app
16.5k2k
sunface/rust-by-practice

Learning Rust By Practice, narrowing the gap between beginner and skilled-dev through challenging examples, exercises and projects.

Rustcrates.ioCreative Commons Attribution 4.0 Internationalrustpractice
practice.course.rs
14.7k1.2k
rougier/numpy-100

100 numpy exercises (with solutions)

PythonPyPIMIT Licensepythonnumpy
14.3k6.8k
mainmatter/100-exercises-to-learn-rust

A self-paced course to learn Rust, one exercise at a time.

Rustcrates.ioexerciseslearning-by-doing
rust-exercises.com
9.4k2.1k
labex-labs/python-cheatsheet

Python Cheatsheet - interactive hands-on course by LabEx.

VueMIT Licensepythoncourse
labex.io/courses/python-cheatsheet
4.9k1.3k
ratfactor/ziglings

Learn the Zig programming language by fixing tiny broken programs.

MIT Licenseexerciseslearning-by-doing
4.7k462
alexgurr/react-coding-challenges

A series of ReactJS coding challenges with a variety of difficulties.

SCSScoding-challengesjavascript
3.4k1.1k
learnbyexample/py_regular_expressions

Learn Python Regular Expressions step by step from beginner to advanced levels

PythonPyPIMIT Licensepythonregular-expressions
learnbyexample.github.io/py_regular_expressions/
1.8k229
ptyadana/SQL-Data-Analysis-and-Visualization-Projects

SQL data analysis & visualization projects using MySQL, PostgreSQL, SQLite, Tableau, Apache Spark and pySpark.

Jupyter NotebookMIT Licensesqlmysql
1.8k574
mcpp-community/d2mcpp

D2X | Modern C++ Core Language Features - "A C++ tutorial project focused on practical"

C++Othercoursecpp
mcpp.d2learn.org
1.7k111