我觉得rust本来就不是奔着大众化这个目标去的。这个就好比linux一样,虽然很多人都
心心念linux desktop,但明眼人都知道这个问题更多的是商务问题而不是技术问题。
不过最终linux也可以说是通过android完成了desktop这一步。可见专注自己的核心优
势就可以了,没必要想这么多。我感觉现在的rust就是这样,挺好的。
rust我现在写了2个礼拜的代码,目前我是相当满意的。要说不爽的地方,本质上都是为
了享受它给予的好处而付出的约束。比如写代码容易被打断不能一气呵成,那是因为rust
检查很严格。这只是个熟练度的问题,我给小朋友们用python,他们写代码的时候也一
样在跟各种exception搏斗,各种抱怨为啥莫名其妙不work呢。
iter() into_iter() as_ref() as_mut() as_ptr() as_mut_ptr()之类的,
尤其是里面还存在一些隐式转换的规则,确实容易导致迷惑,但说穿了也还是熟练度不够
的问题。比如我一开始并不知道也没注意到Into开头的都会消耗self,对因此产生的各
种编译问题排查了很久,一度也非常迷茫,但弄清了也就理解了。
rust的宏我觉得也是亮点啊,怎么就奇怪了呢?函数宏比c那种简陋的宏好用多了,适用
于一般场合。过程宏则是更底层更强大,可以直接用来做DSL。我觉得rust的问题反而是
有点太依赖宏了。宏这种东西本质上就是设计上缺乏对一种复杂pattern的优雅表述能
力,所以只能用宏把一套复杂的实现隐藏起来。虽然看不见,但复杂依然是存在的,换汤
不换药。比如可以很容易的用结构体封装一个u32来给数值增加类型约束,这非常好。但
这个结构体上面可能又要写一堆derive display,debug,clone,这个就不太舒服
了。比如rust写module,要写一堆一堆的pub去暴露成员,难道就没有一种语法让pub
和private更简单的区分开么?比如go的下划线开头的都是private这个设计就很好
啊;再不济c++里面的public:之后写的都是pub也可以啊,为啥只能一个个加pub,看
起来实在是太蠢了。当然这些问题也可以用宏解决,但宏是一种方言制造机,太过于依赖
会制造分裂,也可能会破坏语言原本的正交性。不过总的来说我对rust的宏方案还是满意
的。
我觉得rust比scala要务实的多。rust可以认为只专注在所有权问题上,对这个问题没
有妥协,其他的一切都围绕这个核心问题展开。这就比scala那种啥都想要完美解决的现
实的多,也更为简单。比如DSL在scala这里就是用一套很复杂也很强大的operator
override实现的,rust直接在过程宏里面丢给你一个token stream这一点我确实没想
到可以这么的简单粗暴...大部分人觉得rust太复杂,只是因为它想解决的问题本身就有
这样的复杂度。很多简单爽快的语言,本质上就是投降派,把复杂问题无视掉当它不存在
而已。这一点来说我觉得rust是认真对待这类问题的语言中做的最简洁的。
【 在 zezo (zezo) 的大作中提到: 】
: 非职业码农,但工作内容需要写代码,对运行效率要求较高,半年前把部分 C++ 老代
码
: 转到了 rust。
: 总体感觉 rust 语言是 C++ 码农想解决 C++ 痛点而设计的,但没有摆脱 C++ 的
固有思
: ...................
--
修改:lvsoft FROM 49.90.175.*
FROM 49.90.175.*