• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > WebAssembly的前世今生

WebAssembly的前世今生

作者:区块链大师 字体:[增加 减小] 来源:互联网 时间:2018-11-03

区块链大师向大家分享了WebAssembly的前世今生,其中包含WebAssembly等知识点,遇到此问题的同学们可以参考下
最近由于ICO很火,很多朋友后台留言或者加我好友问很多问题,特别是在很多白皮书中出现的一些专有名词,看起来很高大上,其实原理还是比较简单的,今天说说很多人问的WebAssembly


首先WebAssembly不是区块链范畴的技术,属于浏览器前端技术,估计是那个写白皮书的把以太坊EVM里面EVM2.0提到的性能提升WebAssembly实现展望学了进去。


计算机语言的发展


诚然,目前区块链很多技术发展非常快,基本上用到了目前业界正在测试和评估的很多前沿技术,WebAssembly就是其中之一,WebAssembly其实是多家主流浏览器厂商竞争后的妥协,从字面理解可以看做是“Web的汇编语言”,要了解汇编语言需要你有计算机专业的学习背景,简单来说汇编语言可以理解为机器可以直接执行的代码,或者叫做字节码,或者“机器语言”等等,其优点是执行效率非常快,基本上属于指令集范畴,当然其缺点是可读性和代码编写非常困难,所以人们发明“高级程序语言”让代码编写和阅读更符合人类的逻辑习惯,C/C++/JAVA等你能熟知的都是属于高级语言范畴,当然机器是无法识别高级程序语言的,所以人们发明了“编译器”,通过编译器把高级程序语言转化为汇编语言,让机器可以执行,现在你知道所谓程序语言的来龙去脉了吧。


在计算机语言的发展过程中,有两大发展方向,一个是解释型语言,一个是编译型语言。最早的Basic语言是解释型语言的代表,因为解释型语言可以逐条执行,不要编译过程,所以设计简单,非常适合简单的程序逻辑环境,所以后期一般把解释语言成为“脚本语言”,现在流行的javascript语言从字面就可以知道这是一种脚本语言,但是,由于当时的CPU运算能力限制,解释型语言的效率不是那么好,应用面比较小,其优点是可以很容易修改和执行。


而编译型语言可以通过编译器直接将大量高级语言代码一次性编译成机器码,所以最终的执行效率非常高,在Web应用没有大发展时,基本上主流语言是编译型语言的天下。


但是就像衣服和鞋帽的流行时尚一样,过了那么几年,总要转回去一样,随着互联网的发展,大量的Web应用涌现,CPU效率的提升,解释语言的效率弱点被硬件的发展掩盖,于是乎PHP/ruby/javascript等解释语言重新崛起,其易于编写和实时修改不需要编译就可以执行的特点被放大,所以大量应用开始使用解释语言进行编写,包括一些非常复杂的逻辑应用。


其中以javascript为最(以下简称js),其实从语言本身上来说js是非常垃圾的语言,没有强类型,约束也不严谨,效率也不好,最初就是为浏览器设计的简单脚本语言,但就是这个原因,由于web应用的发展,js一跃成为事实的标准,各种js框架的发展在一定程度上弥补了js语言本身的不足,比较著名的有node.js,使用这个框架居然可以编写本地和服务端应用,这本来都是传统编译型语言的阵地,可见为了照顾大量js程序员,框架的力量有多厉害,可谓得程序员者得天下。


WebAssembly的诞生


山不转水转,js因为是浏览器默认的语言(最早微软的IE可以执行Basic语言),所以js得到了很大的发展,但是因为其出身问题,效率低下其实是所有浏览器厂商知道的,比如进行MD5等加密运算,大量的图形处理等,只能勉强应付。最早发现并尝试解决这个问题的是adobe公司,他们开发了flash插件(微软搞过Silverlight),扩展了浏览器功能,所以你能见到很多用flash开发的网页游戏应用,由于adobe不是浏览器厂商,同时flash被设计成为插件机制,安全性存在很多问题,更为主要的是flash是商业产品,当时乔布斯大神都很抵制,主流浏览器厂商迫切需要一个开放的标准,于是乎HTML5诞生了,HTML5解决了很多浏览器的功能和性能标准问题,但是HTML5仍然沿用了js作为主要语言,这样问题就出来了。


性能问题仍然没有得到很好的解决,比如你无法在HTML5应用中看到主流的3D游戏等等,所以各大浏览器厂商开始乱搞,纷纷开始尝试在浏览器中实现编译型语言的机制,以此提升效率,期间Mozilla在推asm.js,谷歌支持PNaCI,苹果在开发FLTJIT,而微软好像在发呆没有推出任何东西。而后来,所有四个主要的浏览器供应商一致同意创建一种面向Web的二进制格式WebAssembly或WASM。可以简单将其称为字节码,由于运行于浏览器容器中,它并不是传统意义上的机器字节码,实际上是一个经过压缩的AST编码(AST是语法抽象树的意思)。


就这样WebAssembly诞生了,它就是为解决性能瓶颈而设计的东西,如果用在区块链上可以提升基于Web的Dapp性能,但是如果不用在Web应用上,我不知道为什么要用它,不如直接使用C语言本地代码来的快,特别是在专业环境中的EVM虚拟机中,所以以太坊在EVM2.0中要使用WebAssembly这点上是值得商榷的,更别提那些只知道堆砌名词的ICO白皮书中去学以太坊中利用的技术,更值得深入探讨了。


WebAssembly简介


WebAssembly (简称 wasm ) 是一种适合于编译到 Web 的, 新的可移植的, 大小和加载时间高效的格式. 这

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-11-03如何在Ethereum上编写自己的CryptoKitties风格的游戏
  • 2018-11-03以太坊Sharding FAQ
  • 2018-11-03imToken 2.0国际版如何设置观察钱包(冷钱包、离线签名)
  • 2018-11-03备受争议的脑钱包(Brainwallet)
  • 2018-11-03BigONE交易平台,最新版注册和认证详细教程来了
  • 2018-11-03什么是稳定币(Stablecoins)?
  • 2018-11-03关于区块链技术你不得不知道的12个误区
  • 2018-11-03安全代币发行(STO)是什么及为什么需要一个顾问
  • 2018-11-03区块链时代的拜占庭容错:Tendermint(一)
  • 2018-11-03精确解析的EOS.io与Block.one

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • imToken 2.0国际版如何设置观察钱包(冷钱包、离线签名)
    • 工作量证明(PoW)的内部攻击模型
    • 如何使用 imToken 创建 EOS 钱包
    • 详解比特币挖矿— 应该是史上最通俗易懂的版本
    • 云养猫买猫攻略 CryptoKitties买猫详解
    • 什么是DAO?它是否会破坏传统治理?
    • 简述Polkadot和区块链互联网
    • Coinone数字货币交易所 注册攻略
    • 什么是分叉?什么是比特币分叉?
    • RC1测试网--Windows系统操作指南(中级)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2015-2018 All Rights Reserved. 微课江湖 版权所有