我前面说rust这门语言平衡的非常好,就是这种感觉。
在核心设计思路上,rust走的是组合的路线,而不是OOP一堆继承的路线。这个就比OOP高明的多。我是感觉OOP这种模型有点太学院派了,rust的组合+trait的方式有点实践派的感觉,我从中感觉看到很多c的影子。这一点我可太喜欢了。
rust的问题我目前感受来说,主要是这种trait的组合很破碎。不像OOP,虽然OOP会搞出很深看了就烦的继承关系,但起码大家可以追根溯源找亲戚。当然OOP这种一切都要从root一层层派生下来的设计哲学我是很讨厌的,我认为就是脱裤子放屁。所以我超喜欢python的duck typing这种简单直接的方式。
但反过来,我现在理解了rust其实用了一种很巧妙的方式缝合了这种破碎感。比如rust里想把任何东西暴露出去都必须显式的加pub。而且这个pub不会继承,你得一个个大量的加。我刚开始学rust的时候对这个设计怨念很大,我甚至想用rust的宏来让我不用敲一堆pub自动把所有东西都pub出去。但我现在就理解了,这其实是让你尽量把各种相关的trait组合在同一个文件中。简单的说你想写出很破碎的代码它也不拦着你,但如果你不想敲一堆pub让代码看起来很丑,你就得自己去组织好它们的关系,把相关的东西放在同一个上下文里。
这个想法就相当的实践派。理解了这一点之后我发现rust里面有很多设计哲学都是在贯彻这个思路。比如到处都是的unwrap是在逼你去组织好错误处理机制。
我只能说,这个设计太天才了。所以我为啥一直在说rust的平衡感很好,而不是它的xxx多么的nb,就跟c++那样xxx啥都有啥都能干,我听到这种说法就想吐。
【 在 beep 的大作中提到: 】
: rust最坑爹的地方不在于所有权和生命期这些玩意儿,这些学起来材料太多了,最坑爹的地方我觉得在于你要是不熟悉库函数,连最常用的Option Result都用的跌跌撞撞的
: 然后就是从OOP范式出身的人,看到别人把trait用得出神入化,感觉无法望其项背
:
--
修改:lvsoft FROM 117.89.220.*
FROM 117.89.220.*