今天下午,有年轻朋友在讨论是学Python还是Rust,由于一点没有接触过Rust,所以只敢听听,不敢发言。
吃完晚饭,花了5分钟的时间快速翻阅了Rust的中文文档,有了点非常初步的认识。至于准不准确,还要后续自己玩一玩才知道。这里放出来供人拍砖。
Rust 更像是带复杂类型的C,应该是融合现代编程思想和踩坑经验憋出来的一个语言。
Rust 应该是用来写关键的算法和中下层软件逻辑的。像智能指针、引用计数、写时复制(Rust不允许,貌似是通过“可写引用只能存在1个”来限制改写冲突)这些避坑功能,从语言层面就解决了。
Rust 实现安全性的逻辑:裁剪灵活性、增强编译时检查、设置非常严格的概念。与GC带来便利的同时降低对内存的可预测性不同,Rust 设置的浅拷贝、引用(还分只读、可写、部分?)、生存周期等概念,恰到好处的牺牲了C的灵活性,带来了安全性。
Rust 也可以实现类,但这个类看起来是用于包装目的,可以理解为命名空间和接口等概念的合集。Rust似乎不是用来支撑OO编程的。像C++/Java中的能讲好几章的继承、虚类概念,文档里写的不多。大概是用到Rust/C的地方,大抵不会遇到复杂的OO操作。
Rust GUI?暂时没看到 Rust 原生的 GUI库,比如如何创建一个窗口。用到Web等混合技术的GUI我认为不是原生的GUI,毕竟绘图还绕不开浏览器内核。这也部分印证了Rust更像是C语言,适合在中层、底层贴近硬件、内存、端口的位置写算法后台。
从文档里的情况来看,Rust代码的简洁性我感觉比起C语言没有绝对的优势,但安全性应该很高。个人不是很喜欢类似函数式的.x().y().z()这样的语法,但无法否认它的简洁性。
包管理器Cargo本身是个好东西,但是这种依赖互联网的包管理策略也是双刃剑,在电力、水利、航天等封闭C语言开发环境下,会提高配置压力。
Rust 和 Python 不是两种可以放在一起讨论的语言。二者的设计理念、工作层面、适用领域完全不同。