rFTP - 用 Rust 实现简单的 FTP Server (2)

rFTP - 用 Rust 实现简单的 FTP Server (2)

前情提要

上一篇文章中,我讲述了我为什么选择 Rust 作为学习计算机底层知识的工具,一些 Rust 的基础知识和我当时所遇到的困难。在这篇又是属于目标回收的文章中,我将介绍最近的进展、Rust 开发的体验和下一步的计划。总的来说,用 Rust 写项目体验尚可,通过与编译器博弈而最终通过“考试”后,自己对 Rust 的理解也有了些许提升。

异步编程

在 Rust 中,异步编程是通过 Future 特征和 async/await 语法糖来实现的。Future 是 Rust 中的异步编程的基础,它代表了一个异步计算的结果或者异步任务的“承诺”,可以通过 poll 方法来获取计算的结果。async/await 语法糖则是为了让异步编程更加友好,通过 async 关键字来定义异步函数,通过 await 关键字来等待异步计算的结果。

越来越多的语言采纳异步编程机制,比如 Python 的 asyncio、JavaScript 的 Promise(或者是同样的 async/await)、Golang 的 goroutine 等等。异步编程的优势在于可以提高程序的并发性能,因为异步编程可以让程序在等待 I/O 操作的时候不阻塞,可以继续执行其他任务。Rust 的 Tokio 是一个基于 Future 的异步编程框架,它提供了很多异步编程的工具,比如 tokio::spawntokio::net::TcpStream 等等。

阅读更多
rFTP - 用 Rust 实现简单的 FTP Server (1)

rFTP - 用 Rust 实现简单的 FTP Server (1)

开发动机

核心动力是我有学会一门系统级编程语言的梦想。所以计划用 Rust 为开发语言(手段)完成本科三年级计算机网络专业课上的 FTP 大作业(目标),学习 Rust 的同时巩固计网的基础知识。

虽然大一刚入学就开始接触 C/C++,但是对于当时没有任计算机知识何积累的我来说用这样的方式开始我的编程入门实在是颇为残忍。或许我当时连内存大小和磁盘容量都分不清,不知堆栈为何物,也搞不懂什么编译链接,让我去理解指针实在是有点为难。现在回过头来看,当时的教学顺序对零基础的学生来说是不太友好的:老师在讲指针结构的内存优化时我甚至还写不出像样的符合语法的程序,课程内容就自然也就无法很好地消化了。

如果由我来制定教学计划,我一定将最开始的编程入门课定为使用 Python 教学而不是 C/C++,在知道如何写出鲁棒、高效、优雅的代码前,先要做到能写代码,就好似学会跑步之前需要先学会走路;等学生们了解了计算机组成原理、操作系统等计算机基础知识之后(或同时),再教授 C/C++ 等较低层的、系统的编程语言了。话扯太远了,就此打住。

阅读更多