WebAssembly 的艺术

Aleksandr Shitik
Aleksandr Shitik

我撰写自己的文章和书籍,并评论电影和书籍。 在宇宙学与天文学、IT、效率与规划方面的专家。

WebAssembly 的艺术
Rick Battagline
类别: 编程
出版年份: 2022
阅读年份: 2025
我的评分: 一般
阅读次数: 1
总页数: 312
摘要(页): 14
原始出版语言: 英语
其他语言的翻译: 俄语

总体描述

本书共312页,包含11章。除了文字内容外,书中还有大量代码示例,并配有丰富的图表插图,用于解释各种实例。阅读难度较高,每章末尾均附有简要总结。

简要概述

前两章可视为技术入门。作者解释了WebAssembly的用途及其适用场景,并演示了与之交互的方式。书中引入了WebAssembly文本格式(WAT),并讲解了第一个程序“Hello, world!”。WAT几乎贯穿全书使用。

接下来的一章聚焦于函数及与JavaScript的深度集成。内容涵盖数据类型、变量(全局与局部)操作、条件语句(if/else)、循环和分支控制。其中部分主题在第二章已有初步提及。

随后是一章偏理论的内容,专门探讨数字的处理方式。如果你曾接触过原码、反码与补码表示法,或位运算操作(如位移、掩码、异或),阅读本章会感到十分熟悉,甚至略带怀旧感。

接着是一章关于字符串的讲解,涵盖ASCII与Unicode编码、字符串在线性内存中的存储方式等主题。

下一章深入探讨线性内存的使用,并基于此构建了一个有趣的实例——一个检测物体间碰撞的程序。该示例在后续内容中被进一步优化和扩展。

然后是多个章节,专注于开发一个完整的微型Web应用。其中一章讲解了Node.js服务器的配置及与DOM的交互,另一章则探讨Canvas的使用。

之后,作者介绍了如何调试WebAssembly代码、发现并修复错误,以及识别资源消耗较高的函数。这些问题由两个章节专门讨论。

本书以AssemblyScript收尾——这是一种专为WebAssembly设计的高级语言。同时,书中还对比了其与其他技术方案的性能表现。

个人观点

今年是WebAssembly诞生10周年——足够成熟的时间,让我们可以评估它是否达到了预期,并认清其当前的市场地位。诚然,我们可以列举像Google Docs、Figma、Photoshop等大型应用,它们已将性能瓶颈模块甚至整个组件重写为WebAssembly。然而,该技术在整体Web开发中的普及仍较为缓慢,JavaScript/TypeScript依然占据绝对主导地位。

或许原因之一在于其缺乏内置垃圾回收机制,使得Python或Java等语言难以适配。与C++或Rust这类从设计之初就强调内存管理的语言不同,这些语言更难“融入”WebAssembly(尽管近年来已有显著进展)。此外,WebAssembly无法直接操作DOM,而通过编译层调用或频繁从JavaScript发起调用的方式,可能导致最终性能反而不如原生JS代码。

阅读本书的过程中,逐渐理解了为何WebAssembly仍局限于特定场景,尚未在通用开发中广泛应用。这确实是一项复杂的技术。想象一下,将汇编语言与稍高一层的语言结合,再加入类似Lisp的语法结构——阅读时大致就是这种感受。我已多年未接触底层代码,因此许多章节读起来颇具挑战。当然,也有部分时刻让我欣赏其设计思路,甚至享受分析代码的过程。但总体而言,本书难度较高。这是我多年来第一次产生将作者长句拆分为短句的冲动,以更好理解其含义。

对于了解WebAssembly基础和学习WAT语法,本书非常出色。但仅靠它还不足以让人在读完后立即应用于实际项目开发中。

Вверх