没有什么比谈论一门新语言能够让程序员更加兴奋、更加固执己见的了。作为两枚冉冉升起的新星,Go和Rust让我们置身在这场旋窝之中。作为灵感相似但是动机与目标完全不同的两门语言,Go和Rust可谓都是出身豪门。Go产生于Google,由Rob Pike和Ken Thompson等人设计实现;而Rust则是根据Graydon Hoare在Mozilla研究时的设想构建而成。虽然刚开始的时候这两门语言都是实验性的项目,但是很快它们就开花结果并成为了各自公司全力开发的项目。\

从诞生之日起,Go和Rust这两门语言就有尖锐的分歧。尽管它们都借鉴了C和C++的一些思想,但是它们所针对的应用场景和开发者却不相同。如果需要决定哪种类型的应用程序最好使用哪一门语言来实现,那么可以参考Serdar Yegulalp的这篇文章《Rust即将发布1.0版本,Go持续获得关注:如何在新生语言之间做出抉择》,当然也可以继续查看下面的内容,因为本文便是由Serdar Yegulalp的这篇文章翻译整理而来。\

语言的适用场景

\

鉴于大部分语言本身的复杂性,通常情况下我们难以准确地定义某一给定编程语言的最佳应用场景,但是我们却可以缩小它的使用范围。Go的语法类似于C,熟悉C的程序员能够非常快地上手,然而它并不适合系统编程。Go的特性集(goroutines、channels以及大量的并发模式)更适合于开发分布式应用程序,例如Etcd——CoreOS用来在节点间同步设置的分布式键值系统。\

Rust能够处理的问题与C语言相似,它关注于“类型安全、内存安全、并发和性能”,Rust为了可靠的系统级编程而设计,针对于分布式的客户端/服务器应用程序。总之,Go能处理的很多编程任务Rust也能处理,但是Rust可以处理的问题Go不一定能处理得了。\

简单还是安全?根据场景来定

\

Go来源于C,但是与C相比其语言特性的数量依然比较少,类型继承、泛型、方法/操作符重载等功能都被特意地剔除了,但是有一些特性在其他地方得到了间接的实现——例如,使用接口替代继承。Go内置了垃圾收集和内存管理功能,这主要是基于语言易用性方面的考虑。\

相比之下,Rust在构建的时候将安全性放在首位。程序员不需要指定变量的类型,编译器会根据具体的使用情况进行推断,因此不安全的代码很难运行。当然,Rust也提供了方法可以将代码标记为不安全的,例如内联汇编代码。\

包的完善程度

\

Go已经在一些产品中得到了应用,在这一点上它要远远优于Rust,特别是有一些知名的、较大型的软件项目也在使用Go语言。其中不得不提的一个项目就是时下火热的Docker,另外还有CoreOS的Etcd项目,Deis PaaS以及InfluxDB等。Go语言拥有一个健壮的标准库和大量的社区贡献包。\

与Go相比,Rust作为一门新生语言在产品环境中的使用量就少了很多,大部分人可能仅仅是因为想尝尝鲜才用了一点。另外,Rust在开发期间的变化幅度很大,这也导致了基于它构建的产品代码少之又少。当然,现在Rust这门语言已经相对稳定了,以后使用Rust开发的项目应该会慢慢多起来。\

未来计划

\

Go的最后一个主版本发布于2014年12月,下一个主版本(1.5版本)预计会在6个月以后发布,该版本将会使用Go语言编写其自身的所有工具链,同时会对垃圾收集器做重要的修整。\

Rust将于2015年2月16日左右发布1.0 beta1版,正式版将于Beta版发布之后的六个周到三个月左右发布。之后,我们可能会看到Servo(一个能够利用现代硬件固有的并行性、使用Rust语言编写的HTML渲染引擎)这个项目取得显著进展。


感谢郭蕾对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

Rust即将发布1.0版本,Go持续获得关注:如何在新生语言之间做出抉择相关推荐

  1. 开源微服务运行时 Dapr 发布 1.0 版本

    作者 | Dapr 社区 译者 | 敖小剑 来源|阿里巴巴云原生公众号 Dapr 是 2019 年 10 月开源的分布式运行时.早在 Dapr 开源初期,阿里云就开始参与 Dapr 社区建设和代码开发 ...

  2. 「biáng biáng 面」马上可以打出来了!Unicode发布13.0版本,收录4939个生僻字

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 有一种面条,很多人吃过,但 ...

  3. 路遥工具箱全面迁移至 .NET 6.0 并发布 3.0 版本及迁移记录详解

    随着 .NET 6.0 的发布 NewLife 组件也进行了升级,并在 2022 年 1 月份全面停止了对 .NET Framework 的支持框架依赖升级至 .NET Standard 2.1 . ...

  4. CAP 发布 5.0 版本正式发布

    前言 今天,我们很高兴宣布 CAP 发布 5.0 版本正式版.同时我们也很高兴的告诉你 CAP 已经有越来越多的用户并且变得越来越流行. 在 5.0 版本中,我们主要致力于更好的支持 .NET 5 以 ...

  5. harmonyos pc,华为鸿蒙系统(HarmonyOS)9月11日发布2.0版本将打通PC、手表和车机等产品终...

    原标题:华为鸿蒙系统(HarmonyOS)9月11日发布2.0版本将打通PC.手表和车机等产品终 据国内媒体报道,华为鸿蒙系统(HarmonyOS)将于今年9月11日举行的华为开发者大会上发布2.0版 ...

  6. MongoDB发布4.0版本,支持ACID事务

    MongoDB最近发布了最新的4.0版本. 毫无疑问,这一版本的主要特性是支持多文档ACID事务.MongoDB向与关系型数据库产品的融合迈出了一大步,现在支持会话的概念,并可以使用start_tra ...

  7. 新时代 新营销 新增长, 纷享销客重磅发布CRM7.0产品,持续赋能企业数字化未来

    2020年4月26日,主题为"新时代 新营销 新增长"的纷享销客2020销售增长大会暨春季战略与新品发布会,在GMIC大会期间成功举办.纷享销客创始人&CEO罗旭发表&qu ...

  8. 证券服务应用评测系列:海通e海通财发布9.0版本,探索证券APP持续提升用户体验

    易观分析:APP作为券商机构线上服务的入口,其活跃用户规模和运营水平在一定程度上能够体现机构战略定位.品牌运营.科技创新.用户竞争等综合实力.易观分析认为,如何围绕用户进行创新,利用技术将壁垒升高,打 ...

  9. C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?

    整理 | 寇雪芹 头图 | 下载于视觉中国 出品 | AI科技大本营(ID:rgznai100) 近日,编程语言 Crystal 发布了 1.0 版本. Crystal 是一种通用的.面向对象的编程语 ...

最新文章

  1. Net Framework 2.0 MSI returned error code 1603解决方法
  2. IBM为世博会服务支持建立快速反应通道
  3. Spring 和 Spring Boot 最核心的 3 大区别,详解!
  4. B类产品的科学化设计与分析流程
  5. npm install的代理问题
  6. 以管理员身份运行IJ
  7. JavaScript---radio组
  8. (转)关于block使用的5点注意事项
  9. 作业必备:【操作系统实验报告】实验一:熟悉Ubuntu环境(后续会更新~)
  10. 昆仑通态触摸屏如何把参数由触摸屏传递到PLC_深圳PLC自动化培训哪家比较好
  11. android weex开发流程,阿里Weex混合app开发工程搭建指南(android为例)
  12. 基于MATLAB 的X-CT图像重建计算机仿真实验研究实验
  13. 使用STM32CubeMX和SW4STM32在Nucleo-F401RE开发板轻松实现Blinky闪烁 [
  14. 邯郸百亿斤粮食生产 国稻种芯·中国水稻节:河北大市粮食经
  15. python tkinter 窗口最大化
  16. 2021-2022-1 20212820《Linux内核原理与分析》第一周作业
  17. OkHttp3源码分析二 拦截器 上
  18. CraftManager for Mac(PS/sketch自动填充神器)特别版
  19. 最详细PicGo(图床)加阿里云OSS实现图片自动上传
  20. 无码系列5.1 代码重构 消除重复代码

热门文章

  1. ipv4 帧中继配置(GNS3)
  2. 阿里云 Aliplayer高级功能介绍(三):多字幕
  3. 巨杉数据库完成数千万美元C轮融资,嘉实投资领投
  4. [Hihocoder 1289] 403 Forbidden (微软2016校园招聘4月在线笔试)
  5. 〖Android〗从Android Studio转为Eclipse开发项目运行程序闪退的解决方法
  6. ASP.NET.4.5.1+MVC5.0系统角色和权限讲解
  7. Silverlight C# 游戏开发:未写代码先设计
  8. PowerDesigner与Rose详解教程
  9. Visual Studio 2008 使用小技巧
  10. 物联网6类技术无线连接技术的分析