一切能用JavaScript实现的,终将用JavaScript实现。

一切能编译为WebAssembly的,终将编译为WebAssembly。

前端er们,WebAssembly用上了吗?在浏览器中快速运行非JavaScript语言,比如C、C++、Rust,是不是很香?今天,我们就来用15张小画图说WebAssembly

有必要先介绍一下小画的创作者。她叫Lin Clark,曾是Mozilla公司的首席研究工程师,精通WebAssembly和Rust。值得一提的是,她的母亲曾为阿波罗登月任务编写汇编语言。如今,Lin是WebAssembly社区响当当的人物,是不是有传承那味儿了?

WebAssembly能做什么?

有了WebAssembly,JavaScript不再是浏览器端的唯一语言。WebAssembly让你能够在网页中快速运行C、C++、Rust等。

再见JavaScript?

WebAssembly并不是要取代JavaScript,二者绝非水火不容。实际上,许多应用程序同时使用WebAssembly和JavaScript。不过,如果硬要对比二者的速度,那么WebAssembly显然是增强型。

JavaScript的性能瓶颈在哪里?

JavaScript的一些根本特性使它速度受限,比如动态类型。直到2008年,JIT(即时编译器)出现,才让JavaScript的性能有了飞跃式提升。

性能提升使得JavaScript开始被用于服务器端。WebAssembly的出现有望使性能曲线再次实现飞跃。

时间都去哪儿了?

JIT出现之前,JavaScript花在各任务上的相对时长是这样的。

有了JIT,JavaScript花在各任务上的相对时长变成了这样。

相比之下,WebAssembly竟然是这样的!

如何让计算机听我发号施令?

想象有机星人来到地球,你被派去和机星人谈判。要怎么交流呢?

你或许需要一位口译官,抑或需要一位笔译官。

口译官可以当场逐字逐句地翻译,这其实就是解释器所做的事情。

笔译官则会将内容写下来,让双方自己理解。这其实就是编译器所做的事情。

解释器刚运行起来时速度较快,但是效率不高,因为同样的代码可能需要重复解释。编译器则恰恰相反。正因为两者各有千秋,所以JIT结合了二者各自的优势。

那么,WebAssembly是如何做到与机星人交流的呢?我们来分析一下机星人的大脑构成。

  • ALU是算术逻辑单元,相当于机星人大脑负责思考的部分。

  • register是寄存器,相当于机星人大脑的短时记忆区。

  • RAM是内存,相当于机星人大脑的长期记忆区。

如果给机星人发送二进制指令,它就会这样解读。

问题是,机星人的大脑构造可能不一样,比如既有可能是x86结构,又有可能是ARM结构。而我们也会使用不同的语言,比如C、C++或者Rust。要两两匹配地进行翻译,工作量实在太大!

为此,人们增加了IR,即中间表示。编译器的前端先将高级语言变成IR,编译器的后端则负责将IR变成汇编码。

那么,WebAssembly的位置在哪里呢?

每一类计算机处理器都有自己的机器码类型。在取得IR代码后,通过一个专门的编译器来运行,这个编译器将IR代码转换为一种专用字节码并放入后缀为.wasm的文件中。

.wasm文件中的字节码还不是机器码,它只是支持WebAssembly的浏览器能够理解的一组虚拟指令。当加载到支持WebAssembly的浏览器中时,浏览器会验证该文件的合法性,然后这些字节码会继续编译为机器码。

如今,各大主流浏览器都已支持WebAssembly。现在就尝试使用WebAssembly吧!

本文中的插图由Lin Clark创作,源网址如下:

https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/

本文对插图的使用经Lin Clark同意,且遵守CC BY-SA 3.0协议。

https://creativecommons.org/licenses/by-sa/3.0/

今 日 荐 书

C. 杰勒德•加伦特 著
单业 译

想在浏览器中使用非JavaScript语言?
WebAssembly帮你做到!

留 言 赠 书

你比较看好哪些前端技术?为什么?

图灵君将挑选2位幸运同学,各送出《WebAssembly实战》1册。

6月18日开奖~

618图灵直播已开启

就等你来!

6月16日:腾讯专家讲小程序开发

6月17日: 微博大佬讲信息安全

感兴趣的同学记得扫码预约报名哦,

直播有好书相送!!!

图 灵 社 群

喜欢这篇文章?点个“在看”吧~▼

WebAssembly能不能取代JavaScript?15张卡通图给你答案!相关推荐

  1. android 机器人gif,看完这15张GIF图 就再也不用担心机器人叛乱了

    流量预警 非WIFI请果断退出 今天大福我闲逛Reddit论坛时,看到一个帖子:有哪些GIF图是你百看不厌的? 回答中投票最高的一个网友贴了一张GIF图:机器人开阀门 图片较大 请耐心等待 然后他说道 ...

  2. 五万字15张导图Java自学路线,小白零基础入门,程序员进阶,收藏这篇就够了

    本文收录于<技术专家修炼> 文中配套资料合集 路线导图高清源文件 点击跳转到文末点击底部卡片回复「资料」领取 哈喽,大家好,我是一条~ 最近粉丝问我有没有Java自学路线,有了方向才能按图 ...

  3. 看完这15张动图,秒懂万有引力与航天难点!

    全世界只有3.14 % 的人关注了 爆炸吧知识 椭圆的画法 大质量天体使周围天体绕其运转模拟 太阳系星球轨迹非常接近圆 火箭运载卫星升空 卫星飞行过程中可以点火调整姿态 同步卫星必须在赤道上空 北斗全 ...

  4. 《JavaScript权威指南第7版》第15章 Web浏览器中的JavaScript 15.1 15.2 15.3

    第15章 Web浏览器中的JavaScript 15.1 网络编程基础 15.1.1 HTML script 标签中的JavaScript 模块 指定脚本类型 脚本运行时:异步和延迟 按需加载脚本 1 ...

  5. HighNewTech:18.11.07—第五届世界互联网大会—互联网届的奥斯卡大奖—15张PPT见证15项世界互联网领先科技成果

    High&NewTech:18.11.07-第五届世界互联网大会-互联网届的奥斯卡大奖-15张PPT见证15项世界互联网领先科技成果 目录 现场图片 1.马化腾:微信小程序商业模式创新 2.阎 ...

  6. python编程思维导图_用来梳理 Python 编程核心知识15张思维导图

    原标题:用来梳理 Python 编程核心知识15张思维导图 小编这次在逛论坛的时候,无意中发现了一份python的武功秘籍,也就是一份思维导图,堪称业界经典! 思维导图可以有力地激发你的联想,通过一个 ...

  7. 中药ppi网络图太杂乱_太杂乱了吗? 这是您的iPhone,iPad,Android或台式机的15张简约壁纸...

    中药ppi网络图太杂乱 Busy wallpaper images don't work very well on your iPhone, iPad, or any device where you ...

  8. 计算机输入输出设备说课稿,信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)...

    <信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)>由会员分享,可在线阅读,更多相关<信息技术七年级西交大版 第三节 计算机系 ...

  9. 15张图呈现数据库事务背后的并发原理

    本文分享自华为云社区<将数据库9种锁.3种读.4种隔离级别一次性串联起来,用15张图呈现背后数据库事务背后的并发原理>,作者: breakDawn. 前段时间开发时,正好遇到了2个进程同时 ...

最新文章

  1. 技术图文:Numpy 一维数组 VS. Pandas Series
  2. 其他发行版本安装深度音乐播放器
  3. [YTU]_2442( C++习题 矩阵求和--重载运算符)
  4. 【Paper】2010_Distributed optimal control of multiple systems
  5. 取某个日期所在周的任意一天日期
  6. Struts2解析FreeMarker模板中变量的顺序
  7. CentOS 7 yum方式快速安装MongoDB
  8. ABAP Authorization trace工具
  9. 大数据开发笔记(十):Hbase实践
  10. 3月AV-Comparatives杀毒软件测试结果出炉
  11. 在esp32开发板上实现的web_radio,基于wm8978 codec芯片
  12. linux怎么查看hwaddr_linux如何查看mac地址_查看linux的mac地址_linux 查看mac地址
  13. 一个学习式的mogoLink框架介绍
  14. spring-cloud-gateway GlobalFilter 自定义鉴权失败 返回数据结构
  15. Windows远程控制家里的电脑
  16. win10打开蓝牙_在win10中,使用“设置”检查蓝牙设备电量,是个简便的方法
  17. K8S组件介绍及安装
  18. 获取CPU型号和序列号
  19. oracle both from,Oracle trim函数的使用
  20. Facebook的抖音杀手Lasso来袭,但你看好它吗?

热门文章

  1. python用jieba进行分词并可视化
  2. 用集合java字符串第一个单词_Java小程序 输入一个字符串,将每一个单词首字母大写...
  3. word转pdf图片模糊怎么办_迅捷PDF转换器如何将word转为长图?word转图片方法
  4. latex 甘特图_[简004] 史上'最全最精简'Markdown语法-速览速用
  5. 图标尺寸规范_作为刚入门的UI设计师,你需要懂哪些设计规范?
  6. php 两个数组求交集_如何求两个数组的交集
  7. VBA编程常用语句(转载)
  8. Atlassian发布Kubernetes节点自动化扩展工具Escalator
  9. MySQL存储写入速度慢分析
  10. php示例代码使用mysql_fetch_assoc函数