24 คะแนน โดย GN⁺ 2023-11-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำ WebAssembly (Wasm)

  • WebAssembly (Wasm) คือไบต์โค้ดระดับล่างแบบทั่วไปที่ทำงานบนเว็บ
  • เป็นเป้าหมายการคอมไพล์ของหลายภาษา เช่น Rust, AssemblyScript (คล้าย Typescript), Emscripten (C/C++), TinyGo (Go)
  • ปัจจุบันรองรับในเบราว์เซอร์หลักทุกตัว และมีรันไทม์สำหรับรันบนเซิร์ฟเวอร์หรือเชื่อมต่อกับระบบผ่าน WASI
  • Wasm มีรูปแบบไบนารีขนาดเล็ก พร้อมประสิทธิภาพที่คาดการณ์ได้และความสามารถในการพกพา โดยสามารถทำงานร่วมกับ JavaScript และภาษาโฮสต์อื่น ๆ ได้

'Wasm By Example' คืออะไร?

  • 'Wasm By Example' เป็นบทแนะนำ WebAssembly แบบกระชับและใช้งานได้จริง โดยใช้โค้ดสั้น ๆ และโปรแกรมตัวอย่าง WebAssembly ที่มีคำอธิบายประกอบ
  • มีทั้งตัวอย่างที่อธิบายแนวคิดพื้นฐานของ WebAssembly และตัวอย่างที่แสดงวิธีนำแนวคิดเหล่านั้นไปสร้างฟังก์ชันทั่วไปของแอปพลิเคชันขนาดใหญ่ขึ้น

ตัวอย่างแนวคิดหลักของ WebAssembly (Wasm)

  • มีตัวอย่างที่นำเสนอแนวคิดพื้นฐานสำคัญของ WebAssembly
  • ตัวอย่างเหล่านี้อาจไม่ใช่วิธีที่สะดวกหรือเพิ่มประสิทธิภาพการทำงานมากที่สุดในการสร้างโปรเจ็กต์ด้วย WebAssembly แต่เหมาะสำหรับการเรียนรู้หรือการพัฒนาส่วนที่เรียบง่ายหรือระดับล่างของแอปพลิเคชัน
    • Hello World
    • Exports
    • WebAssembly Linear Memory
    • Importing Javascript Functions Into WebAssembly

ตัวอย่างการประยุกต์ใช้แนวคิด

  • ขยายจากตัวอย่างเชิงแนวคิดเพื่อแสดงให้เห็นว่าตัวอย่างเรียบง่ายเหล่านี้สามารถใช้สร้างความสามารถทั่วไปของแอปพลิเคชันขนาดใหญ่ได้อย่างไร
    • Reading and Writing Graphics
    • Reading and Writing Audio

ตัวอย่างเครื่องมือในอีโคซิสเต็มและความสามารถของภาษา

  • มีตัวอย่างที่เน้นเครื่องมือ ไลบรารี และความสามารถของภาษาที่เลือกใช้
    • Passing High Level Data Types with wasm-bindgen
  • องค์ประกอบในอีโคซิสเต็มเหล่านี้สามารถช่วยได้มากในการสร้างแอปพลิเคชันที่ทรงพลัง

ตัวอย่าง WebAssembly (Wasm) นอกเว็บเบราว์เซอร์

  • มีตัวอย่างที่เน้น WebAssembly System Interface (WASI), รันไทม์ WebAssembly แบบสแตนด์อโลน, เครื่องมือสำหรับแอปพลิเคชันที่ใช้ WASI และกรณีการใช้งานสำหรับงานอย่างคลาวด์คอมพิวติ้งและอุปกรณ์ Internet of Things (IoT)
  • WebAssembly มีความสามารถหลักที่เหมาะกับเว็บบนเบราว์เซอร์ และความสามารถเหล่านี้ก็ทำให้มันเป็นตัวเลือกที่ได้รับความนิยมแม้นอกเบราว์เซอร์ด้วย
    • WASI Introduction
    • WASI Hello World

ความเห็นของ GN⁺

ประเด็นสำคัญที่สุดของบทความนี้คือ WebAssembly (Wasm) เป็นเป้าหมายการคอมไพล์สำหรับภาษาโปรแกรมที่หลากหลาย และมีความอเนกประสงค์พอที่จะใช้งานได้ไม่เฉพาะในเว็บเบราว์เซอร์ แต่รวมถึงบนเซิร์ฟเวอร์และระบบประเภทต่าง ๆ ด้วย 'Wasm By Example' แสดงให้เห็นอย่างชัดเจนว่าเหตุใดเทคโนโลยีนี้จึงน่าสนใจและมีเสน่ห์ โดยนำเสนอตัวอย่างที่ใช้งานได้จริงซึ่งช่วยให้วิศวกรซอฟต์แวร์ระดับเริ่มต้นเข้าใจ WebAssembly ได้ง่ายและลองนำไปใช้ได้จริง ความสามารถในการพกพาและประสิทธิภาพของ WebAssembly เป็นองค์ประกอบสำคัญของการพัฒนาเว็บสมัยใหม่ และบทความนี้ก็มอบข้อมูลที่เป็นประโยชน์สำหรับผู้ที่ต้องการเรียนรู้เทคโนโลยีนี้

1 ความคิดเห็น

 
GN⁺ 2023-11-17
ความเห็นบน Hacker News
  • เป็นกรณีการใช้งานที่น่าสนใจของการใช้ WASM เพื่อสร้างไลบรารีที่เขียนด้วยภาษาหลากหลาย แล้วนำไปอิมพอร์ตและใช้งานจากภาษาอื่น
  • ชุดคำสั่งของ WASM ที่รองรับในเบราว์เซอร์หลักทั้งหมดนั้นน่าสนใจ แต่ก็มีการตั้งคำถามว่าเหตุใดแม้แต่เดโม hello_world แบบง่าย ๆ ก็ยังสร้างหน้าเว็บขนาดหลายเมกะไบต์
  • มีความเห็นว่าควรมีภาพรวมและคำอธิบายเกี่ยวกับโครงสร้างและการใช้งานของ WASM พร้อมตัวอย่างประกอบ นอกจากนี้ยังกล่าวถึงว่า Cloudflare Workers สามารถรัน WASM บน edge server ได้ และชุมชน Swift ก็รองรับการคอมไพล์ไปยัง WASM เช่นกัน
  • มีข้อเสนอว่าการเพิ่มหมวดหมู่เกี่ยวกับไวยากรณ์ S-expr ของ WebAssembly จะเป็นประโยชน์ต่อการทำความเข้าใจหัวข้อนี้
  • มีผู้เขียนคู่มืออธิบายวิธีทำให้การดีบัก WASM บน VSCode ใช้งานได้ โดยใช้ส่วนขยายการดีบัก WASM DWARF แบบใหม่
  • หนังสือ 'WASM from the Ground Up' ซึ่งสอนเรียนรู้ WASM ผ่านการสร้างคอมไพเลอร์ด้วยตนเองกำลังอยู่ระหว่างจัดทำ และจนถึงตอนนี้ก็ให้ข้อมูลที่เป็นประโยชน์มาก
  • มีความเห็นที่สงสัยว่า someday WASM จะเข้ามาแทนที่ JavaScript ในเบราว์เซอร์หรือไม่
  • มีการโพสต์ตัวอย่างเดโม Unity ที่ทำงานด้วย WASM และ WebGPU บน Hacker News
  • มีผู้ที่กำลังประสบความยากลำบากในการค้นหาข้อมูลเกี่ยวกับคอมไพเลอร์สำหรับ WASM assembler
  • มีการแสดงความประหลาดใจว่าตัวอย่าง add แบบง่าย ๆ ที่เขียนด้วยภาษาที่ไม่ใช่ JavaScript โดยใช้ WASM นั้นมีความสามารถเชิงโต้ตอบที่รับพารามิเตอร์ตอนรันไทม์ได้