现代编程语言有很多,在我的编程学习里面有小学阶段的 LOGO , 中学阶段的 Pascal ,也有大学阶段的 C/C++、Java、.NET,再到工作的 Objective-C 、Swift、Go、Kotlin,以及 Rust 。2021年,4个月的人工智能课程结束后,我在想有什么技能可以带给各位 Reactor 的小伙伴。我有想过是我司三朵云上很 Cool 的产品,还是一些解决方案的实践。在权衡后,我决定给大家带来 Rust,作为2022年新的开始。
为什么选择 Rust?
不知从什么时候开始,每个语言诞生都在说自己的高性能、可靠性和生产力。而当你真正入坑后,总会有各种抱怨。我了解 Rust 是3年前衣明志老师介绍的。他是怎么安利的我忘记了,不过我就踏入了这个坑。
Rust 的语法和 C++ 很像, 具有高速和内存安全性。Rust 是系统级别的编程语言。
我们来看看 Rust 和 C/C++ 的一些关于内存安全的对比:
int checkStr()
{
char *str = strdup("Hello Reactor!");
return 0;
}
在 C/C++ 中,上述语法忘记了释放指针,导致了内存泄露,这是一个非常基础的问题。但在 Rust 中,我们可以通过作用域去避免同样的问题。
fn checkStr(){
let str = String::from("Hello Reactor!");
}
单从内存安全性上,Rust 就足够好用。另外,Rust 还可以通过 Crates 去管理相关的包。整个项目代码从项目建立、构建到测试,再到运行部署的周期,对比在 C/C++ 开发时的杂乱无章,真的是太舒服了。
用什么工具开发 Rust? 一个好的工具,可以提升开发的效率。开发 Rust 我还是强烈推荐 Visua Studio Code。里面有非常完善的 Rust 支持。只需将 rust-analyzer、CodeLLDB以及crates 这三大插件安装好,你就可以非常高效地完成 Rust 的开发。
文章图片
我的课堂上还使用了另外一种方式——Jupyter Notebook。通过 Notebook,你可以完成一些相关的语法学习,以及做一些数据分析。
文章图片
课后也有一些小伙伴问我如何安装。在这里我附上安装步骤。
Python 环境安装和基本的 Jupyter Lab 安装
请参考我之前的文档
Windows 安装
Linux/macOS 安装
组件安装
cargo install evcxr_jupyter
evcxr_jupyter –install
注意:这里有不同的系统配置要求,更多内容请参考: https://github.com/google/evcxr/blob/main/evcxr_jupyter/README.md
Rust 的应用 Rust 的应用场景很广泛。基于自身特点,常用于一些底层、后端服务,以及网络编程的工作。官方也列出了一些主要的应用场景:
文章图片
在这次系列课程中,我主要针对 Web 后端的工作做了相关介绍,当然也提及到了WebAssembly 。建议大家可以回看我的 Rust 课程第二、第三讲。
Rust 的 Web 框架 Actix 和 Rocket 都是非常成熟的 Rust 页面服务框架,两者不相伯仲。我的课程以 Actix 框架为主 ,当然你也可以尝试一下 Rocket 这个框架。
以下是两个框架的介绍,可以根据实际情况进行框架的选择。
文章图片
我个人比较注重架构,好的架构是一个好的项目的开始。做后端服务离不开 MVC 这个熟悉的模式,结合 Rust 的包的知识,我们可以用 Actix 的后端解决方案架构出一个非常好的项目。建议大家在架构 Rust 后端服务时,可以参考我的 Rust 课程第三讲。
课程的遗漏 三周的课程是非常短的,而 Rust 涉及的点还有很多。例如如何用 Dapr,以及 Web Assbembly 的应用等也是我想讲的内容。
接下来我会通过 Workshop 的方式继续同大家分享,敬请期待!
【CA周记 2022年的第一课 - Rust】最后附上这个系列课程的三讲内容:
Rust 编程语言 - Rust 基础学习
Rust 编程语言 - Rust 网页编程
Rust 编程语言 - Rust 网络编程&IoT编程
推荐阅读
- rust|网红编程语言Rust到底是个什么鬼()
- 编程语言|“竟想替代 C 语言(编程语言Go、Rust、C++ 和 Zig 生产力对比!)
- 资讯|编程语言“鄙视链” +1(亚马逊力捧 Rust,Go 技术负责人连发 14 条推特抵制“拉踩”)
- 如何在开源项目中做重构()
- 2021 Rust 调查结果公布(共 9354 份调查问卷收集)
- 公开课(Rust 入门基本原理-2 | Vol. 26)
- 公开课( 类型系统 | Vol. 27)
- This week in Databend #26
- 公开课(如何编写测试| Vol. 30)