- 主题:st想法很棒但软件真垃圾
我已经100%用rust开发了,现在很爽
跟这些原厂sdk彻底拜拜
强烈安利。入门门槛在ai时代不是问题,有啥问题丢给ai解决就行
【 在 tom6bj 的大作中提到: 】
: c++也在进化啊
: 许多在0x/11时代看着象鬼画符的写法, 在17/20/23时代已经有漂亮优雅的更新了
: c的问题主要是规模大到一定程度就没法写了, gtk之类等于是用c把面向对象那些东西重新实现了一遍
: ...................
--
修改:lvsoft FROM 39.144.157.*
FROM 39.144.157.*
Linux kernel跟嵌入式还是不太一样的。
嵌入式开发,zero cost abstraction很重要,Linux kernel不太需要太在意这个问题。或者说只有关键的地方才需要注意,总是可以用复杂的宏或者其他的奇技淫巧搞定的
【 在 wjie 的大作中提到: 】
: linux内核2000万行不都是C吗?还要更大?
:
--
修改:lvsoft FROM 39.144.157.*
FROM 39.144.157.*
鬼的资本家...
我自己给自己打工好不好...
而且请rust的人估计会比较贵...
【 在 tom6bj 的大作中提到: 】
: 你就是资本家啊, 立场不同了...
: 我已经100%用rust开发了,现在很爽
: 跟这些原厂sdk彻底拜拜
: ...................
--
FROM 180.158.48.*
谁说return能省略了?
return a+b;
和
a+b
你仔细看看,这两个完全不是一回事好嘛。
前者是一个statement,后者是一个expression。statement一定有分号结尾,expression一定不能有分号。
两者能使用的场合也是完全不同的。statement是过程式的风格,而expression是函数式的风格。rust鼓励函数式的风格,但对过程式也做了兼顾。它不鼓励你用return,但如果你用了return,那这个函数就是过程式的。这可不是return能省略这么简单。
不信你在if then else里面省略其中一个分支的return试试看,看看编译器让不让过。
rust在各方面都非常的严谨,而且这个严谨是深入它的设计哲学的。如果你觉得你发现了它哪里不严谨,别怀疑,肯定是你错了。
【 在 dismoon 的大作中提到: 】
: 我真心建议C的编译器用rust的安全标准重写一遍,不要盲目安利rust,语法明显没有C严谨,就一个return能省略就让我相当不爽
:
--
修改:lvsoft FROM 180.158.48.*
FROM 180.158.48.*
我不理解你在说什么...
这个不就是
gpioa2.set_low/high();
然后gpioa1.set_high();
跟return有啥关系?
【 在 dismoon 的大作中提到: 】
: 你说的不是我说的意思
: 比如你用rust写一段I2C代码
: GPIOA.1是时钟
: ...................
--
FROM 180.158.48.*
噢我知道了,你要返回读到的数据同时还要拉高时钟是吧。
那这个多大事,c下面也得这么做啊。
【 在 lvsoft 的大作中提到: 】
: 我不理解你在说什么...
: 这个不就是
: gpioa2.set_low/high();
: ...................
--
FROM 180.158.48.*
我就是不理解这为啥是严谨?
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.*
这个讲真,不敢苟同。
rust的做法是一次做到正确,而不是源源不断的堆人上去维护屎山代码。
我以前没深度使用rust的时候,对rust的一次做正确的理解还停留在编译过的层面。
其实rust的设计远远不至于此,它真的是设计的非常的巧妙。早期我对rust不满的地方最终都证明了人家是多么的高瞻远瞩,很多我觉得rust很sb的地方,其实后面慢慢才会理解都是故意这么搞的,都是无比正确的设计。
简单的说,rust会逼着你把一切彻底的想清楚。注意“一切”和“彻底”两个字,真就是字面意思。如果你没想清楚就写代码了,一般这个代码会写的很痛苦,往往也会编译不过。即使你勉强编译过了,代码也会长的很丑。
如果你想要你的代码看起来简洁、优雅、一眼望去就是高质量代码的那种style,你就必须把所有问题考虑到位。这里面的感受,只能说得用rust写一阵子代码才能体会。
然后,因为rust的这种风格,会产生2个结果。1是只要是能通过编译,并且看起来很漂亮的代码,它大概率是不会有毛病的,基本不需要维护。2是,因为逼着你把事情做正确,把所有问题考虑到位,所以不管是谁来做,最终写出来的代码会趋同。rust会磨灭你的个人风格,让不同的人的代码长得很像。rust的format也会把代码梳理成统一的模式,编译器也会不断的给你提示,让你把某种写法改成它推荐的写法。所以rust其实换人维护代码的门槛非常的低。
最后,rust的学习门槛,我只能说其实并不高,但这里可能有点像小马过河。rust无疑是不适合任何人学的,它一定是有门槛的。但也别把rust想的太夸张,尤其是现在有AI辅助,做好写报废的准备用rust真实写一个项目,一般来说就差不多了。
【 在 tom6bj 的大作中提到: 】
: 关键在于有源源不断的人才供应,可替换,今天老王跳槽走了,招个小李过来熟悉一下就能马上接着干。
: java和c#都是照着这个目标设计的,所以说是面向资本家的语言。c/c++不行,go/rust的目标就是在c/c++这个层次尽可能向java/c#靠拢。
:
: ...................
--
修改:lvsoft FROM 180.158.48.*
FROM 180.158.48.*
时代变了,屌丝还没ai好使呢。
【 在 ccrt 的大作中提到: 】
: 我觉得可能太早了,得屌丝者得天下
--
FROM 121.225.138.*