全面认识 RUST -- 掌控将来的雷电

文章目录html

  • RUST 简介
  • 如何衡量语言的好坏?
  • 静态语言
  • 编译器
  • 语言定位
  • 表明性项目
  • Hello World
  • RUST 前景

RUST 简介

Rust 是一种兼顾内存安全、高并发和稳定运行的编程语言。它有着惊人的运行速度(有些领域甚至超过 C/C++),可以防止运行错误,并保证线程安全。RUST 语言使每一个人都可以构建可靠、高效的软件。程序员

如何衡量语言的好坏?

在编程领域,人们一般从如下几个方面判断语言的 [好坏] :编程

  • 性能
  • 生产率
  • 可靠性

性能:RUST 在这几个方面作得都不错,甚至超过同类语。RUST 没有 Runtime 和 GC,即 RUST 没有运行时,也不用垃圾回收。这使得它的运行速度很是快,而且很省内存。浏览器

生产率:不得不说,RUST 的文档写得很好。出色的文档和友好的编译器、一流的包管理器和构建工具、精准的错误提示,这些都是 RUST 为开发者准备好的,咱们只须要将精力放在逻辑上便可。七牛云存储

可靠性:RUST 的编译器很严格,它几乎不容许任何不可控的因素存在。它会在编译时为你检查语法、变量、全部权等内容,避免程序在运行中发生故障。安全

RUST 的可靠性真的很强,这并非吹的。严格的编译器将因患扼杀在萌芽时期,一旦编译经过,那么你的程序将变得很是稳定(社区讨论到,编译经过后的程序稳定性在 90% 以)。bash

静态语言

RUST 是一门静态语言,这也是它运行速度如此快的缘由之一。在遇到 RUST 以前,我是一名 PYTHON 开发者。PYTHON 最让人诟病的莫过于速度,不管是 WEB 、网络仍是程序执行方面,都让人感到难过。动态语言的优点是灵活、简短和足够快的开发速度。静态语言的优点则是运行速度,为此,咱们必须牺牲开发速度(当你熟悉以后,其实开发速度也不会差到哪里去)。网络

编译器

与 PYTHON 这种动态语不一样,RUST 程序在运行前必须进行编译,编译完成后才可以运行。RUST 的编译器是 LLVM(底层虚拟机 Low-Level Virtual Machine),一样使用 LLVM 做为编译器的开发语言还有 Swift。并发

语言定位

每一门语言都应该有本身的定位,虽然最终的结果和开发团队预想的不一样。PYTHON 现在被应用在互联网各个领域,如爬虫、WEB、深度学习、软件开发等,虽然 WEB 领域有 JAVA、PHP 和 GO 这样的强劲对手,但使用 Django、Flask 和 Tornado 的开发者仍然很多。curl

我是一名职业爬虫工程师,因此爬虫领域的事我比较清楚,PYTHON 在爬虫领域几乎没有对手,这个领域排名第二的应该是 JAVA,其次是 GO 语言。爬虫是多变的,爬虫工程师常常改动它们的代码,从开发效率和开发时间方面来讲,没有什么语言比 PYTHON 更省事。爬虫爬取过程并不追求超高的速度,太快的话会致使目标网站拒绝访问(大量垃流量是不道德的行为),若是影响网站运行,那么就会将本身处于法律边缘。还有一点, PYTHON 库很是多,不少东西伸手就用,根本不须要耗费时间去造轮子。综合考虑来讲,爬虫领域还真的是 PYTHON 更合适一些。

因为 PYTHON 丰富的生态和极简的代风格,使它成为深度学习的首选。PYTHON 占据着深度学习的大半江,这点是其余语言难以撼动的。

软件开发领域,常年以来都被 C# 和 C++ 占据,系统层面则是 C 和 C++,其余语言根本没有参与的能力(相对于 C++ 和 C 来讲,GO PYTHON NODEJS JAVA 这些语言太弱了)。

RUST 能作什么呢?适合作什么呢?

RUST 语言对标的是 C 和 C++,但它还具有了抗衡 GO 语言的能力,在深度学习和爬虫领域也有必定的机会。RUST 被视为 [系统级] 语言,它可以开发出稳定性超强、运行速度极快的项目。可以成为系统级编程语言,是由于它无 GC 和 Runtime,它超强的稳定性来源于全部权。

有实际案例证实,RUST 将会成为下一代操做系统的开发语言。火狐用它编写了一个名为 Redox 的类UNIX 操做系统。系统界面以下:

C++ 一直是游戏和高性能软件的首选,但不少开发者都会遇到内存(C 语言也有,如悬垂指针)方面的问题。RUST 严格的编译器和良好的设计使它规避了这些问题,它并不会出现内存安全方面的故障。而且,因为 RUST 和 C++、C 同样,都是无 GC 和 Runtime 的编程语言,也同为静态语言,因此它可以扮演 C 和 C++ 的角色,甚至还有些优点。

在 WEB 领域,如今 GO 语言火得一塌糊涂。这得益于它的运行速度和开发效率——它既有 JAVA 的运行速度,有又堪比 PYTHON 的开发效率,并且它在高并发场景的处理能力高过 PYTHON 等语言。这些因素综合在一块儿,使它成为现在 WEB 开发的首选。RUST 的运行速度和高并发处理能力只会比 GO 更强,但开发效率方面却没法保证(语法方面其实也还能够,但因为编译器的严格要求,使得开发效率不高)。

有人用 RUST 代替 GO 了吗?固然有,否则我也不会抛出这个话题,请看:

  • TiDB 团队使用 RUST 来构建 TiKV 产品,团队开发人员在 RUST 大会上有谈论过 RUST 与 GO 的选择。在综合因素的考虑下,他们最后选择了 RUST。

  • 一些区块链项目正在/已经从 GO 专为 RUST,不为别的,安全。

深度学习方面,Tensorflow 已经支持 RUST 了。若是这还不能说明什么,那么咱们能够从速度上考虑这个问题。神经网络的发展很迅速,并且层级愈来愈深,还有不断加深的趋势。我对图像识别和卷积有一些了解,卷积经过不断的计算图片像素张量得出特征。程序不断的迭代图像,直到得到 [合适] 的特征,这个过程其是计算的过程。目前来讲,GPU 的计算能力比 CPU 要高,因此计算方面都由 GPU 完成,而不是 编程语言。可是程序自己的运行速度是总体效率的一个部分,因此 RUST 有可能被用来处理那些耗时的工做。(深度学习领域的生态确定赶不上 PYTHON,不要想了)。

爬虫领域,爬虫不仅仅是网络请求和文解析的问题,它是综合技术的应用。程序运行速度并非硬需求,但每一个爬虫工程师都但愿 PYTHON 的运行速度再提高一个等级(事实上,大部分 PYTHON 开发者都但愿 PYTHON 和 C 同样快)。因此,若是 RUST 下降网络请求和文本解析的门槛,我认为它也会吸引一部分使用 PYHTON 的爬虫工程。我就是这么被吸引过来的,我要造几个轮子(网络请求文本解析方面的轮子)。

表明性项目

新的语言,若是没有表明性项目,那么就很难斩露头角。固然,若是有 Google 这样的大公司推进,事情就会彻底不同(参考 GO 和 Flutter)。但 GO 语言已经有了足够强大的产品做为证实,好比 Docker、七牛云存储、TiDB 和 Kubernetes。

RUST 生于火狐,由火狐研发人员和 RUST 社区维护。目前来讲,RUST 还未出现相似于 Docker 或 Kubernetes 这样的流行项目,但 RUST 在一些领域已经有了大的迈步,如:

  • Redox - 类 UNIX 操做系统。
  • Servo - 火狐新一代浏览器引擎。
  • TiKV - 分布式的 KV 系统。

而且,不少大企业都在尝试将 RUST 融入到生产中。我相信在将来几年,RUST 确定会大放异彩。

Hello World

以前提到过,RUST 文档很友好,咱们能够经过一个案例了解 RUST。

在开始以前,咱们须要下载并安装 RUST 语言。根据官网文档教程(若是你们不习惯看英文文档,能够到 RUST 中文站查看教程,如下为 Linux 环境下的安装,Window 环境安装以教程为准)的提示,咱们在终端运行如下命令:

curl https://sh.rustup.rs -sSf | sh
复制代码

便可完成 RUST 的下载,并安装 RUST。这会安装最新稳定版 Rust。过程当中可能会提示你输入密码。若是安装成功,将会出现以下内容:

Rust is installed now. Great!
复制代码

而后配置环境变量,在 ~/.bash_profile 文件中增长以下内容:

$ export PATH="$HOME/.cargo/bin:$PATH"
复制代码

配置保存后,使用命令让其立生效:

$ source ~/.bashrc
复制代码

一切准备就绪后,咱们就能够开始编写代码了。新建名为 hello.rs 的文件,并将如下内容写入 hello.rs:

fn main() {
    println!("Hello, world!");
}
复制代码

代码编写完成后,须要进行编译,才能运行。在终端执行如下命令:

$ rustc hello.rs
$ ./hello
复制代码

若是看到终端输出 Hello, world! 则表明程序运行成功。

你已经正式编写了一个 Rust 程序,成为一名 Rust 程序员,欢迎!

RUST 前景

花里胡哨的语言咱们见得多了,它们既不安全又慢。多年来,没有任何语言可以撼 C/C++ 的地位,RUST 的出现使得编程界有了新的氧气。做为一名从事爬虫工做的开发者(接触的技术较多),我认为编程语言 [快] 是趋势,静态语言是将来。我很喜欢 PYTHON,它的语法简洁、开发效率超高。但不得不认可,我从心底里但愿 PYTHON 变得更快,但动态语言出身的它决定了它速度的上限,因此我将目标转投到 RUST 上。GO 语言很是优秀,生态也很好,但我看好 RUST 而不是 GO 的理由是:RUST NO GC NO RUNTIME,SAFTY。

这使得 RUST 必将成为将来掌控雷电的语言,尤为是 Redox 的出现,使我更加坚信 RUST 的将来。

相关文章
相关标签/搜索