当前位置:澎娱新闻网 > 实时热点 > 正文

Rust语言 篇一|想全面了解 Rust 语言?你想知道的都在这里

导语:理清心灵的混沌,唤醒心灵的世界 对Rust语言很感兴趣,但是被网上各种观点和意见困扰。Rust语言是一种什么样的语言?然后看这篇文章。 因为问题比较多,所以这是一个系列,每篇文章尝试回答五个

理清心灵的混沌,唤醒心灵的世界

对Rust语言很感兴趣,但是被网上各种观点和意见困扰。Rust语言是一种什么样的语言?然后看这篇文章。

因为问题比较多,所以这是一个系列,每篇文章尝试回答五个问题。目前大概需要三个来回答。

这是一个系列的第一篇文章,试图回答下面的前五个问题。如果你感兴趣的问题不在其中,请回复评论。

Rust的创作者都是什么样的人?

Rust是一种什么样的语言?Rust的哲学是什么?

学Rust语言需要高智商吗?

Rust更好C++?

Rust的学习曲线高吗?

零基础能学Rust语言吗?

学Rust语言可以跳过C语言吗?

Rust只能开发底层系统软件?前端工程师可以向Rust学习吗?Rust可以全栈开发吗?

Rust语言适合刷算法题吗?

Rust语言的开发需要杀手级应用吗?

如何学习Rust语言?

听说亚马逊从Rust的核心团队招人?亚马逊会成为铁锈之父吗?

Rust在生产中被使用过的场景有哪些?状态如何?

Rust适应哪些业务领域?Rust在云原生&嵌入式&HPC领域有可能吗?

Rust的就业前景如何?

为什么用Rust写的代码比同样功能的Python慢?

用Rust编译太慢。可以提高编译速度吗?

澄清以下关于Rust语言的谣言:

Rust需要手动管理内存。

Rust代表变量的生命周期。

Rust编译器配有高级编译时GC。

不安全关闭所有检查。不安全,不能使用。

Rust有这么多限制,肯定有运行时开销。

Rust用户都是傻子,只要听编译器写的代码不出错,不考虑底层机制。

Rust连内存泄漏都不能保证,那安全性如何?

回答好这些问题并不容易,但这些问题的答案至少可以为你指明一个方向。

Rust的创作者都是什么样的人?

Rust最初是由Mozilla工程师Graydon Hoare在2006年开发的。后来提交给了Mozilla。2010年以0.1.0版本发布,首次用Ocmal语言编写。

InfoQ在2012年采访了格雷顿。也是同年年初,因为InfoQ采访了Rust语言团队,JS之父Brendan Eich是Mozilla的CTO,而Graydon当时是他带领的,可能有些读者会解读为JS之父发明的新语言Rust。但是JS之父确实为Rust贡献了几十行代码,但是Rust语言的创造者一定是Graydon。JS之父也在同年离开了Mozilla。

为什么?因为正是格雷顿的想法催生了语言Rust。看了格雷顿的采访就知道了。专业的编译工程师Graydon已经看到互联网的未来是安全和性能并重的,他熟悉很多优秀编程语言的特点。他想把这些优秀的语言特征融合到一门语言中。是他的想法创造了Rust。

格雷登在2015年Rust 1.0发布初期高调宣布离开Rust团队。他自称累,不想当技术带头人,只想开开心心写代码。后来去了苹果的Swfit团队。现在我应该离开苹果,自己创业了。

除了格雷顿,还有一群优秀的人:来自以尼科为核心的语言核心团队的人。你可以在rust官网的治理页面上看到Rust语言:https://www.Rust-lang.org/Governance的各个团队的成员信息。在这个页面上,你还可以看到曾经为Rust效力的球员。然而,格雷顿不在其中,但社区里的人永远不会忘记他。现在格雷顿偶尔会参与GitHub上一些Rust语言特性的讨论。

2020年8月,Mozilla裁员。Mozilla因为疫情导致的经济低迷,改变了策略。伺服团队的成员都被裁掉了,Rust团队的一些Mozilla员工也包括在内。其中包括铁锈编辑团队的领导者之一费利克斯·克罗克。

2020年11月底,亚马逊在其官方网站的博客上高调宣布,已聘请费利克斯·克洛克(Felix Klock)。但是国内很多媒体,包括一些自媒体,都把费利克斯·克洛克解读为Rust语言的创造者。然而,费利克斯只是编译器团队的领导者。他只是没有拿到Mozilla的工资,但他还在Rust编译器团队。所以,不要被网上的谣言所偏见。想学习Rust,必须自己了解Rust的语言及其生态信息。

目前Rust基金会也在积极筹备中,据说位于瑞士,Rust的未来可期。

Rust是一种什么样的语言?

Rust是一种兼顾安全性和性能的通用编程语言。

Rust官网的口号是:

每个人都有一个

一种用于构建可靠且高效的软件功能的语言。

一种让每个人都能构建可靠高效软件的语言。

Rust语言从语言层面保证了程序的正确性,并基于类型安全的类型体系,专门为内存安全和并发安全做了所有权语义模型。它允许开发人员在编译阶段识别内存不安全和线程不安全的错误。

但也造就了Rust语言的高学习曲线。因为在Rust语言出现之前,绝大多数开发人员都没有收到过专门的安全编程规范。Rust编译器内置的各种安全检查规则,结合Rust语言的所有权语义,就像一个路障,挡住了每一个没有掌握Rust安全编程模型的开发者。

这也是很多C++开发人员批评Rust的原因之一,因为Rust的安全模型已经成为很多开发人员的“精神负担”。是否是“精神负担”是见仁见智,至少我不这么认为。因为安全的根本在于“人”,有人的地方就有bug。Rust语言带给开发者的“精神安全模型”是帮助开发者在编译时发现问题,这是必须付出的代价。与其为记忆不安全付出痛苦的代价,不如在早期付出一定的学习成本。

至于“高效率”,不仅仅指性能。Rust可以写出堪比C/C++的高性能代码,也有堪比Ruby /Python等高级动态语言的开发效率。当然,这只有在开发人员掌握了Rust语言安全模型之后才能实现。

Rust高效的开发效率体现在很多方面:

1.rust语言本身出色的工程能力。

2.RUST语言现代化的开发工具链。

3.RUST语言的强类型系统和显式语义使开发人员能够实现高效和无故障的代码重构。

综上所述,一句话:Rust语言是一种兼具安全性和性能、高度抽象表达的现代语言。

铁锈的语言哲学可以概括如下:

1.内存安全是第一原则。

2.在不违反第一原则的基础上,不牺牲性能。

3.达到高度的语义一致性。

4.在安全性和性能的基础上,开发人员的人机工程学至关重要。

5.语言特征必须保持实用性。

6.提供详细的文件和学习资料。

7.开放和谐的社区也是语言的一部分。

学Rust语言需要高智商吗?

智商正常的都可以学Rust。

学会生锈不一定代表你智商高。

但是学会Rust意味着你是一个合格的程序员,掌握了一定的安全编程基础。

掌握Rust不会给你带来智商上的优越感,但一定会让你重新爱上编程。

Rust更好C++?

Rust语言刚发布的时候,很多人把Rust和C++做比较。因为Rust语言在语法和应用领域都和C++不相上下。

Rust不是Better C++。如果用更准确的描述,那么Rust应该是“新时代的C语言”。

每种语言的背后都是一个时代。

20世纪70年代,C语言、ML语言等建立了编程语言范式。c语言随着Unix/Linux操作系统一起唱歌。

20世纪80年代,C++语言诞生了“C带类”的标签。C++正在走向一个非常重视开发者生产力的时代。

90年代诞生了很多开发效率高的语言。而被称为纯函数式编程语言的Haskell就诞生了。面向对象语言和函数式编程语言这两种编程范式语言取得了长足的进步。

20世纪末,系统软件通常是用C语言构建的..因为它们的语义紧密反映了CPU的使用,所以这些语言产生了一个精简的高性能系统。为了提高效率,代价是冒着安全漏洞的风险,比如缓冲区溢出,这使得我们的关键系统容易受到恶意行为者的攻击。

21世纪初,随着互联网的发展,学术界和企业都意识到了安全的重要性。2001年,特雷弗·吉姆(Trevor Jim)和格雷格·莫里塞特(Greg Morrisett)发起了一个开发C编程语言安全方言的联合项目,这是关于类型化汇编语言的早期成果。经过五年的努力和一些已发表的论文,团队在2006年发布了Cyclone 1.0。在Cyclone看来,不安全的程序应该很难写,无法编译,遇到安全违规就会死机。同年,Rust语言的创造者Graydon受到CyClone的启发,创立了Rust语言。

从现在开始,CyClone的安全模型非常符合Rust的核心思想:

代数数据类型。Rust还支持并引入了函数式编程特性。

泛型。Rust也支持。

存在类型。Rust有。

基于区域的内存管理。

线性/仿射类型

为了更安全的指针,CyClone有几种指针类型,比如空指针、胖指针、内存安全指针、多态指针等等。而Rust只区分了“引用/借用”、“智能指针”和“裸指针”,巧妙地将借用检查融为一体。

与c语言无缝兼容。Rust通过划分不安全边界与C-ABI无缝对接。

从Rust的“考古”可以看出,Rust其实更像是C语言的重新实现。这种认识是为了适应新时代安全与性能并重的要求。未来,安全不仅仅是一种选择。

综上所述,说Rust是Better C++不是严格的说法。Rust更像是开启新时代的通用“C”语言。

Rust的学习曲线高吗?

首先,Rust是有学习曲线的。如前所述,Rust的安全编程模型是每个开发人员都必须掌握的心智模型。

其次,不同编程语言的人掌握这种心智模型的学习曲线不同。为此,我列出了以下脑图:

完全零基础开发者:掌握计算机基础系统的知识结构,理解Rust语言的核心概念;

c语言基础:由于c语言开发人员对高级语言的抽象理解不是很好,所以专注于理解Rust语言的抽象模式,掌握Rust的所有权机制;

C++基础:C++开发人员对Rust语言的归属有很好的了解,侧重于Rust的抽象方式和函数式语言特点;

具备Java/Python/Ruby基础:专注于理解和攻克Rust所有权、抽象模式和函数式编程语言特性;

Go基础:Go语言开发者很容易理解Rust的类型和trait的抽象模式,但Go也是GC语言,所以所有权机制和函数式语言特性是他们研究的重点。

Haskell基础:Haskell系统的开发者能够很好的理解Rust语言的功能特性,主要克服了所有权机制和OOP语言特性。

感谢阅读

本系列不再继续,下一篇文章将回答五个问题:

零基础能学Rust语言吗?

学Rust语言可以跳过C语言吗?

Rust只能开发底层系统软件?前端工程师可以向Rust学习吗?Rust可以全栈开发吗?

Rust语言适合刷算法题吗?

Rust语言的开发需要杀手级应用吗?

如果你喜欢这篇文章,请在你走之前赞美它!

免责申明:以上内容属作者个人观点,版权归原作者所有,不代表澎娱新闻网_最近新闻热点大事件_今日热点新闻_每日娱乐新闻立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
当前文章地址:https://www.pengyushicai.com/redian/807609.html 感谢你把文章分享给有需要的朋友!
上一篇:世界儿歌日 “世界儿歌日”:今天,你教孩子唱了什么? 下一篇: 政法频道官网 广深港旅客漏乘后续:长沙电视台记者采访旅客致漏乘最新