【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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:457788
用户头像

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

关注

评论

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

完蛋!我被 Out of Memory 包围了! | 京东云技术团队

京东科技开发者

Java Linux 内存泄漏 Out Of Memory 企业号11月PK榜

体验问题哪里找?点击链接获取答案~ | 京东云技术团队

京东科技开发者

测试 用户体验 用户体验分析 企业号11月PK榜

低代码工具的常见用例与受众市场

树上有只程序猿

低代码

外贸独立站推广谷歌seo优化的8大技巧

九凌网络

24届秋招薪资大爆料

王磊

Java

inBuilder低代码平台新特性推荐-第5期

inBuilder低代码平台

低代码

华为云开源 | 线下meetup · 电子科技大学站圆满收官

华为云开源

云原生 开源项目 开源社区

使用openpyxl库读取Excel文件数据

不在线第一只蜗牛

工具 数据 Excel 教程

免费好用的10款在线画板软件推荐,你值得拥有!

彭宏豪95

效率 科技 在线白板 办公软件 团队协作工具

Go类型嵌入介绍和使用类型嵌入模拟实现“继承”

快乐非自愿限量之名

Go 编程 教程 语言 教程分享

一物一码需求,标签制作功能轻松解决

草料二维码

二维码 二维码生成 标签制作 一物一码

软件测试|Python流程控制,你真的会了吗(三)

霍格沃兹测试开发学社

一个java文件的JVM之旅 | 京东物流技术团队

京东科技开发者

Java JVM 类加载机制 企业号11月PK榜

首届OpenHarmony竞赛训练营结营颁奖,75所高校学子助力建设开源生态

OpenHarmony开发者

OpenHarmony

OpenAI 深夜炸场,更强更便宜;英特尔 CEO 分享三大失败原因;黄仁勋说成龙长得像他丨 RTE 开发者日报 Vol.79

声网

软件测试/测试开发丨性能测试体系学习笔记

测试人

软件测试

聊聊低代码技术

互联网工科生

软件开发 低代码

如何寻找优质的谷歌seo优化公司来提升你的外贸网站排名

九凌网络

Mac剪切板管理工具:Paste 4.1.2中文版

繁星

Paste中文版 剪切板管理

体育直播源/足球直播流获取,OBS直播步骤

软件开发-梦幻运营部

Media Encoder 2021 for Mac(ame 2021直装版) v15.4.1中文破解版

mac

苹果mac Windows软件 Media Encoder ME2021 视频音频编码器

喜报 | MIAOYUN通过2023年度四川省“专精特新”中小企业认定!

MIAOYUN

专精特新 MIAOYUN 高新技术企业 专精特新中小企业 专精特新企业

Luminar Neo ai技术图像编辑工具 中文版 支持M1

繁星

Luminar Neo 图像处理工具

DDD技术方案落地实践 | 京东云技术团队

京东科技开发者

架构 领域驱动设计 DDD 企业号11月PK榜

矢量图设计软件层出不穷,CorelDRAW为何无人能替?

淋雨

设计 矢量图 CorelDraw 绘画 设计软件

Waves 14 Complete for Mac(后期混音效果全套插件)v2023.10.10永久激活版

mac

苹果mac Windows软件 Waves 14 Complete 后期混音效果全套插件

如何使用 NFTScan NFT API 在 Arbitrum 网络上开发 Web3 应用

NFT Research

NFT\ NFTScan nft工具 API 接口

云电脑与5G网络的结合将会带来什么

青椒云云电脑

云电脑

Mac 版截图工具链

Eric 老乌龟

macos 工具

Databend 开源周报第 118 期

Databend

领跑同一阵营!百分点科技入选Forrester AI/ML权威报告

百分点科技技术团队

人工智能 数据科学 百分点科技

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