锈永不磨灭,让末日来得更酷!

23 篇文章 2 订阅

本文翻译自ReadWrite.com上刊登的Matt Asay的一篇文章,Rust Never Sleeps: How Mozilla Could Become Cool Again,副标题是“Mozilla has almost faded from memory, but Rust could make it hip again”。本译文标题采用意译和音译相结合的手法,或许值得商榷,欢迎读者见仁见智提出更正意见。翻译此文不代表译者完全赞同作者原文中的所有观点。—— Liigo, 2015-7-14.

Rust

Mozilla公司以前也有过好日子。

它推出的Firefox浏览器曾经是微软IE的头号对手。如今,Firefox落魄到仅剩12%的市场份额——数据源于NetMarketShare对桌面系统浏览器的统计——移动端的情况更糟。Mozilla的其他产品如Thunderbird,不提也罢。

Mozilla英雄落寞的时候,居然推出一门可能促进行业变革的Rust编程语言,让人感到意外。最初版本的Rust由Mozilla公司员工Graydon Hoare在2009年开发完成,基于现代编程语言设计理念从头打造(译者Liigo注:Graydon似乎更倾向于复古的编程理念)。它融合了高层语言(high-level languages)的灵活性和底层语言(low-level languages)的强控制性(firm control)。

本质上,Mozilla这门语言既强调性能,又覆盖广泛的应用领域,从操作系统到数据库所有软件都能开发,还避免了其他语言背负的向后兼容的历史包袱。总之,Rust具有完全颠覆IT行业的潜能,这对Mozilla公司而言意义重大。

锈永不磨灭

Mozilla公司可能曾经迷失过方向,但是它最近正尽最大努力纠正航向。Electrolysis项目可给予Firefox多进程能力,新的WebAssembly标准和WebVR虚拟现实流,将为迷人的新兴技术提供支持。

但是在这些积极举措之前,Mozilla就已经有了复兴自己的根本途径:Rust。Rust已在它口袋里装了好几年了。

Rust是Graydon六年前(译者Liigo注,应为九年前,2006年)开始开发的业余项目,2010年才成为Mozilla公司官方支持的项目。尽管有公司参与,Rust仍被视为社区主导的项目,得到了Mozilla公司以外许多贡献者的支持。

Mozilla是这样描述Rust的:

Rust是一个新的编程语言,注重性能、并行、内存安全。设计者们从头开始创建一门语言,融合现代编程语言的优秀设计,避免传统编程语言的历史包袱。
Rust融合了高层语言富有表达力的语法和灵活性,以及底层语言超强的控制性和性能。

上面最后一句话太诱人了。Rust有能力让开发者编写内核(kernels)、操作系统(OS)、浏览器、数据库,等等,而这些软件要想用高层语言比如Google公司的Go语言开发,往往是不太现实的(you simply can’t realistically write)。

Christoph Burgdorf 认为

从一面说,Rust是非常现代的语言,它有泛型(Generics)、接口(Traits)、面向表达式(expression orientated)、模式匹配(pattern matching)、闭包(closures)等等许多令人兴奋的特性。
从另一方面说,Rust也是很底层的语言,它默认不使用垃圾收集器(GC),它仅仅通过定义一系列规则,让编译器在编译时做强制检查,就消除了对垃圾收集器的依赖。

更让Burgdorf感到振奋的是,Rust提供深层控制(deep control)内存申请等能力,他写道:“Rust还允许你深层控制堆和栈空间的内存申请,这对Go来说是不可能的,因为Go的编译器采用逃逸分析(escape analysis)(自动)确定是否在堆上申请内存。”

虽然很多新的编程语言不断地更快地涌现,Rust有一点让它与众不同:它在不强制要求开发者成为底层编程专家的前提下,提供了底层语言的控制力和性能。

让开发者的工作变得简单是新语言的价值,如果同时还能提升开发者的控制力(boosting their control),就更吸引人了。

锈得低调淡定

Redmonk公司的Stephen O’Grady指出:最近不断出现的信息显示,Rust正逐步激发越来越多的开发者的兴趣。

Rust可被应用于新项目和旧项目。就像开发者Jeff Waugh对我说的:“我预计会有很多新项目拥抱Rust,包括全新的项目,和旧项目中的新模块。”

虽然可能会有采用Rust全新开发的操作系统、数据库等其他项目,扩展已有项目也是Rust的价值所在。Mozilla公司的Servo浏览器引擎是一个好的例子。“值得注意的是,Servo重用了很多(C++)代码,而核心的/新增的功能是用Rust语言开发的”,Waugh说,“Servo使用Rust完成了全部的并行布局(parallel layout)功能,而SpiderMonkey(JavaScript引擎)和libpng(解析PNG图片)相关功能则是重用旧的代码。”

也就是说,Servo里面的一部分代码是Rust,还有很多不是。但是通过Rust开发部分代码去改进Servo(或其他任意项目)是很有效的,尤其是对基于C语言的项目而言。澳大利亚作者程序员Dave Cheney写道:“某些遵循C语言调用约定的大型项目,很希望将Rust代码嵌入进去。”

未来是锈的天下吗?

说到Rust,还有一个很纠结的问题:如果它很棒,为什么不是所有人都用它呢?

目前,还很难找到有关Rust的工作岗位,Hacker News上面的招聘趋势印证了这一点。根据Google搜索数据得到的信息显示,程序员对Rust感兴趣比例还比较低。

但是请不要混淆当前状况和长期行业影响。例如,不能简单的因为Go现在比Rust流行,就判定(将来)Go会赢而Rust会输。

这是错误的比较方法。Cheney解释说:“Rust的竞争者是C++和D语言,使用C++和D的程序员为了追求最高性能,已经准备好接受复杂的语法和语义(以及因此导致的较低可读性的代码)。”然后,他又补充说,“Go的竞争者是Ruby、Python、Node.js (v8),这些语言多是在2006年之后互联网2.0时代发展壮大的,他们的使用者对基于JVM的语言很高的部署成本失去了耐心。”他们之间的应用场景和用户群,都有很大的不同。

我希望Go继续成长,但是我猜想,Rust将会对我们整个行业中最重要的程序,产生深远的影响。

就像Peter Bright说的那样,“Rust尝试提供像C或C++那样的性能和控制,同时让C和C++经常出现的安全方面的BUG(security-compromising bugs),在Rust中更难出现。”

Mozilla公司通过大量应用Rust(Servo/Firefox),能够向C语言开发者展示Rust语言的能力,其中某些C开发者一直在寻找更好的语言。通过应用Rust,Mozilla公司也在逐步让自己重新成为现代应用开发领域的主导力量(central force)。

题图来自Shutterstock

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值