我就是不理解这为啥是严谨?
c只有过程式一种写法,rust倾向于函数式但它本质依然是过程式语言。所以它可以有两种写法,这个不叫不严谨啊...
函数式和过程式是CS领域的核心问题,分别对应lambda calculus和图灵机两个理论模型,两者是完全等价的。在计算机的早期,两个派系分别产生了LISP和Fortran两大代表性语言,但后来现代计算机体系结构走的是图灵机的路线,因为函数式在硬件体系结构上很难落地,也许得用生物DNA分子作为底层机制才能作出原生lambda模型的计算机。anyway扯远了,因为现代计算机走的是图灵机模式,所以fortran,C,basic,pascal,java,...这一众过程式语言才为绝大多数程序员熟知。
而lisp, scheme, haskell,clojure这些函数式语言,会的人就少了。很多程序员,尤其是非科班的,根本就没有函数式的思想,即使要写函数式的风格,也容易按照过程式的思维去理解,出现各种错误是很正常的。
函数式的思想是很重要的,具体我就不展开了,展开这个话题就得长篇大论了。我只能说,尤其是现在这个时代,函数式思想越来越重要,所以新的语言都在拥抱函数式的思想,连java都加了lambda...所以现在的语言都越来越强调函数式的地位,所以rust明确的说了它更鼓励用函数式的风格去写代码。能原生支持函数式,这是rust远远领先于c的一个重要的feature。哦对了,rust抛弃了OOP,这是rust领先于c++的另一个重要的feature...顺便,OOP和函数式的思想相比,连提鞋都不配...我是觉得OOP就是一个典型的谭浩强级别的现象级错误。属于早期大家认识理解还不够深刻,某人拍脑袋搞了个OOP这么个挺讨巧的模型然后被大量推广了,仅此而已。
纯函数式当然一样可以实现你的目的,但这样的代码写起来比较麻烦,在这里肯定是用过程式更简单自然的。
但反过来更多的场合用函数式,有着过程式无法企及的优势。这和严谨不严谨一丁点关系都没有,纯粹就是哪个更好用哪个。
最后,我之前安利rust的时候举了rtic这个例子来说明rust下rtos是如何的简单。这个例子其实不太好,因为那个时候开始我还没深度使用rtic。rtic这个东西最大的问题是它要用rust的nightly版本,它需要用一个还没进stable的feature。而且这个feature,rust内部已经讨论了整整7年了,因为他们觉得讨论的还不够严谨,还有很多场景没有覆盖到,所以还再继续讨论...,这眼瞅着也不像是很快就能讨论出结果的样子。所以我们最后还是自己手撸了一个async实现。整个过程依然很简单大概不到500行代码,这就是rust的好处。
【 在 dismoon 的大作中提到: 】
: 但是C下面语法严谨啊
: 我又没说rust不对,我就是说不严谨,对于有些习惯不好的人,非常麻烦
: 特别是像我MCU固件也越做越大的,都不能一个人开发了
: ...................
--
修改:lvsoft FROM 180.158.48.*
FROM 180.158.48.*