WebAssembly-初识
在EOS的github代码库中可以看到,EOS大部分是由c++写的,但是可以看到WebAssembly占了百分之50之多,由于本人也是刚刚接触WebAssembly,有许多不解的地方,希望大家一起探讨。
起源
在当今的浏览器中,web前端语言JavaScript,可以称为速度最快的动态语言之一。但尽管如此,它还是无法与原生的C/C++代码相媲美。所以,WebAssembly就出现了。
WebAssembly是除了JS以外另一种前端编程语言,它描述为“在网络上运行C ++的一种方式”。
简介
实际上,我们可以把WebAssembly看成另一种“目标汇编语言”,每一种目标汇编语言(x86、ARM)都依赖于特定的机器结构,而 WebAssembly 与其他的汇编语言不一样,它不依赖于具体的物理机器。可以抽象地理解成它是概念机器的机器语言,而不是实际的物理机器的机器语言。
使用
WebAssembly 支持情况最好的编译器工具链是 LLVM。有很多不同的前端和后端插件可以用在 LLVM 上。因此许多开发者用 C 语言或者 Rust 开发,再编译成 WebAssembly。也有许多其他的方式来开发,直接编写,或者利用 TypeScript 开发 WebAssembly 模块。
优点
1.可以大幅度提高 Javascript 的性能,同时也不损失安全性。Webapp 和 原生 App 的性能差距变得很小。
2.基本之前需要插件来提高速度这种技术已经没有必要了, 网页应用的移植性会变得更好。
3. WebAssembly 其实允许任何语言编译到它制定的AST tree(目前支持比较完善的c/c++/ rust),你可以这几种后端静态语言来写网页了。
了解更多请到WebAssembly Design。
当然有关WebAssembly的东西我只是了解了一下,有感兴趣的同学,可以一起学习,感觉还是很有前景的一门语言
网友评论