100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 未来Rust编程语言会成为主流吗 – PHP基础 – 前端 keepphp

未来Rust编程语言会成为主流吗 – PHP基础 – 前端 keepphp

时间:2019-02-20 15:08:06

相关推荐

未来Rust编程语言会成为主流吗 – PHP基础 – 前端 keepphp

《将成为系统程序员的“RUST”年》——Rust提供了业界创建安全系统编程的最佳选择

Rust是一种开源系统编程语言,专注于速度、内存安全性和并行性。 Rust编程语言作为C、C++和其他语言的替代方案,以此来改善应用程序的安全状况 Rust旨在利用高级语言的能力来满足低级系统编程的需求。

未来Rust编程语言是否会成为主流,这需要了解Rust的过去和以后动向:

Rust的动向对于已过去的,关于Rust你需要知道些什么

最近几年来,Rust积攒了很多粉丝,这不是毫无原因的——

对于满足系统编程需求,C++是个选择,而Rust旨在成为其可靠的替代品。实际上,它解决了C++中许多固有限制,例如:内存安全和线程安全问题,这些问题通常会导致令人厌烦的的分段错误。 Rust旨在利用高级语言的能力来满足低级系统编程的需求。

在许多情况下,内存安全错误已成为安全漏洞的根本原因。从一定的视角下,请考虑一下这个数字–“ Microsoft的所有CVE中,大约70%是内存安全问题”。 C/C++程序员一直都在遇到与内存相关的错误——使用未初始化的内存、基于“释放”内存后使用、缓冲区溢出。另一个棘手的错误源是数据争用(data races)和竞争条件;基于进行读/写的顺序对数据的不可预见的使用。

Rust是一种开源系统编程语言,专注于速度,内存安全性和并行性。三个词定义了Rust:安全,并发和快速。其目的是防止首先引入内存安全错误。

一个简单示例的截图,显示Rust在编译时如何捕获内存错误;而实际场景更加复杂,这是内置功能应派上用场的地方。

Rust在编译时如何捕获内存错误,数据源Source: Talk by Steve Klabnik (@SteveKlabnik)

尽管现代变体引入了更多的保护措施,但C++并不是一种内存安全的语言,鉴于使用C/C++构建了许多核心平台组件,这样说一点也不过分。

谁在使用Rust?目前在使用Rust这门语言的产品及大厂,数据来源:Source: Ryan Levick’s presentation

说到利用Rust开发的应用,目前进行中的至少可以拿出两个:

操作系统作为系统程序的示例Firefox Servo作为高并发的示例

Amazon Firecracker,是一种支持AWS Lambda和AWS Fargate的开源虚拟化技术,它是用Rust编写的;目的是利用Rust的线程安全性并防止可能导致安全漏洞的缓冲区溢出错误。

与此有关AWS服务包括Amazon Simple Storage Service(Amazon S3),Amazon Elastic Compute Cloud(Amazon EC2),Amazon CloudFront,Amazon Route 53。

操作系统

AWS推出了Bottlerocket,这是一个用Rust编写的基于Linux的容器操作系统,Bottlerocket仅包含运行容器的基本软件,从而可以提高资源利用率并减少攻击面。

Google Fuchsia OS的TCP/IP堆栈是用Rust编写的。Fuchsia具有模块化的内核体系结构,其中一些组件是用C ++编写的,一些组件是用Go语言编写的,其他组件则是用Rust语言编写的。这说明Rust具有与其他语言编写的组件进行交互以帮助实现模块化内核体系结构的能力。

数据来源:/playing-around-with-the-fuchsia-operating-system.htmlFirefox

在其新的CSS引擎(Quantum CSS)中,Firefox利用了Rust内置的编译时支持并行性。Web浏览器为背景的并行性,意味着你正在尝试并行呈现网页的所有不同部分;要知道并行性是很困难的,因为它引入了“竞赛条件”(Race Conditions),这些条件难以识别且难以排除。

这就是Rust发挥其威力的地方,Rust编译器静态验证代码以防止在编译期间出现竞争状况。

来源:Source://08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/WebAssembly

WebAssemply通过将已编译的代码带到浏览器来向Web应用程序添加新功能;WebAssembly允许你采用以编译语言编写的功能,例如:C ++和Rust,并在Web浏览器中安全地运行它。

Rust提供了业界创建安全系统编程语言的最佳机会。——微软 Ryan Levick

最后,回顾下,关于Rust发生了什么变化

Rust最初被认为是Mozilla研究项目,直到最近才成为[开源Rust]项目的唯一官方赞助商。然而,在8月,它解雇了250人,其中包括积极参与Rust项目和Rust社区的部分人。

(一些Rust维护者正在加入Amazon和Facebook,领导他们新创建的Rust团队。Niko Matsakis( @nikomatsakis)加入了亚马逊,Patrick Walton(@pcwalton)加入了Facebook,成为Rust团队的技术负责人。此外,Rust基金会正在公司化成为一个独立实体成立,但尚不清楚发起人是谁。目前的赞助商名单包括Sentry、GitHub、Google Cloud、Amazon Web Services、Mozilla和Microsoft。GitHub和Azure托管repo存储库和CI基础结构。

与众不同的Rust

与Java不同,Rust的设计不需要垃圾收集器。不需要垃圾收集器意味着你不会受到运行时性能的损失,尤其是在低功耗硬件上。编译时验证以确保线程安全和内存安全。 偶认为这是最重要的区别因素,因为你不再依赖运行时检查。系统编程应将异常处理移至编译时,并避免程序员犯错误在先。不允许为Null,也不支持例外。即用的软件包管理器可以与生态系统的其余部分集成(非常类似于Python),但是以前系统编程语言是没有有此功能的。零成本抽象。什么意思呢?也就是说,由于抽象的系统开销,高级语言的性能和安全性通常需要权衡。 这会联想到引用计数的指针和运行时检查。

关于Rust的温馨提示

尽管Rust语言有诸多好处,但诚然其陡峭的学习曲线是不可避讳的。

此外,机构组织恐怕不太会利用Rust重新编写现有软件系统,而宁愿使用它来构建和当前生态系统作集成的新组件,因此,跨库组件和工具链的互操作性成为重要的考量因素。

Rust社区

过去的五年中,Rust在StackOverflow上的开发者调查问卷中一直是最受欢迎的编程语言,位居榜首。

例如,在调查中,有86.1%的开发者正在使用该语言或技术进行开发,并且表示有兴趣继续选用该语言。这几乎是C ++收到的票数的两倍!

另外也可以参考美国社群应用Reddit上Sub-Reddit调查(r / adventofcode),其中Rust在Python之后排在第二位。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。