0%

个人介绍

本人就读于新加坡南洋理工大学,参加这个夏令营的目的是为了弥补本科时候的遗憾。在本科期间,听说了AI多么高大上,挣钱多么多,于是把目标放在了AI方向,任何的课程和科研都是围绕着AI方向。但是后面大四发现实在是卷论文卷不动了,而且其实干的很多事情都是调参,找一组好的参数发论文,这并不是我想要的生活,也不是想干的方向。于是我开始想试试开发,因为传统开发上面我毫无经验和优势,于是便去学习小众的区块链开发,发现了Rust这门宝藏语言。顺利的学习这门语言,好好读书背八股找到了大厂的工作(今年入职),但是其实操作系统等底层的知识,在本科上课的时候都是糊弄过去的,所以一直有这个遗憾。借着这个夏令营的机会,我的目标是一阶段巩固一下Rust细节知识,为后面转向区块链开发做铺垫(参加过Solana链相关的黑客松),第二个是真正的非纸上谈兵地去用喜欢的Rust语言做一下操作系统相关的开发,希望可以坚持到最后。

一阶段学习感悟——对Rust的一些感想

Rust 是一种安全的系统编程语言,它为程序员提供了实现安全的途径,而无需担心所有的实现细节。所以这里的动机是,基本上C++是不安全的。这也是 Rust 出现的原因。
这里的安全性指的是,如果你用Rust编写了一个程序,并且它满足了某些条件,那么当你将该程序编译成汇编程序时,就可以保证汇编程序不会出错。编译器和类型系统保证了这一点。与此同时,它还实现了控制,因为它支持编程中所需的所有底层功能,例如操作系统的构建,目前Linux和Windows中的系统内核中很多部分都用Rust进行了重构。尤其是C和C++在编写并发程序的时候,无法自动检测到内存的不安全性,而Rust的所有权和生命周期抓住了并发的本质,其本质上关于安全的共享资源。
下面讨论一下系统编程里面的内存模型。我认为一个编程语言,尤其是系统编程语言,或者说比较低级别的编程语言中间最重要的实际上有两件事儿,一个就是它的内存模型,或者说你的变量在内存中是如何交互的和如何表示的。另一个就是多线程的事情,就是多个线程如何操作这些内存。
首先在系统编程领域唯三的编程语言,就是C,C++和Rust。因为Rust它实际上是有很多比较新的理念,可以视为它从C++中间去抽取了很多比较精华的部分,并且它又长出来自己独有的一些东西。
因为C++里面的特性非常多,而且有很多很复杂很融坠,很多还是由于历史原因造成的。因为 C++非常强调兼容性,所以他以前的一些设计的问题,它是没有办法在未来改变的,它只能把它保留或者是把它遮蔽起来。就像你有堆垃圾,你没有办法倒到外面,你只能拿被子先盖起来,然后在这个垃圾上面去建立一些新的东西,所以很多人都觉得C++不如C语言使用起来那样舒服。那么从Rust角度来讲的话,它就没有这个历史负担,它出现的比较晚,所以他从不管从C还是从C++,还是从 Python等等其他的语言中去抽取了很多好的东西集成起来。从整体上来看的话,共性化的部分肯定是各个语言都比较重要的部分,个性化的部分的话,Rust的部分的好处多于坏,它的坏处主要是它的带来的额外的编程和编译的复杂性。