WASM (เว็บแอสเซมบลี) คืออะไร?

ขั้นสูงDec 25, 2023
WebAssembly เป็นเฟรมเวิร์กการพัฒนาเว็บแบบโอเพ่นซอร์ส ค้นหาข้อมูลเพิ่มเติมว่าคืออะไร ประวัติของมัน วิธีการทำงาน และคุณประโยชน์ของมัน
WASM (เว็บแอสเซมบลี) คืออะไร?

อุตสาหกรรม Blockchain เป็นอุตสาหกรรมที่แสวงหาการเติบโตและการปรับปรุงอยู่เสมอ อุตสาหกรรมนี้บูมและพัฒนาเมื่อเร็ว ๆ นี้หลังจากการก่อตั้ง Ethereum ซึ่งขับเคลื่อนโดย Ethereum Virtual Machine (EVM) แม้ว่า EVM จะมีประสิทธิภาพในระดับหนึ่ง แต่ผู้เล่นใหม่เข้ามาในเมืองในรูปแบบของ WebAssembly (WASM) ในบทความนี้ เราจะดูว่า WebAssembly คืออะไร ทำงานอย่างไร และความเชื่อมโยงกับอุตสาหกรรม Cryptocurrency

เว็บแอสเซมบลี (WASM) คืออะไร?

Web Assembly หรือที่เรียกกันอย่างแพร่หลายว่า WASM เป็นเฟรมเวิร์กโอเพ่นซอร์สที่ช่วยให้โปรแกรมเมอร์สามารถใช้ซอร์สโค้ดหรือแก้ไขได้ตามที่นักพัฒนาต้องการ WASM ก้าวไปอีกขั้นด้วยรูปแบบคำสั่งไบนารีสำหรับเครื่องเสมือนแบบสแต็ก (VM) มันถูกใช้เป็นเป้าหมายการคอมไพล์แบบพกพาสำหรับภาษาการเขียนโปรแกรมระดับสูง มันเป็นไบนารี่ออปชั่นขนาดเล็กที่รวดเร็วซึ่งรับประกันประสิทธิภาพที่ใกล้เคียงสำหรับเว็บแอปพลิเคชัน

WebAssembly ได้รับการออกแบบมาเพื่อทำหน้าที่เป็นเป้าหมายในการคอมไพล์สำหรับภาษาใดๆ รวมถึง JavaScript ซึ่งหมายความว่านักพัฒนาสามารถรวบรวมภาษาการเขียนโปรแกรมหลายภาษา เช่น C/C++, Go, Rust และอีกมากมายไว้ในมาตรฐานเดียวที่สามารถเรียกใช้ได้เกือบจะในเบราว์เซอร์โดยเป็นทางเลือกที่ใกล้เคียงกับ JavaScript

นักพัฒนาสามารถใช้ Web Assembly สำหรับกรณีการใช้งานที่มีประสิทธิภาพสูง เช่น เกม การสตรีมเพลง การตัดต่อวิดีโอ และแอปพลิเคชันการออกแบบโดยใช้คอมพิวเตอร์ช่วย (CAD) บริการเว็บหลายแห่งได้นำ WASM มาใช้แล้ว เช่น Google Earth และ Figma

ประวัติความเป็นมาของ WebAssembly

WebAssembly ได้รับการพัฒนาเพื่อแก้ปัญหาความจำเป็นในการปรับปรุงประสิทธิภาพเว็บและความปรารถนาที่จะแนะนำภาษาที่หลากหลายมากขึ้นในแพลตฟอร์มเว็บ ในปี 2558 กลุ่มชุมชน WebAssembly ซึ่งประกอบด้วย Mozilla, Google, Microsoft และ Apple ได้สร้างรูปแบบไบนารีใหม่ ในปี 2017 WebAssembly MVP (ผลิตภัณฑ์ทำงานได้ขั้นต่ำ) ได้รับการเผยแพร่เพื่อสร้างรากฐานที่มั่นคงสำหรับรูปแบบไบนารี โมเดลการดำเนินการ และการผสานรวมเข้ากับแพลตฟอร์มเว็บ

รุ่นถัดไปคือการรองรับเบราว์เซอร์ โดยเบราว์เซอร์หลักๆ เช่น Chrome, Firefox, Safari และ Edge จะรวม WebAssembly ไว้ด้วย นักพัฒนาค้นพบประโยชน์ของเทคโนโลยีภายนอกเว็บเบราว์เซอร์ และเริ่มสำรวจการใช้ WASM ในด้านสภาพแวดล้อมฝั่งเซิร์ฟเวอร์สำหรับการประมวลผลประสิทธิภาพสูง

Web Assembly ทำงานอย่างไร?

หากต้องการทำความเข้าใจว่า WebAssembly ทำงานอย่างไร คุณต้องเข้าใจว่าเอ็นจิ้น JavaScript ทำงานอย่างไร ในการคอมไพล์โค้ด JS เอ็นจิ้นจะทำบางสิ่ง เช่น การส่งโค้ดผ่าน Parser ซึ่งเป็นเครื่องมือที่ต้องผ่านโค้ดทีละบรรทัด ตรวจสอบไวยากรณ์ที่ถูกต้องตลอดจนประเภทโค้ด เมื่อเสร็จแล้ว Parser จะสร้างโครงสร้างข้อมูลแบบต้นไม้ที่เรียกว่า Abstract Syntax Tree (AST)

เมื่อสร้าง AST แล้ว ตัวแปลกลไกจะใช้ AST และแปลงเป็น Bytecode ซึ่งเป็นตัวแทนระดับกลางของโค้ด คอมไพเลอร์ของเครื่องยนต์จะนำ Bytecode มาแปลงเป็นโค้ดที่เครื่องสามารถรันบนโปรเซสเซอร์ได้

WebAssembly ทำงานแตกต่างจาก JavaScript และกล่าวกันว่าเร็วกว่าเนื่องจากโค้ด WASM ส่งตรงไปยังคอมไพเลอร์ ทำให้ข้ามขั้นตอนที่หนึ่งและสองในกระบวนการ JavaScript ได้อย่างมีประสิทธิภาพ เหตุผลก็คือ ไม่เหมือนกับ JavaScript ซึ่งเป็นภาษาที่พิมพ์แบบไดนามิก WASM จะถูกพิมพ์แบบคงที่ ซึ่งหมายความว่าในขณะที่กำลังพิมพ์ภาษา ประเภทต่างๆ จะถูกประกาศล่วงหน้า ดังนั้นจึงทราบและตรวจสอบในเวลารวบรวม

ดังนั้นเมื่อเขียนโค้ด WASM คุณจะต้องเขียนโค้ดตามประเภทของโค้ด ซึ่งโดยปกติแล้วจะเป็นภาษาที่พิมพ์แบบคงที่ จากนั้นคุณสร้างโมดูล WASM ที่คอมไพล์ไว้ล่วงหน้า และสุดท้าย คุณรันโค้ดโดยตรงโดยคอมไพลเลอร์ของกลไก โดยข้ามขั้นตอนการแยกวิเคราะห์และการแปลงไปยังขั้นตอนการเป็นตัวแทนระดับกลาง

คุณสมบัติของ WebAssembly

WebAssembly ได้รับการพัฒนาเพื่อรวบรวมหลายภาษาและว่ากันว่าเร็วกว่า JavaScript เพื่อให้สามารถบรรลุความสำเร็จนี้ได้ จึงได้รับการติดตั้งคุณสมบัติบางอย่างที่ไม่เพียงแต่รับประกันความปลอดภัยและความปลอดภัยของเฟรมเวิร์กเท่านั้น แต่ยังพิสูจน์ได้ว่าเชื่อถือได้อีกด้วย

มาตรฐาน W3C

หลังจากสร้างความเชื่อมั่นในประสิทธิภาพและความน่าเชื่อถือแล้ว WebAssembly ได้ถูกเพิ่มเข้าไปในภาษาทางการของเว็บ ปัจจุบันมีสี่ภาษา HTML CSS, JavaScript และตอนนี้ WebAssembly ดังนั้น WebAssembly จึงถือเป็นมาตรฐาน WC3 แล้ว

ความเร็วและประสิทธิภาพ

เครื่องสแต็กของ WebAssembly สร้างขึ้นเพื่อทำงานในรูปแบบรหัสไบนารี่ ซึ่งส่งผลกระทบอย่างมากต่อเวลาและขนาดในการโหลด ความเร็วและประสิทธิภาพของมันทำให้เป็นแก่นในการพัฒนาบล็อคเชน และนักพัฒนาจำนวนมากในปัจจุบันก็ใช้ภาษานี้เพื่อสร้างระบบนิเวศที่แข็งแกร่ง

ความปลอดภัย

เครื่องเสมือนจะสแกนผ่านโค้ด WebAssembly ตรวจสอบ และดำเนินการภายในแซนด์บ็อกซ์ที่ปลอดภัยของหน่วยความจำ สภาพแวดล้อมแบบฝังจะจำกัดการเข้าถึงทรัพยากรในเครื่อง รวมถึงระบบไฟล์หรือพอร์ตเครือข่าย ซึ่งหมายความว่าโค้ด WebAssembly ที่ได้รับจากเว็บและทำงานในเบราว์เซอร์นั้นมีข้อจำกัดอย่างมากเมื่อต้องจัดการกับทรัพยากรฮาร์ดแวร์และซอฟต์แวร์

โอเพ่นซอร์ส

W3C มีบริษัทเบราว์เซอร์หลายแห่งที่ทำงานในโครงการนี้ สิ่งนี้ช่วยให้ชุมชนมีส่วนร่วม เปิดใช้งานการสร้างแอปพลิเคชันที่ไม่มีฟีเจอร์และแอปพลิเคชันที่ทดสอบฟีเจอร์ที่เข้ากันได้แบบย้อนหลัง

WebAssembly และ Ethereum

ปัจจุบัน WebAssembly ถูกมองว่าเป็นทางเลือกที่ใกล้เคียงกับ Ethereum Virtual Machine (EVM) เนื่องจากขณะนี้นักพัฒนาได้รับการติดตั้งชุดคำสั่งที่มีประสิทธิภาพซึ่งสามารถรวบรวมภาษาต่างๆ ไว้ได้ในขณะเดียวกันก็มั่นใจได้ว่าจะทำงานได้อย่างมีประสิทธิภาพบนแพลตฟอร์มต่างๆ ผ่านทาง WebAssembly ชุดคำสั่ง WebAssembly สามารถกำหนดได้อย่างง่ายดายด้วยการลบคำสั่งจุดลอยตัว ซึ่งจะทำให้ชุดคำสั่งนี้ทดแทน EVM ได้

Ethereum ได้แสดงความสนใจใน WebAssembly และเป็นหัวหอกในการพัฒนา Ethereum WebAssembly (EWASM) ซึ่งเป็นการออกแบบใหม่ของ Ethereum Virtual Machine เมื่อประสบความสำเร็จ EWASM คาดว่าจะมีประสิทธิภาพมากขึ้นและอนุญาตให้นักพัฒนาเขียนโค้ดในหลายภาษาได้เนื่องจากมีความเกี่ยวข้องกับ WASM EWASM จะทำงานเหมือนกับ EVM เป็นภาษาไบต์โค้ดที่คอมไพล์ไว้ล่วงหน้าซึ่งจะถูกตีความในโหนด Ethereum

ด้วยเหตุนี้ dApps จะมีประสิทธิภาพมากขึ้นในการผลิต การบูรณาการ WASM จะทำให้การพัฒนาสัญญาอัจฉริยะสามารถเข้าถึงได้มากขึ้นสำหรับผู้ที่คุ้นเคยกับภาษายอดนิยมอย่าง Rust and Go อยู่แล้ว ในที่สุดสิ่งนี้จะขจัดความจำเป็นสำหรับนักพัฒนาในการเรียนรู้วิธีการเขียนอย่างมั่นคงก่อนที่จะสร้างแอปพลิเคชันที่มีประโยชน์บน Ethereum

โครงการ Blockchain ที่ใช้ประโยชน์จาก WebAssembly

แม้ว่า WASM จะยังไม่ได้รับการพัฒนาอย่างสมบูรณ์สำหรับกิจกรรมบล็อกเชน แต่บางโครงการก็กำลังใช้มันเพื่อปรับปรุงฟังก์ชันการทำงานของแพลตฟอร์มของตนอยู่แล้ว ตัวอย่างเช่น:

จักรวาล

Cosmos เป็นบล็อกเชนที่พัฒนาขึ้นเพื่ออำนวยความสะดวกในการสื่อสารระหว่างบัญชีแยกประเภทแบบกระจายโดยไม่ต้องรอบนเซิร์ฟเวอร์กลาง ที่นิยมเรียกกันว่า Internet of Blockchains เป็นหนึ่งในบล็อกเชนแรกๆ ที่ใช้ WASM เป็นสแต็กอาคารหลัก พวกเขาใช้ CosmWASM ซึ่งเป็นเฟรมเวิร์กสำหรับการสร้างสัญญาอัจฉริยะใน WASM สำหรับ Cosmos SDK, Tendermint BFT และ โปรโตคอล IBC สำหรับการพัฒนาบล็อกเชนแบบเนทีฟ

ลายจุด

การใช้ WASM ของ Polkadot ขึ้นอยู่กับเมตาโปรโตคอล ซึ่งอนุญาตให้ใช้ภาษาอื่นที่ได้รับการตีความหรือคอมไพล์บน WebAssembly การใช้ WASM ช่วยให้โครงสร้างพื้นฐานและซับสเตรตแบบไม่มีฟอร์กช่วยให้แอปพลิเคชันอื่นๆ ปรับเปลี่ยนเชนที่เชื่อมต่อได้โดยแทบไม่มีการประสานงานกันหรือไม่มีเลย

ใกล้พิธีสาร

Near protocol คือบล็อกเชนสาธารณะที่สร้างขึ้นเพื่อสร้างแอปพลิเคชันแบบกระจายอำนาจโดยใช้ WebAssembly Near ใช้ WebAssembly เป็นวิธีที่ดีในการใช้ประโยชน์จากเทคโนโลยีเว็บเพื่อเพิ่มประสิทธิภาพและความสะดวกในการพกพา พวกเขาใช้ AssemblyScript สำหรับภาษาของตนเนื่องจากพบว่าเป็นตัวเลือกแบบพกพามากกว่า และยังช่วยให้นักพัฒนาเว็บเข้าถึงได้ง่ายอีกด้วย

แอสเซมบลีของเว็บกับ JavaScript

JavaScript เป็นภาษาการเขียนโปรแกรมระดับสูงที่ได้รับการตีความซึ่งสนับสนุนการพัฒนาเว็บมานานหลายทศวรรษ ได้รับการพัฒนาเพื่อเพิ่มการโต้ตอบให้กับหน้าเว็บและแสดงบนฝั่งไคลเอ็นต์โดยเว็บเบราว์เซอร์ ในช่วงหลายปีที่ผ่านมา ความนิยมของภาษาเพิ่มขึ้นเนื่องจากความง่ายในการใช้งานและการนำไปใช้อย่างแพร่หลาย

นับตั้งแต่ก่อตั้งเวิลด์ไวด์เว็บ JavaScript ก็มีมาโดยตลอด เมื่อเร็วๆ นี้ WASM (WebAssembly) ได้ถือกำเนิดขึ้น และแม้ว่าหลายคนเชื่อว่าทั้งสองมีความเชื่อมโยงกันอย่างใกล้ชิด แต่ WASM ก็ประกอบด้วยสิ่งอื่นๆ อีกหลายสิ่ง รวมถึง JavaScript ด้วย WASM ได้รับการพัฒนาเพื่อช่วยให้ JavaScript ทำงานได้อย่างมีประสิทธิภาพมากขึ้นในเว็บเบราว์เซอร์

แม้ว่าจะยังคงให้บริการตามวัตถุประสงค์เดียวกัน แต่ปัจจุบัน WASM ขยายขอบเขตไปไกลกว่าเว็บเบราว์เซอร์และได้ลงทุนในแอปพลิเคชัน Edge และเซิร์ฟเวอร์ แต่ JavaScript ยังขาดอยู่สองด้าน สิ่งนี้เป็นไปได้เนื่องจากในระดับ CPU WASM ทำงานในรูปแบบไบนารีและไม่ใช่ภาษาการเขียนโปรแกรมเช่น JavaScript WASM มีฟังก์ชันพิเศษที่รองรับภาษาต่างๆ มากมาย เช่น JavaScript, Python, Rust และอื่นๆ อีกมากมาย WASM เหนือกว่า JavaScript ยังคงมีความสามารถในการผสานรวมกับภาษาโดยไม่ได้จำกัดอยู่เพียง JavaScript เท่านั้น การผสานรวมช่วยให้ JavaScript เพิ่มประสิทธิภาพได้อย่างมากโดยการรวบรวมภาษาที่แปลแล้วและรันไทม์ลงในโมดูล WASM

WebAssembly กับสนิม

WebAssembly และ Rust เป็นสองเทคโนโลยีที่แตกต่างกันมาก แต่ในขณะเดียวกันก็มักจะเชื่อมโยงถึงกัน Rust เป็นภาษาโปรแกรมยอดนิยมที่ขึ้นชื่อเรื่องความเร็ว ความปลอดภัย และประสิทธิภาพสูง ในทางกลับกัน WebAssembly เป็นคอมไพเลอร์ที่แปลงรหัสเป็นเครื่องที่ปฏิบัติการได้ นอกเหนือจากคำจำกัดความแล้ว เทคโนโลยีทั้งสองยังมีความแตกต่างกันดังนี้

การพัฒนาเว็บ

WASM ใช้เป็นหลักในการพัฒนาเว็บ ทำให้สามารถรันโค้ดบนเว็บเบราว์เซอร์ รวมถึง JavaScript ได้ ในเวลาเดียวกัน Rust เป็นภาษาเอนกประสงค์ที่มีแอพพลิเคชั่นมากมาย รวมถึงการเขียนโปรแกรมระบบ การพัฒนาเกม และอื่นๆ อีกมากมาย

คุณสมบัติทางไวยากรณ์และภาษา

WASM ไม่ใช่ภาษาการเขียนโปรแกรม แต่เป็นรูปแบบคำสั่งไบนารีและสามารถกำหนดเป้าหมายด้วยภาษาเช่น C, C++ และ Rust ในทางกลับกัน Rust คือภาษาที่มีรูปแบบและคุณลักษณะต่างๆ เช่น การยืม ความเป็นเจ้าของ และอื่นๆ อีกมากมาย

การจัดการหน่วยความจำ

WASM ใช้โมเดลหน่วยความจำเชิงเส้นที่ให้พื้นที่ที่อยู่เชิงเส้นที่โปรแกรมเข้าถึงได้ง่าย นักพัฒนาจัดการการจัดการหน่วยความจำด้วยตนเองและเก็บไว้อย่างชัดเจน ในทางกลับกัน Rust ให้ความสำคัญกับความปลอดภัยของหน่วยความจำ มันใช้ระบบตรวจสอบการยืมและระบบการเป็นเจ้าของที่บังคับใช้กฎที่เข้มงวด ณ เวลาที่รวบรวมซึ่งกำจัดข้อบกพร่องหลายอย่างที่ทราบกันว่าส่งผลต่อความปลอดภัยของหน่วยความจำ

เห็นพ้องต้องกัน

Rust มาพร้อมกับการรองรับการเขียนโปรแกรมการทำงานพร้อมกันผ่านระบบความเป็นเจ้าของ ซึ่งช่วยให้นักพัฒนาสามารถเขียนโค้ดที่ปลอดภัยและการทำงานพร้อมกันโดยไม่ต้องเสี่ยงกับการแข่งขันของข้อมูล WASM ไม่เหมือนกับ Rust ตรงที่ไม่มีคุณสมบัติดังกล่าว อย่างไรก็ตาม มันสามารถใช้ประโยชน์จากคุณสมบัติการทำงานพร้อมกันของสภาพแวดล้อมโฮสต์ได้

แหล่งข้อมูลที่ดีที่สุดสำหรับการเริ่มต้นใช้งาน WebAssembly

เมื่อเรียนรู้วิธีใช้ WASM หลักสูตรบางหลักสูตรจะมอบความรู้ที่ดีที่สุดสำหรับผู้เริ่มต้นที่ต้องการสร้างโปรเจ็กต์ WASM ด้วยภาษาที่หลากหลาย หลักสูตรเหล่านี้บางหลักสูตรประกอบด้วย:

อูเดมี่

หลักสูตรนี้ให้คำแนะนำฉบับสมบูรณ์เกี่ยวกับการเรียนรู้ WebAssembly JavaScript API และชุดเครื่องมือ Emscripten เมื่อซื้อแล้ว หลักสูตรนี้จะช่วยให้ผู้ใช้สามารถเข้าถึงวิดีโอบรรยายตามความต้องการมากกว่า 2 ชั่วโมง และแหล่งข้อมูลทางการศึกษาที่ดาวน์โหลดได้ 17 รายการ

หลักสูตรนี้ช่วยให้ผู้เริ่มต้นเข้าใจว่า WebAssembly คืออะไร และส่งผลต่อการพัฒนาเว็บอย่างไร คุณยังจะได้เรียนรู้วิธีโหลดและรันโมดูล WebAssembly โดยใช้ API เบราว์เซอร์ Java Script ดั้งเดิม

พหูพจน์

หลักสูตรนี้ครอบคลุมถึงสิ่งสำคัญของ WebAssembly และเหตุใดจึงมีความสำคัญ หลักสูตรนี้จะแสดงวิธีสร้างแอปโดยใช้ WebAssembly และวิธีการสร้างเว็บแอปพลิเคชันโดยใช้ภาษาอื่น เช่น C/C++

ค่ายรหัสฟรี

หลักสูตรฟรีบน WebAssembly ช่วยให้ผู้เริ่มต้นเข้าใจถึงรายละเอียดของ WASM โดยจะสอนวิธีเขียน คอมไพล์ รวม และยกตัวอย่างโค้ด โดยให้คำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการคอมไพล์โค้ด C++ ลงใน WASM

บทสรุป

ปัจจุบัน WebAssembly ยืนอยู่แถวหน้าของการพัฒนาเว็บ และความเร็ว ความปลอดภัย และความสามารถในการปรับตัวเป็นคุณสมบัติหลักที่นักพัฒนาเชื่อว่าจะนำมาซึ่งโลกใหม่สำหรับแอปพลิเคชันแบบกระจายอำนาจ เนื่องจากมีผลิตภัณฑ์จำนวนมากขึ้นที่ต้องการใช้ WASM ประตูแห่งอนาคตที่สัญญาอัจฉริยะได้รับการพัฒนาอย่างง่ายดายและปลอดภัยด้วยภาษาที่นักพัฒนารู้ว่าอยู่ใกล้แค่เอื้อม

作者: Tamilore
译者: Cedar
文章审校: Matheus、Wayne、Ashley He
* 投资有风险,入市须谨慎。本文不作为Gate.io提供的投资理财建议或其他任何类型的建议。
* 在未提及Gate.io的情况下,复制、传播或抄袭本文将违反《版权法》,Gate.io有权追究其法律责任。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
立即注册