现代编程语言有很多,在我的编程学习里面有小学阶段的 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 的方式继续同大家分享,敬请期待!

最后附上这个系列课程的三讲内容:

Rust 编程语言 - Rust 基础学习

Rust 编程语言 - Rust 网页编程

Rust 编程语言 - Rust 网络编程&IoT编程

CA周记 2022年的第一课 - Rust的更多相关文章

  1. emacs 入门第一课:Emacs里的基本概念

    Table of Contents 无聊的开场白 buffer(缓冲区) window(窗口)与frame Emacs的mode Emacs Lisp 函数function.命令command.键绑定 ...

  2. vue.js学习(第一课)

    学习资料 来自台湾小凡! vue.js是javascript的一个库,只专注于UI层面,核心价值永远是 API的简洁. 第一课: 不支持IE8. 1.声明式渲染: el元素的简称 element : ...

  3. Magento学习第一课——目录结构介绍

    Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...

  4. <-0基础学python.第一课->

    初衷:我电脑里面的歌曲很久没换了,我想听一下新的歌曲,把他们下载下来听,比如某个榜单的,但是一首一首的点击下载另存为真的很恶心 所以我想有没有办法通过程序的方式来实现,结果还真的有,而且网上已经有有人 ...

  5. 留念 C语言第一课简单的计算器制作

    留念 C语言第一课简单的计算器制作 学C语言这么久了.  /* 留念 C语言第一课简单的计算器制作 */   #include<stdio.h>  #include<stdlib.h ...

  6. MFC学习-第一课 MFC运行机制

    最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...

  7. OpenCV 第一课(安装与配置)

    OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然 ...

  8. 【第一课】神奇的Context

    初学Android的困惑 初学Android跳转页面的时候,往往教程里是这么写的: Intent intent = new Intent(); //MyActivity就是当前的Activity,It ...

  9. CodeIgniter框架入门教程——第一课 Hello World!

    本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...

随机推荐

  1. Windows点击更改适配器选项出现的网络连接为空

    前言:windows出现点击更改适配器选项出现的网络连接为空,一直找了很久,没有找到方法 解决方案: 1:点击状态: 2:点击网络重置 最后:电脑进行重启,即可.

  2. IDEA Debug常用快捷键

    快捷键 介绍 F7 步入:进入到方法内部执行.一般步入自定义的方法.区别于强行步入 F8 步过:不会进入到方法内部,直接执行. F9 恢复程序:下面有断点则运行到下一断点,否则结束程序. Shift+ ...

  3. 利用babel将es6语法转es5的简单示例

    前言 Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. 这意味着,你可以现在就用ES6编写程序,而不用担心现有环境是否支持. 文件目录结构 生成包管理配置文件pa ...

  4. iOS,蓝牙开发!!--By帮雷

    iOS的蓝牙开发大致有以下几种方式. 1 GameKit.framework [只能存在于iOS设备之间,多用于游戏 能搜索到的demo比较多,不确切说名字了,code4app里面就有] 2 Core ...

  5. 关于protected在子类创建父类对象无法访问父类protected方法或成员

    子类(父类的外部包)中访问父类的protetcted属性或者方法,是不可以通过创建父类对象调用的.注意:此处不讨论同包下的父类子类,因为同包下所有类都可访问protected属性或者方法. 请参见Ja ...

  6. k8s之list-watch机制、节点调度以及亲和性

    k8s之list-watch机制.节点调度以及亲和性 目录 k8s之list-watch机制.节点调度以及亲和性 一.list-watch机制 1. list-watch介绍 2. list-watc ...

  7. k8s之Dashboard插件部署及使用

    k8s之Dashboard插件部署及使用 目录 k8s之Dashboard插件部署及使用 1. Dashboard介绍 2. 服务器环境 3. 在K8S工具目录中创建dashboard工作目录 4. ...

  8. Shell之awk

    Shell之awk 目录 Shell之awk 一.awk概述 1. awk的工作原理 2. 命令格式 3. awk常见的内建变量(可直接用) 二.操作实例 1. 按行输出文本 2. 按字段输出文本 3 ...

  9. Scala变量和数据类型

    一.注释及代码规范 Scala的注释和Java中完全相同:单行注释:// .多行注释:/* */ 以及文档注释:/**   */: 使用tab操作,实现缩进,默认整体向右边移动,用shift+tab整 ...

  10. Flask初探之WSGI

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,小型团队在短时间内就可以完成功能丰富的中小型网站 ...