写点什么

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

  • 2015-03-02
  • 本文字数:1500 字

    阅读完需:约 5 分钟

没有什么比谈论一门新语言能够让程序员更加兴奋、更加固执己见的了。作为两枚冉冉升起的新星, 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-02 08:457914
用户头像

发布了 321 篇内容, 共 119.6 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

数字城市运行监测主题指标设计思路探讨

Geek_37rwst

2023-11-25:用go语言,给定一个数组arr,长度为n,表示n个格子的分数,并且这些格子首尾相连, 孩子不能选相邻的格子,不能回头选,不能选超过一圈, 但是孩子可以决定从任何位置开始选,也可以

福大大架构师每日一题

福大大架构师每日一题

FFA 2023 「流式湖仓」专场:从技术原理到应用实践打造流式湖仓新架构

Apache Flink

大数据 flink 实时计算

遥遥领先!TinyEngine 低代码引擎更新升级!

OpenTiny社区

开源 前端 低代码

云HIS医院信息化管理系统源码:集团化管理,多租户机制,满足医院业务需求

源码星辰

源码 Java’ 云计算,

【k8s系列】搭建MicroK8s Dashboard教程。

百度搜索:蓝易云

云计算 Linux 运维 Web MicroK8s

专业矢量图片转换工具 Vector Magic免激活最新

胖墩儿不胖y

Mac软件 矢量图软件

EndNote 21 文献管理工具 Mac激活版 支持m1

加油,小妞!

文献管理 EndNote 21

SourceTree for Mac 最新激活 支持M1

彩云

sourcetree SourceTree Mac

Git客户端:SourceTree for Mac中文版

繁星

sourcetree Git客户端

Kubernetes 漫游:etcd

Phoenix

服务器的操作系统有哪些?

Geek_f19a80

服务器

感恩有你|恭喜 OpenTiny Vue 开源组件库喜迎1000+star!!!

OpenTiny社区

开源 前端 UI组件库

Linux系统下获取系统、BIOS、进程、网络等相关信息的方法和工具。

百度搜索:蓝易云

云计算 Linux 运维 云服务器 BIOS

Macbook 电池最大充电限制工具:AlDente Pro for Mac

加油,小妞!

AlDente Pro

天翼云智算基础设施平台“云骁”,驱动智算产业创新发展

Geek_2d6073

Rectangle Pro for Mac 窗口布局增强工具

繁星

Rectangle Pro for Mac

Mac模拟飞行驾驶游戏:X-Plane 12 for Mac

彩云

X-Plane 12 飞行模拟游戏

开发看体育在线直播系统平台:多维内容和多元互动打造“有趣”观赛体验

软件开发-梦幻运营部

FFA 2023 「行业实践」专场: 金融/电力/汽车/互联网等多行业最佳实践

Apache Flink

flink

好用的图片处理工具 JixiPix Pastello Pro激活最新版

mac大玩家j

Mac软件 图像处理工具 图像编辑器

【腾讯云云上实验室】用向量数据库——实现高效文本检索功能

熬夜磕代码、

数据库、

sublime text for Mac 注册激活版 附 激活码 支持M1

加油,小妞!

代码编辑器 sublime text

macos好玩的游戏:星际争霸母巢之战汉化激活版最新

mac大玩家j

mac游戏 星际争霸母巢之战破解版

Rust即将发布1.0版本,Go持续获得关注:如何在新生语言之间做出抉择_语言 & 开发_孙镜涛_InfoQ精选文章