บทนำ: WebAssembly คืออะไร?
WebAssembly (Wasm) คือ รูปแบบคำสั่ง binary แบบพกพา ที่ออกแบบมาสำหรับ virtual machine แบบ stack-based ไม่ใช่ภาษาโปรแกรมที่คุณเขียนด้วยมือในการใช้งานจริง แต่เป็น compilation target: binary ที่กะทัดรัดและผ่านการตรวจสอบแล้ว ซึ่ง browser, server และ edge runtime สามารถโหลดและรันได้ด้วยความเร็วใกล้เคียง native
ลองนึกภาพแบบเดียวกับ bytecode ใน JVM หรือ CLR แต่ถูกออกแบบให้เป็น vendor-neutral และรันได้ทุกที่ ไม่ว่าจะเป็น Chrome, Firefox, Safari, Node.js, Deno, Cloudflare Workers และอื่นๆ อีกมาก
คอร์สนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “คอร์สนี้ครอบคลุมอะไรบ้าง”คอร์สนี้พาคุณจากผู้ไม่มีความรู้เลยไปสู่การเป็น Wasm practitioner ที่มั่นใจ ต่อไปนี้คือสิ่งที่แต่ละ module ครอบคลุม:
| Module | หัวข้อ |
|---|---|
| 1 — บทนำ | Wasm คืออะไร, ความสัมพันธ์ binary/text, โมเดล stack VM |
| 2 — WAT Text Format | การเขียน WebAssembly Text format ด้วยมือเพื่อทำความเข้าใจพื้นฐาน |
| 3 — JS Interop | การเรียก Wasm จาก JavaScript และการรับส่งข้อมูลระหว่างกัน |
| 4 — Linear Memory | หลักการทำงานของ flat memory model ของ Wasm และการแชร์กับ JS |
| 5 — Languages to Wasm | การคอมไพล์ Rust, C/C++ และ AssemblyScript เป็น .wasm |
| 6 — Tooling | wasm-pack, wasm-bindgen, emcc, การปรับแต่ง, การ debug |
| 7 — WASI | WebAssembly System Interface — การรัน Wasm นอก browser |
ซอร์สโค้ดกลายเป็นไฟล์ .wasm binary ได้อย่างไร
หัวข้อที่มีชื่อว่า “ซอร์สโค้ดกลายเป็นไฟล์ .wasm binary ได้อย่างไร”ไฟล์ .wasm ทุกไฟล์เริ่มต้นจากซอร์สโค้ดในภาษาระดับสูง คอมไพเลอร์อ่านซอร์สนั้นและสร้าง binary กะทัดรัดที่ runtime โหลดโดยตรง
flowchart LR A["Rust / C / C++ / AssemblyScript"] --> B["Compiler (rustc / emcc / asc)"] B --> C[".wasm binary"] C --> D["Browser (JS + Wasm API)"] C --> E["Server / Edge (Node.js / WASI)"]