MrHaoNan 2019-12-26
作为IT技术人,谁不掌握几门编程语言。
若论编程语言的兴衰交替,犹如汉末之乱世,你方唱罢我登场,好不热闹。
随着一代一代炮灰的落去,目前逐渐形成了:系统级别、应用级别、前端级别三个大层次的划分,每个层次都有占据优势的存在。
系统级别被 c/c++ 父子占据,偏安一隅,自得其乐。
应用级别争夺最凶 c c++逐渐丧失应用级别的战场,java c# python js 好不热闹
前端级别则目前js独领风骚,web前端自不必谈,app前端electron\cordova 异端凸起,qt,wpf 灰头土脸无意再战。
很多技术人都以为鼎足之势已成,天下再难变化,预言终点的人总是要被打脸的。
犹如福山的历史终结论,美国就是人类历史的终点,现在谁还觉得美国是人类文明的灯塔?
可是谁也没想到,搅局者,居然是他
我懂得你的第一反应:这不是哪个浏览器市场份额忽略不计,已然成为可有可无的角色的火狐吗?
俺也一样。
不知不觉间,webassembly已然是w3c标准了。
固然有w3c 巨头互相扯皮,火狐乘乱而上。
谁也没有料到 webassembly居然是一盘大棋。
单独一个标准其实没什么,操作系统三巨头也没把他当回事,浏览器而已,前端的一部分,他影响力非常有限。
是的,单这一点,火狐不足以撬动什么。
项庄舞剑,意不在此。火狐推动webassembly 也不是为了一个浏览器标准而来。
真正的意图,最近才浮出水面
当火狐初搞Rust,很多人不以为然,c c++的帝国岂是那么容易撬动的?
当RustWasm项目出现,很多人以为是火狐无奈之举,因为三巨头对webassembly编译方案都比较消极,火狐不得不自己上马。
以为搞rust->webassembly 的工具链是火狐的迫不得已。
确实,rust初宣布定位是搞底层,做操作系统开发的语言。特别底层。Webassembly是web前端的特定方案,特别前端。这一头一尾的跨度太大,完全无法衔接。
但是,字节码联盟成立了。
Webassembly要离开web了,变成一个和nodejs一样的应用开发环境。
此时,链条都接上了
Rust才是杀手锏,Rust这个自行车齿轮的图标或许早已预示了一些什么。
Rust的全层级制霸的理想,暴露了。
系统级别,Rust
前端级别 浏览器中有webassembly,火狐有rustwasm 工具
而且经过对比,这个工具的体验优于火狐的c++->wasm工具。
也可以认为 浏览器 rust
大前端中的应用前端,和应用级开发,rust比较缺乏。
而字节码联盟补上了这一环
字节码联盟是Mozilla、Fastly、Intel 与 Red Hat 联合成立的新组织,他的目标就是把webassemblly打造成下一个nodejs
字节码联盟有两个主要产品
wasmtime 提供webassemblly的执行环境。犹如dotnet nodejs
wasi 提供执行环境可用的API,如文件访问,等等,这在dotnet中叫dotnet framework,在nodejs 中就是node默认库
所以他们其实是同一个产品,火狐版的nodejs,火狐版的dotnet
自此,火狐的链条清晰了。
Rust 成为了一个真正的全栈开发语言。
Rust 可以搞底层、可以搞应用,还可以搞web
作为一个全栈开发者,面对一个Rust这样的语言,不得不说:
火狐,我服。
来写你的第一个rust程序吧
https://www.rust-lang.org/tools/install
按网站提升操作即可
命令行执行
cargo new helloworld
将在当前目录创建一个命令行程序项目,项目名为helloworld
cargo 是rust的集成工具,可以build,可以下载依赖包,可以增加工具命令。嗯,简直和dotnetcore的dotnet 命令功能一模一样
1.命令行cd进入项目目录
2.命令行执行cargo run
还是和dotnet 一样,run 就是编译并执行当前项目。
当然你也可以 cargo build 然后自己去跑exe。
源码如下:
fn main() {
println!("Hello, world!");
}
fn 表示这是一个函数,println!是个宏,表示往输出位置上输出内容。
看这熟悉的标点符号,还是C系,不必担忧。许久不写blog了,后面就开始愉快的rust学习之旅了,又有东西可以写了。