WebAssembly là gì?

WebAssembly là gì? 

  • Sự cải tiến về JavaScript: Triển khai các công việc quan trọng trong wasm và nhập nó như một module JavaScript chuẩn.
  • Một ngôn ngữ mới: Code WebAssembly xác định một AST (cây cú pháp trừu tượng - Abstract Syntax Tree) được thể hiện dưới dạng nhị phân. Bạn có thể ghi tên tác giả (author) và gỡ lỗi (debug) ở định dạng văn bản có thể đọc được.
  • Cải thiện trình duyệt: Các trình duyệt sẽ hiểu định dạng nhị phân, có nghĩa là có thể biên dịch các gói nhị phân nén nhỏ hơn đoạn JavaScript sử dụng ngày nay. Phần tải dữ liệu (payload) nhỏ hơn sẽ chuyển giao nhanh hơn. Tùy thuộc vào việc tối ưu hoá thời gian biên dịch, các gói WebAssembly có thể chạy nhanh hơn JavaScript.
  • Một Compile Target: Một cách cho các ngôn ngữ khác có được sự hỗ trợ nhị phân tốt nhất trên toàn bộ nền tảng web.

WebAssembly là gì

WebAssembly có ý nghĩa gì đối với JavaScript?

Chúng ta cần WebAssembly vì nó linh hoạt như JavaScript. Hiện tại, rất khó để diễn tả nhiều điều trong JavaScript và các tính năng muốn đơn giản hóa có thể tạo ra tính phức tạp cho một ngôn ngữ đã khiến nhiều người dùng nhầm lẫn. 

WebAssembly cung cấp quyền truy cập vào một tập hợp các khối căn bản mức thấp mà mọi người có thể sử dụng để xây dựng bất cứ điều gì có thể tưởng tượng. Vậy nó khác với JavaScript như thế nào? Từ khóa ở đây là mức thấp, nó xác định các kiểu cơ sở dữ liệu nguyên thủy (primitive), các dạng chữ, điều khiển lưu lượng, v.v... Đây là những cơ sở dữ liệu đơn giản, không có hệ thống đối tượng phức tạp (prototypal hay các hệ thống khác), không có quá trình thu gom rác (garbage collector) tự động được tích hợp.

Vậy chính xác WebAssembly là gì?

WebAssembly xác định cây cú pháp trừu tượng được lưu trữ dưới dạng nhị phân. Định dạng nhị phân rất tốt vì có nghĩa là chúng ta có thể tạo các gói ứng dụng nhỏ hơn. Chắc nhiều người sẽ tự hỏi làm thế nào để gỡ lỗi một định dạng ngôn ngữ nhị phân.

May mắn thay, các nhà phát triển đang tạo ra có một trình gỡ lỗi (debugger) chắc chắn sẽ xuất hiện trong trình duyệt, cây cú pháp trừu tượng sẽ được thể hiện ở định dạng văn bản thân thiện (vừa phải).

WebAssembly được sử dụng cho điều gì?

WebAssembly dễ dàng diễn đạt những thứ như luồng (thread) và SIMD (Single Instruction, Multiple Data), bạn có thể xếp hàng nhiều khối dữ liệu bên cạnh nhau và gọi một lệnh duy nhất để kích hoạt cùng một lúc. Điều đó có nghĩa có thể nhận được đường xử lý song song cho hiệu ứng stream video thời gian thực.

Với WebAssembly, các nhà phát triển có thể sẽ quên đi hệ thống đối tượng, bộ thu gom rác và tất cả những thứ khác, chỉ cần xếp hàng một số bit thô trong hàng nhỏ và xử lý chúng nhanh nhất có thể.

Các trò chơi, VR và tăng cường thực tế ảo là những ví dụ rõ ràng. Hầu hết các demo WebAssembly hiện tại đều sử dụng Unity hoặc Unreal Engine, cả hai đều hỗ trợ biên dịch asm.js. Các ứng dụng sản xuất âm nhạc như Ableton Live và các ứng dụng sản xuất video như Adobe Premier Pro vẫn còn hơi lúng túng khi chuyển sang web; và còn rất nhiều vấn đề cần giải quyết, như bảo đảm thời gian tốt hơn cho các ứng dụng thời gian thực tập trung dữ liệu.

WebAssembly mang ngôn ngữ đa dạng vào nền tảng Web

WebAssembly đưa ra những điều mà hầu hết các nhà phát triển JS phải đồng ý rằng chúng ta không cần đến trong JavaScript. Họ cần chúng không phải cho code JavaScript mà để hỗ trợ biên dịch từ các ngôn ngữ khác sử dụng chúng.

WebAssembly cung cấp một compile target  thay thế, được thiết kế đặc biệt cho mục đích đó. Hiện giờ, đã dễ dàng hơn để xuất code chủ yếu dựa vào các tính năng như luồng bộ nhớ chia sẻ. Quá trình viết một trình biên dịch cho WebAssembly sẽ ít phức tạp hơn viết trình biên dịch cho JavaScript, đơn giản bởi vì có một bản đồ tốt hơn cho các AST mục tiêu.

Thật tuyệt vời khi biết rằng tất cả ngôn ngữ cũ mà chúng ta biết và yêu thích sẽ chạy trên nền tảng web ngay bây giờ.

Xem thêm: Java là gì? Tại sao nên chọn Java?

Thứ Hai, 04/12/2017 16:21
31 👨 1.051