• Rust相比Go的优劣势


    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带来的便利。

    Java入门教程及学习视频
      java-环境搭建及基础语法
    http://www.makeru.com.cn/live/1394_202.html?s=143793
    java-数据类型
    http://www.makeru.com.cn/live/1394_203.html?s=143793
    java中读取配置文件的几种方式
    http://www.makeru.com.cn/live/1394_481.html?s=143793
    常用工具类
    http://www.makeru.com.cn/live/1394_253.html?s=143793

  • 相关阅读:
    海量数据中,寻找最小的k个数。
    快速排序
    反转一个单链表,分别以迭代和递归的形式来实现
    N个大小不等的自然数排序,时间复杂度为O(n),空间复杂度为O(1)
    堆排序
    两个已经排好序的链表合并为一个有序链表
    字符串过滤空格、回车、tab
    求一个浮点数的连续子序列最大乘积 (2013 小米校园招聘笔试题)
    单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列
    给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列。
  • 原文地址:https://www.cnblogs.com/jinwenyi/p/13361279.html
Copyright © 2020-2023  润新知