最受欢迎编程语言排行榜新星,竟然不是Python而是它

2020年12月31日,Mozilla发布了Rust最新稳定版本1.49.0。自2010年首次发行至今,Rust已经走过了近10年的岁月。

Rust是一门系统编程语言,它支持函数式、命令式以及泛型等编程范式的多范式语言。同时,它也提供了甚至超过C/C++的性能和安全保证。掌握Rust并熟练运用它,可以更快地编写出优秀的程序。

那么从Rust诞生到现在,背后有哪些故事呢?小邮这就带你走进Rust的世界。

01从私人走进大众

“Rust是一种采用过去的知识解决将来的问题的技术。”

——Graydon Hoare

Rust是由Mozilla主导开发的通用、编译型编程语言。Rust兼顾有安全、并发、实用的特点,还支持函数式、并发式、过程式以及面向对象的编程风格。

Rust语言原本是Mozilla的员工Graydon Hoare的私人计划。Mozilla于2009年开始赞助这个计划,并且在2010年首次揭露了它的存在。

精通Rust 第2版 ¥116.4 购买

同一年,Rust的编译器源代码开始由原本的OCaml语言转移到用Rust语言进行bootstrapping工作,并于2011年实际完成。

2012年1月,第一个有着版本号的Rust编译器发布了。三年后的2015年5月,Rust第一个稳定版发布,这个项目开发的初衷是希望解决使用C++编写的Gecko中出现的内存安全问题,被命名为Rust 1.0。

Gecko是Mozilla Firefox浏览器采用的浏览器引擎。而C++不是一种容易驾驭的语言,并且存在并发抽象容易被误用的问题。

由于大量开发人员在拥有庞大代码库的Gecko上进行协作,因此使用C++在其中编写并发代码的体验非常糟糕。随着希望消除C++“不良”部分的呼声日渐高涨,Rust诞生并带来了Servo——一个从头开始创建浏览器引擎的新研究项目。

Servo项目利用前沿编程语言的特性向语言开发团队提供反馈,这反过来又影响了语言的演变。

02有趣的“真菌”名字

在英文词典中,rust的意思其实是铁锈的意思。很明显,Rust作为一门系统的编程语言,与铁锈并无多大联系。那么Rust的名字来源于哪里呢?

▲rust释义 来源:欧路词典

简单地说,Rust的名字来源自一类真菌:rust,而在中文的表达里,植物产生的许多锈病是这类真菌造成的。

那么这类真菌有什么特点呢?

1.在结构上没有一个中心点,呈现完全分布式,非常地强壮。

2.生命周期中五种形态,非常独特。多种生物形态能映射出Rust多范式的特点。

3.寄生时多宿主,且能在宿主间切换,映射Rust对于语言间互操作性的重视。

4.具有独有特性质:Dikaryon, 可同步并行检查组合的并行性,用来保证rust菌群强壮生存。

其实,Rust取名的真相带着一股揶揄的气息:之所以取名为Rust,其实是因为Mozilla旗下的Firefox浏览器对“侵占”它市场的Chrome有着深深的“恶意”,因此为了“损”它的竞争对手而出的妙招。

03不守规矩到处“抄袭”?

一门编程语言的诞生,预示着另一门或多门语言产生的痛点不足以支持这些语言生存,否则必定会诞生就宣告失败。

Java十分地依赖机器回收机制,而C++则是十分地信任对象的操作。因此为了在这二者的特性中做出平衡与选择,Rust必须经过一些改变和升级。

因此,为了让自己茁壮成长,Rust第一个“抄袭”的就是C++和Java,实现了有Rust特色的接口。

由此,Rust选择了相信规则:让规则来解决内存相关的维护工作,违反规则编译则会被拒绝通过。

就这样,Rust语言的横空出世,引得无数程序员感慨良多。毕竟没有使用过C和C++的程序员,不会理解为了内存问题而反复DEBUG代码的艰难。

Rust就像一名没有实习经历的高材生,虽然五脏俱全、特性卓绝,但缺少历练,需要丰富经验的教授带领前行。于是,Java和C++就充当了这个教授的职责,带领着Rust不断创新和融合,最终打造了一个优秀的编程语言。

04优势明显,深受好评

因为是基于Mozilla开发的系统编程语言,而Mozilla又具有很好的安全性能,因此Rust在安全性上的表现尤为突出,过去五年时间,Rust获连续获得了StackOverflow开发者调查中“最受喜爱编程语言”的 Top 1。

那么在现阶段来说,Rust具有哪些优点呢?

1.非常迅速。

使用Rust编程语言可以进一步减少开发程序所耗费的一定时间。

2.工具链有优势。

Rust具有cargo、rustfmt工具链,更为方便。

3.几乎可以用它做任何事。

可以使用Rust编写浏览器,编写Web应用,甚至还能编写游戏。

4.社区友好。

Rust社区具有良好的沟通和学习氛围,用户都十分地友好。

想要系统地学习、甚至是精通Rust,你一定离不开这本《精通Rust(第2版)》。

精通Rust 第2版

作者:[印]拉胡尔·沙玛(Rahul Sharma) ,

[芬]韦萨·凯拉维塔(Vesa Kaihlavirta)

译者:邓世超

Rust是一门系统编程语言,是支持函数式、命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似。

Rust快速、可靠、安全,它提供了甚至超过C/C++的性能和安全保证,同时它也是一种学习曲线比较平滑的热门编程语言。

本书内容共17章,由浅入深地讲解Rust相关的知识,涉及基础语法、软件包管理器、测试工具、类型系统、内存管理、异常处理、高级类型、并发模型、宏、外部函数接口、网络编程、HTTP、数据库、WebAssembly、GTK+框架和GDB调试等重要知识点。

本书适合想学习Rust编程的读者阅读,希望读者能够对C、C++或者Python有一些了解。书中丰富的代码示例和详细的讲解能够帮助读者快速上手,高效率掌握Rust编程。

初入门:哪几种编程语言最值得学习

IT之家(www.ithome.com):初入门:哪几种编程语言最值得学习

有几个人曾经问我,有哪些最有用或最好的编程语言适宜学习?

姑且略过HTML/CSS不谈,我认为答案取决于你想通过编程来做什么。

要点速览

对只用一种语言来构建某个项目的情况而言,Javascript和它的框架是非常有用的。

Angular.js可以控制展示给用户的网站前端。

Node.js将作为管理网站所有内容的网络服务器。

Express.js在前端和服务器两者之间运行,对信息的来去进行导向。

MongoDB作为存储中心,用于存储从用户处获取的数据。MEAN(Mongo/Express/Angular/Node)——一个有助于构建你在一个Web应用中所需要的一切东西的结构化框架——是一套目前被大量初创公司所喜好的编程语言。这是一个完备的组件,它包含了基于单一语言来Web化地构建所有事物的技术。

我一直在用Egghead.io和Scotch.io来及时更新我的Angular.js和MEAN技术。Egghead的网站内容主要集中于有序地组织的教学视频。Scotch有一些关于构建Web应用的整个流程的很棒的图表,包括下面这张解释MEAN的图表:

它们都有很棒的教学视频,教你如何构建精巧的应用,例如基本的搜索引擎和新的表单验证方式(以确保若你创建输入表单,人们的实际输入将是有效标准下的值)。通过使用Angular.js,你可以使一个网站动画化并使它“动”起来,而不需要过多的设置。这是非常精巧的一种方式。

Python可读性和灵活性都非常好,最近它成为大学院校在教授计算机专业时选择的入门语言之一。

对于玩转数据以及用它的共通模块来完成各种你以前认为不可能的精巧工作来说——例如抓取完整的网页和进行高级科学计算,Python都是绝佳的。我是在Learn Python上开始学习Python的,它非常符合我“边做边学”的学习风格。

Java(以及其他更紧密地与计算机硬件交互的语言)对人类理解来说会稍难一些,尽管对于帮助你理解“代码的实际运行过程”和“程序员与计算机的交互过程”的绝大部分知识而言,它们是很棒的。

Java也用于在Android系统上的移动应用开发,而这将会是一直有需求的领域。

如果我们想简捷地将知识转换成金钱,那么,我曾见到业界对IOS开发者有着大量需求,而开发IOS应用所使用的Objective-C和Swift也并不那么难学习。

Ruby——尤其是当它与Rails一起使用时——是一种因其并不陡峭的学习曲线而被大量初创公司在初创时所用的语言(事实上,有一本叫Children\’s Book for Ruby的书)。

我自己正在学习Python以处理数据;学习Javascript和MEAN以创建Web应用;以及学习Java以对计算机科学有更深入的理解与构建移动应用。我认为这是一个可用的平衡良好的编程语言组合。

我已经有了一组学习清单和资源,用来帮助你我学习构建杰出作品所需要的东西。但实际上,这些都不是最好的编程语言。

最适宜学习的编程语言——以及如何着手去学习它

学习如何像一个程序员那样思考——学习如何通过简洁的代码来用数学解决问题,绝对是最适宜学习的东西。编程语言会演进,它们会改变,它们会衰落并不再受欢迎;一个编程语言社群会变化成另外一个。

现在伟大的Web应用可能会在几十年后被淘汰。不会改变的是对人们的逻辑思考和问题解决能力的需求——以及将它们变成在机器上运作的一个更简单的自动化流程的需求。

你可以寄希望于一个事实,那就是随着时代不断发展,如果你训练解决问题的技能,你将能够找到最适合你的语言,以及获得你建立伟大事业所需要的知识与金钱。

我已经开通了Project Euler,它提供一系列与数学和逻辑相关的编程问题。我在Codecademy workspace上尝试用Python构造整洁的代码来解决这些问题。这是一名Google招聘官所提到过的“一个学习编程的很好的训练步骤”,而我并不怀疑这一点。我感到我的大脑更敏锐了,并对我的能力更充满自信——不仅仅是编程能力,还有思考能力。

最适宜学习的编程语言最终还是位于编程核心的逻辑,数学和问题解决能力。“什么是最适宜学习的编程语言”这个问题并无对错,只要你理解编程的基础价值何在。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。