Rust的问题是自身太过于复杂,这个复杂有别于C和C++的复杂。先说说C的情况。有人说C是仅次于C++的复杂性的语言,也有人说C是比C++还要复杂的语言,这都不重要。虽然个人认为C语言是最适合专业人士使用的编程语言,但坦白的说C语言确实先天不足。
先天不足的部分有2点:1、先天缺乏泛型的支持;2、对异常处理的支持不是很好。由于缺乏泛型,所以有时候编程不是很方便,但并不是说无法实现泛型,只是丑陋而已。对异常处理的支持不友好,体现在异常处理代码与正常的业务逻辑混在一起。
说实话,我觉得C语言是所有语言中最简单、最容易学的。如果有人觉得C语言的语法复杂,只能说他对计算机结构的认识还不到位。非专业人士并不会去了解计算机结构,或者认识不够一定程度,但这对于专业人士不存在大问题。
Rust为了实现编译时内存安全检测,引入一些噪音是完全可以接受的。Python倒是看着干净,除了语法词法检查,啥也没有,变量函数使用时是否定义(比如敲错名字的时候)都不知道,非要运行时报错才知道问题。
Rust语法也有很漂亮或者说干净利落的地方,Rust的异常处理就是我用到过的语言里最漂亮的。Rust的enum及其match也很漂亮
C语言现在确实遇到了一个很尴尬的情况,就是第三方库不是很完善。现在很多人都不怎么在生产环境中使用C,所以相对来说,第三方库也就越来越少了。
C语言的使用场景可以总结为:小场景不需要第三方库,大场景无第三方库可用。所以说,C语言短小精悍但有功能强大。例如,写个日常的小工具,或者写个操作系统。
提到复杂项目,Servo大家应该都知道,Mozilla的下一代浏览器引擎,Mozilla搞Rust也是为了这个。还有一个不得不提,就是区块链圈的Substrate, 大家现在看到的大部分Rust招聘都是因为这个,那里的模板用得跟STL有的一比。
而且Rust 本身的语法根本没什么噪音,不要把一切都当成语法。你说的无非是 Rust 的标准库、功能实现上有噪音。在我看来 Rust 主要就是包装太多,不够原始、直接。但恰好就是需要这一堆的包装,才能在严格的编译器规则下实现复杂的功能。