×
嵌入式 > 详情

Rust相比Go的优劣势

发布时间:2021-03-31 发布时间:
|

  Rust相比Go的优势:

  Rust可以做内联汇编,Go不行(Rust的SIMD库也在开发中,这种事情你不会用Go做)。

  Rust有确定性析构,Go没有,只能whole-world-stop做GC。

  Rust的接口(trait)可以静态派发,做zero-costabstraction,Go不行,它的interface只能靠反射做动态派发。

  Rust没有运行时,可以写操作系统(我估计至少需要几百行汇编做bootstrap),Go离这种能力很远。

  Rust有一个更丰富的类型系统,表达能力更强,允许你做更高层次的抽象,写出泛用的库,这个是Go不具备的。

  Rust有更强的语义,更容易捕获错误的逻辑,编译器直接检查出你代码中的不安全的部分。

  Rust的适用领域比Go更广。

  Rust社区更愿意改变,Go社区喜欢坚持他们不需要泛型。

  Rust有一个活跃的开发社区,如果你发觉有东西需要做出改变,不管是文档、编程思想、语言设计、bugfix等等,社区欢迎你提出来一起讨论,并且没有问题的建议经常能被快速接受,不管你以后工作中会不会频繁用到Rust,与Rust一起成长总会是一段有趣的体验;相比之下Go算是大公司病,人们不那么对提出改进的建议做出积极响应。我自己也曾经为Go感到兴奋,在那半年中我却没有读过Go的源码;然而在Rust这活跃的社区的促进下我也读过一些源码了,如果你对代码的组织方式等源码相关的问题有疑惑欢迎与我讨论。

  Rust相比Go的劣势:

  Go相比Rust比较简单,相对容易学习。

  Rust的语言设计看上去不如Go稳定,我是从0.10才开始用Rust,感受不深,不过我理解更早的用户可以感受到语言设计的巨大变化。我自己也经历过各种breakingchange,比如enum成为命名空间时,数组下标从uint改为usize时。对1.0之后语言的稳定性我们只能拭目以待。

  Rust是后来者,文档不那么完整、思维需要做出一些转换(因为它比Go的内容更加丰富)。

  Go语言

  谷歌公司打造的“直观、简洁、干净、高效”语言,目前已经得到诸多主流技术厂商的广泛支持。

  与Swift类似,Go同样可编译为平台原生二进制代码,因此在某些任务中拥有优于Python的运行速度,而且无需设定目标即可完成跨平台开发。Go语言的编译速度也非常出色,从开发速度角度看,其更像是一种解释型语言而非采用编译机制。

  虽然Go的历史比Swift稍长一些,但其群体基础仍然无法同Python相比。另外,Go的语法与错误处理方案对当前Python用户来说可能不太友好。因此,其并不适合已经掌握了Python的程序员朋友。而Pyinstaller等工具的出现则让Python应用的绑定工作变得非常便捷,更不用提在大多数Linux系统中,Python运行时已经被设为预置项目了。

  Rust语言:

  这是一个同时包含语言与开发环境的统计计算项目。

  R相较于Python拥有多项优势,例如丰富的第三方软件生态系统。另外,R在设计中考虑到了统计计算需求。虽然Python也很重视数学及统计处理,但R可谓在开发当中自上而下将二者进行了贯穿。

  R还吸引到了众多大牌厂商的支持。微软就进行了一系列收购旨在利用R构建自己的云数据服务。惠普方面则开发了DistributedR,能够一次性运行在多个节点之上。随着各相关技术成果的不断演进,R完全有可能在统计计算领域将Python拉下马。

  不过有时候通用型语言的优势还是值得强调。R虽然针对性更强,但也更具局限性——我们很难在R应用中实现交互性。另外,Python还能够更好地与其它语言对接,使用RPy2等软件包即可同时享受Python与R带来的便利。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何学习嵌入式Linux