RUSTY......

TL,DR; rust很好,我选择golang

这两天在学rust,感觉找到了一个完美的比喻。如果说golang像gnome,rust就像kde(python就像dde(小声。rust的内存管理方式只能用一个词来形容,完美。单一owner,其他人borrow,有效消除了对gc的依赖,也避免了内存泄漏(但增加了对脑子的依赖(脑子是个好东西。但在我看来,rust最大的问题在于trait,也即golang的interface。相对于golang的interface采取的隐式实现所带来的解耦,rust的trait需要显式实现,甚至trait还可以为满足trait bound的结构体提供默认实现…..从一个角度来看,这不就是free lunch,稍微实现两个trait,剩下的全能免费用。但与此同时,这也导致了定义与实现的分离(没个ide还写个毛…..同样的,rust的concurrency也采取了与golang不同的策略。golang的concurrency正如它的理念:there is only one *best* way to do the f**king thing。而rust:try whatever f**king thing you want (until the compiler tells you it’s valid…。rust的复杂性给它带来了更多可能,但也带来了更多的san值开销(我宁愿要个gc….

再说好处,rust所能带来的极致性能与安全自是不可忽视,但最让我惊叹的是toolchain(没有toolchain就是个废物(暴言。rustup带来的多版本共存,cargo的包管理,构建时的profile(相比之下golang就是个弟弟…..

然而若要二选一,我大概还是会选golang(就像我选择了gnome。或许会牺牲性能,或许会丧失另一种可能,或许会有大量的boilerplate充斥我的代码,或许我无法链式调用(gtmd err handling…)但我也不想打分号…..