Code Monkey home page Code Monkey logo

watlings's Introduction

Watlings

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


Button Roadmap


Example Exercise


Warning

This project is incomplete and in active development.
Feel free to help out by filing issues and creating PRs!



Usage

This project uses Node 16+ & NPM for compilation and testing.


Clone the repository and install dependencies with:

git clone [email protected]:EmNudge/watlings.git
cd watlings
npm install

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 solve command:

npm run solve 001_hello

Using Wat2Wasm Directly ( Recommended )

For syntax highlighting and up-to-date builds, you can optionally use the official WebAssembly Binary Toolkit which will provide you with a wat2wasm CLI tool.

If it is found on your path as wat2wasm, it will be used instead of NPM WABT.

While it is strictly optional, it can help with debugging.


Recommended Editor

We recommend using VSCode with the WATI extension.

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


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

watlings's People

Contributors

emnudge avatar phonedroid avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.