当前位置: 首页 > news >正文

Go 与 Rust

目录

  • 1. Go 与 Rust

1. Go 与 Rust

一位挺 Rust 的网友说道: “我也为这个选择烦恼了很久。最终 Rust 胜出了。首先, 我感觉 Rust 更接近于以前 Pascal 时代的东西, 你可以控制一切; 其次, 如果 wasm 和相关技术大爆发, Rust 将是一个更安全的选择; 然后, 我们已经有了 Python 用于快速开发, 因此选择一些更极端的东西是有道理的, Go 在某种程度上处于中间地带。最后, Rust 应用于内核且备受关注, 所以不太可能会被淘汰。”

另一位持反对意见的开发者则表示, "我从事 Go 开发已经快十年了, 但最近我也尝试了下 Rust。我认为目前有一些对 Rust 的强制性和误导性偏好, 从我在各种初创公司的经验, 包括我目前所在的公司来看, 对于后端开发来说, Go 是迄今为止最佳选择! 注意, 在性能、功能或其他方面……这两种语言非常非常相似! "


Rust 是一种低级静态类型的多范式编程语言, 更多关注安全性和性能。

—Gints Dreimanis

Go 是一种开源编程语言, 能够轻松构建起简单、可靠且高效的软件。

—golang.org


我们当然可以争论什么才是真正"面向对象"的语言。但公平地讲, C++、Java 或者 C#用户所期望的那种面向对象编程风格, 在 Go 或者 Rust 中确实不存在。

—Jack Mott


gofmt 的风格也许不是每个人的最爱, 但 gofmt 却能帮到每一个人。

—Rob Pike

我在职业生涯早期用的是 Java 和 Ruby, 所以编写 Go 和 Rust 代码一直让我有点畏惧、觉得自己掌握不了。但等到进入谷歌并看到用 Go 编写的服务时, 我才真正松了口气, 因为我发现它很容易构建和运行。

Rust 也是如此。虽然我只在小规模项目上进行过研究, 但也看得出它的易用性。我希望那些能够无限配置的构建系统早点成为历史, 现在的新语言都附带自己的专用构建工具而且能够开箱即用, 这样不好吗?

—Sam Rose


Go 确实非常容易学习。之前就经常听人提到这一点, 但实际使用后我仍惊讶于它竟能快速提高工作效率。感谢 Go 语言、相关文档和工具, 我只用了短短两天就编写出了有趣且可以提交的代码。

—Rust 程序员对于 Go 语言的早期印象

使用 Go, 我们可以快速完成工作。Go 是我用过的最高效的语言之一, 它的座右铭就是: 马上解决实际问题。

—Matthias Endler


Rust 比其他几种编程语言支持更多复杂性, 所以对应的实现范畴也更大些。

—Devathon

如果您已经准备好学习更复杂的语法和语义(以及更高的代码可读性门槛), 并以此换取最高水平的性能表现, 那 Rust 甚至足以跟 C++和 D 分庭抗礼。

—Dave Cheney


Go 让我们能更轻松地构建起一个能精心解构的应用程序, 这样的应用程序可以作为一组微服务进行部署, 并充分发挥并发性优势。Rust 也不是做不到, 只是实现起来更难一些。

从某种意义上讲, Rust 更适合那些绝不允许因内存问题而引发安全漏洞的程序员; 但相应的, 他们在执行某些对其他语言(包括 GO)来说较为简单的任务时, 就得付出更多心力。

—Sonya Koptyev

能有用于生成 goroutine 和使用 channels 的轻量级语法真的太棒了。这就是语法之力的直接体现, 种种小细节也让 Go 的并发编程体验比其他语言好出一大截。

—Rust 程序员对 Go 的早期印象

Go 专注于把并发作为最核心的概念之一。这倒不是说我们就没法在 Rust 中实现跟 Go 类似的并发性效果, 只是实现难度对于程序员多少是种考验。

—Dave Cheney


Rust 的编译器简直是严格到迂腐, 它会检查我们使用的每个变量、引用的每个内存地址。它避免了潜在的数据竞争情况, 还会通知你存在未定义行为。在 Rust 的世界中, 并发和内存安全问题几乎不可能出现。

—为什么选择 Rust?

对我来说, Rust 最大的优势就是编译器成了我的好助手, 它不会放过任何检测得到的 bug(说真的, 有时候我感觉它就像会魔法)。

—Grzegorz Nosek

在 Rust 中, 各种库工具都能帮助程序员防止用户犯错。Rust 允许我们指定一段数据, 然后保证它不归属于任何其他事物、也不会被任何其他事物所篡改。我想不起以往还有哪种语言会提供这么多防止意外误用的工具, 这种感觉堪称美妙。

—Sam Rose

如果大家选择了 Rust, 往往是因为要使用它提供的保障性设计: 关于空指针/数据竞争的安全性、可预测的运行时行为, 还有对硬件的完全控制。如果这些对你来说毫无意义, 那确实没必要非得使用 Rust。毕竟这些好处背后是有代价的: 上手很费劲。你得改掉坏习惯并掌握新概念。刚开始的时候, 大家都会被借用检查器折磨得死去活来。

—Matthias Endler

如果你是一名 C 或者 C++程序员, 曾经花几个礼拜在语言中查找内存安全 bug, 那你一定会爱上 Rust。于是"跟借用检查器作斗争"就变成了"编译器还能这么用? 爽! "

—Grzegorz Nosek


如今的服务器程序包含着数千万行代码, 由成百上千名程序员编写而成, 并且几乎每天都在更新。Go 在设计和开发上, 充分考虑到了此类环境下的工作效率提升需求。

Go 的设计考量因素包括严格的依赖项管理、软件架构随系统增长的适应性, 还有跨组件边界的健壮性。

—Rob Pike

使用 GO 语言, 初级开发者往往更容易提高工作效率, 但中级开发者则更难引入复杂的抽象并因此导致问题。正因为这种特性, 在企业软件开发领域, Rust 的吸引力往往不及 Go。

—Loris Cro


Go 跟 Rust 这两种语言可以说截然不同。尽管二者都可以被简单描述成系统语言或者 C 的替代品, 但它们的目标和应用场景、语言设计风格与功能优先级确实差异巨大。垃圾收集就是一大核心差异因素。Go 中的垃圾收集让语言变得更简单、更小巧也更易于理解。Rust 不设垃圾收集则让它速度极快(这一点特别适合那些不仅要求高吞吐量、更要求低延迟的开发者), 同时也实现了 Go 根本不可能做到的一系列功能与编程模式(至少是在不牺牲性能的前提下)。

—PingCAP


两种语言各有不同的应用范围。Go 擅长编写微服务和典型的"DevOps"任务, 但它并不属于系统编程语言。Rust 在强调并发性、安全性及/或性能的任务中更为强大, 可学习曲线也确实比 Go 更陡峭。

—Matthias Endler


Rust 的执行速度优于 Go。在基准测试中, Rust 速度确实更快, 某些情况下甚至能快出一个数量级。但在选择 Rust 语言之前, 请先认清一点: Go 在多数基准测试中也没有落后太多, 而且也仍然保持对 Java、C#、JavaScript 和 Python 等语言的性能优势。

如果你需要的是顶级性能, 那么在这两种语言中任意选择都可以, 速度表现绝不会令人失望。另外, 如果你正在构建一款处理高强度负载的 Web 服务, 而且要求能够纵向/横向灵活扩展, 两款语言也都能满足需求。

—Andrew Lader


我的看法是: 对于明天就得发布的代码, 用 Go; 如果是未来五年内必须能稳定运行的代码, 那么选 Rust

—Grzegorz Nosek

如果你想加快开发速度, 比如说你有很多不同服务需要编写, 或者开发团队本身规模庞大, 那么 Go 语言肯定是正确答案。Go 特别关注并发性设计, 而且会敏锐地揪出不安全的内存访问行为(Rust 也可以), 但又不强迫你逐一管理每处细节。

Go 快速而强大, 但它的核心亮点还是帮助开发人员摆脱困境、专注于简单性和统一性。在另一方面, 如果你需要竭尽全力发挥每一丝性能空间, 那 Rust 才是最理想的选择。

—Andrew Lader


相关文章:

Go 与 Rust

目录 1. Go 与 Rust 1. Go 与 Rust 一位挺 Rust 的网友说道: “我也为这个选择烦恼了很久。最终 Rust 胜出了。首先, 我感觉 Rust 更接近于以前 Pascal 时代的东西, 你可以控制一切; 其次, 如果 wasm 和相关技术大爆发, Rust 将是一个更安全的选择; 然后, 我们已经有了 Python…...

Android Studio实现读取本地相册文件并展示

目录 原文链接效果 代码activity_main.xmlMainActivity 原文链接 效果 代码 activity_main.xml 需要有一个按钮和image来展示图片 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk…...

python的全局解释锁(GIL)

一、介绍 全局解释锁&#xff08;Global Interpreter Lock&#xff0c;GIL&#xff09;是在某些编程语言的解释器中使用的一种机制。在Python中&#xff0c;GIL是为了保证解释器线程安全而引入的。 GIL的作用是在解释器的执行过程中&#xff0c;确保同一时间只有一个线程可以…...

小程序swiper一个轮播显示一个半内容且实现无缝滚动

效果图&#xff1a; wxml&#xff08;无缝滚动&#xff1a;circular"true"&#xff09;&#xff1a; <!--components/tool_version/tool_version.wxml--> <view class"tool-version"><swiper class"tool-version-swiper" circul…...

【自然语言处理】关系抽取 —— SimpleRE 讲解

SimpleRE 论文信息 标题:An Embarrassingly Simple Model for Dialogue Relation Extraction 作者:Fuzhao Xue 期刊:ICASSP 2022 发布时间与更新时间:2020.12.27 2022.01.25 主题:自然语言处理、关系抽取、对话场景、BERT arXiv:[2012.13873] An Embarrassingly Simple M…...

【O2O领域】Axure外卖订餐骑手端APP原型图,外卖众包配送原型设计图

作品概况 页面数量&#xff1a;共 110 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;外卖配送、生鲜配送 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本品为外卖订餐骑手端APP原型设计图&#x…...

DataGridView keydown事件无法在C#中工作

原因&#xff1a;单元格内编辑文本时,DataGridView keydown事件不起作用。每当单元格处于编辑模式时,其托管控件就会接收KeyDown事件而不是DataGridView包含它的父级.这就是为什么当单元格未处于编辑模式时(即使它被选中),键盘快捷键正常工作,因为DataGridView控件本身会收到Ke…...

【ElasticSearch】一键安装ElasticSearch与Kibana以及解决遇到的问题

目录 一、安装ES 二、安装Kibana 三、遇到的问题 一、安装ES 按顺序复制即可 docker network create es-net # 创建网络 docker pull images:7.12.1 # 拉取镜像 mkdir -p /root/es/data # 创建数据卷 mkdir -p /root/es/plugins # 创建数据卷 chmod 777 /root/es/** # 设置权…...

电商数据采集和数据分析

不管是做渠道价格的治理&#xff0c;还是做窜货、假货的打击&#xff0c;都需要品牌对线上数据尽数掌握&#xff0c;准确的数据是驱动服务的关键&#xff0c;所以做好电商数据的采集和分析非常重要。 当线上链接较多&#xff0c;品牌又需要监测线上数据时&#xff0c;单靠人工肯…...

react 11之 router6路由 (两种路由模式、两种路由跳转、两种传参与接收参数、嵌套路由,layout组件、路由懒加载)

目录 react路由1&#xff1a;安装和两种模式react路由2&#xff1a;两种路由跳转 &#xff08; 命令式与编程式&#xff09;2-1 路由跳转-命令式2-2 路由跳转-编程式 - 函数组件2-2-1 app.jsx2-2-2 page / Home.jsx2-2-3 page / About.jsx2-2-4 效果 react路由3&#xff1a;函数…...

Golang 基础语法问答

使用值为 nil 的 slice、map 会发生什么&#xff1f; 允许对值为 nil 的 slice 添加元素&#xff0c;但是对值为 nil 的 map 添加元素时会造成运行时 panic。 // map错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry …...

冠达管理:哪里查中报预增?

中报季行将到来&#xff0c;投资者开端重视公司的成绩体现。中报预增是投资者最关心的论题之一&#xff0c;因为这意味着公司未来成绩的增加潜力。但是&#xff0c;怎么查找中报预增的信息呢&#xff1f;本文将从多个视点分析这个问题。 1.证券交易所网站 证券交易所网站是投资…...

docker安装Oracle11gR2

文章目录 目录 文章目录 前言 一、前期准备 二、具体配置 2.1 配置oracle容器 2.2 配置navicat连接 总结 前言 使用docker模拟oracle环境 一、前期准备 安装好docker #拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g #启动 docker run -…...

unity 之 Input.GetMouseButtonDown 的使用

文章目录 Input.GetMouseButtonDown Input.GetMouseButtonDown 当涉及到处理鼠标输入的时候&#xff0c;Input.GetMouseButtonDown 是一个常用的函数。它可以用来检测鼠标按键是否在特定帧被按下。下面我会详细介绍这个函数&#xff0c;并举两个例子说明如何使用它。 函数签名…...

链游再进化 Web3版CSGO来袭

过去几年&#xff0c;游戏开发者们一直希望借Web3这个价值流通网络&#xff0c;改造传统游戏的经济系统&#xff0c;将虚拟资产的掌管权交给用户&#xff0c;让资产自由地在市场流通。 Web3游戏发展史上&#xff0c;涌现过CryptoKitties、Axie Infinity两大爆款&#xff0c;但…...

WordPress用于您的企业网站的优点和缺点

如今&#xff0c;WordPress 被广泛认为是一个可靠、可扩展且安全的平台&#xff0c;能够为商业网站提供支持。然而&#xff0c;许多人质疑 WordPress 是否是适合企业的平台。 这就是我们创建本指南的原因。通过探索 WordPress 的优点和缺点&#xff0c;您可以确定世界上最受欢…...

~600行ANSI C代码实现RISC-V CPU核

今天在GitHub上看到一个C语言项目&#xff0c;用大约600行代码实现了一个RISC-V CPU核&#xff0c;甚为感叹&#xff0c;分享一下。不管是学习C&#xff0c;还是学习RISC-V&#xff0c;这个项目都有非常高的学习价值&#xff0c;开源万岁&#xff01; rv 用 ANSI C 编写的RISC…...

【从零学习python 】55.Python中的序列化和反序列化,JSON与pickle模块的应用

文章目录 序列化和反序列化JSON模块pickle模块进阶案例 序列化和反序列化 通过文件操作&#xff0c;我们可以将字符串写入到一个本地文件。但是&#xff0c;如果是一个对象(例如列表、字典、元组等)&#xff0c;就无法直接写入到一个文件里&#xff0c;需要对这个对象进行序列…...

【C++】详解内存中的堆和栈

2023年8月20日&#xff0c;周日早上 感觉很多东西还没吃透&#xff0c;很多疑问还没解决。 这篇文章可能会不定期更新。 还没解释为什么栈的空间有限&#xff0c;而堆的空间很大 还没解释栈和堆在内存中的位置 ...... 目录 怎么申请栈空间语法举例说明 怎么申请堆空间语法…...

QCustomPlot横坐标为毫秒级的时间轴数据展示的实时刷新数据功能

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();int realtime…...

STM32/AT32 MCO管脚输出时钟配置

前言&#xff1a;最近在学以太网通讯&#xff0c;发现RMII接口配置的时钟管脚有MCU自己输出&#xff0c;想要看看是怎么输出的&#xff0c;对此进行记录 1、交接项目项目上使用的是PA8管脚来输出时钟50MHZ&#xff0c;提供给上面refclk。 先看手册 PA8的复用功能具备将MCU时钟…...

“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价

近年来&#xff0c;国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究&#xff0c;他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合&#xff0c;评价不同类型研究区的生态脆弱特征&#xff0c;其研究内容…...

【大虾送书第六期】搞懂大模型的智能基因,RLHF系统设计关键问答

目录 ✨1、RLHF是什么&#xff1f; ✨2、RLHF适用于哪些任务&#xff1f; ✨3、RLHF和其他构建奖励模型的方法相比有何优劣&#xff1f; ✨4、什么样的人类反馈才是好的反馈 ✨5、RLHF算法有哪些类别&#xff0c;各有什么优缺点&#xff1f; ✨6、RLHF采用人类反馈会带来哪些局…...

超越函数界限:探索JavaScript函数的无限可能

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4da; 前言 &#x1f4d8; 1. 函数的基本概念 &#x1f4df; 1.1 函数的定义和调用 &#x1f4df; 1.2 …...

PHP实现轻量级WEB服务器接收HTTP提交的RFID刷卡信息并回应驱动读卡器显示播报语音

本示例使用的读卡器&#xff1a;RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) <?php mb_http_output(utf-8); $port88; $socket socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $bool socket_bind($socket, "0.0.0.0",…...

Neo4j之with基础

WITH 语句在 Cypher 查询中用于将之前的查询结果传递给后续的查询操作。它可以用来控制查询的流程&#xff0c;并且常常与其他语句如 MATCH、RETURN、CREATE、DELETE 等一起使用。以下是一些常用的示例和解释&#xff1a; 基本用法&#xff1a; MATCH (p:Person) WITH p RETU…...

60页数字政府智慧政务大数据资源平台项目可研方案PPT

导读&#xff1a;原文《60页数字政府智慧政务大数据资源平台项目可研方案PPT》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 项目需求分析 项目建设原则和基本策略…...

循环神经网络RNN完全解析:从基础理论到PyTorch实战

目录 一、循环神经网络全解1.1 什么是循环神经网络网络结构工作原理数学模型RNN的优缺点总结 1.2 循环神经网络的工作原理RNN的时间展开数学表述信息流动实现示例梯度问题&#xff1a;梯度消失和爆炸总结 1.3 循环神经网络的应用场景文本分析与生成1.3.1 自然语言处理1.3.2 机器…...

【SA8295P 源码分析】52 - 答疑之 QNX 创建镜像、Android修改CMDLINE

【SA8295P 源码分析】52 - 答疑之 QNX 创建镜像、Android修改CMDLINE 一、QNX 侧创建 img 镜像二、QNX 侧指定只编译某一个版本三、Android定制修改selinux权限,user版本采用enforcing,userdebug版本permissive系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》…...

网络安全法律

立法的必要性&#xff1a;网络渗透&#xff0c;网络入侵&#xff0c;网络诈骗&#xff0c;网上钓鱼侵犯知识产权&#xff0c;宣传恐怖主义&#xff0c;极端主义等伤害共鸣利益的行为越发猖狂 信息系统运维安全管理规定&#xff08;范文&#xff09;| 资料 过程: 14-16 草案初…...

如何做网站的cdn/整合营销方案案例

http://blog.ch-wind.com/ue4-profiling-preview/ Profililng是成品制作过程中非常重要的一个步骤&#xff0c;通过Profiling才能提高运行效率使得作品达到用户能够运行从程度。 UE4本身有提供用于Profiling的工具&#xff0c;但是要正确的将其用于优化却需要经过一些学习。在掌…...

网站克隆好后该怎么做/如何做好宣传推广

安装环境 操作系统&#xff1a;Windows 10。 被测平台&#xff1a;Android 模拟器或真实Android手机。 appium 服务器&#xff1a;appium Desktop。 appium 客户端&#xff1a;python-client。 Android Studio 我们既可以通过 Android 手机连接 PC 来运行 appium 自动化测试…...

做时时彩网站需要什么/卫星电视安装视频

MySQL 是一个小巧玲珑但功能强大的数据库&#xff0c;目前十分流行。但是官网给出的安装包有两种格式&#xff0c;一个是msi格式&#xff0c;一个是zip格式的。很多人下了zip格式的解压 发现没有setup.exe&#xff0c;面对一堆文件一头雾水&#xff0c;不知如何安装。下面笔者将…...

接视频做的网网站/qq关键词排名优化

基本信息 Author&#xff1a;kaedeaGitHub&#xff1a;android-dynamical-loading现在网络上有许多关于动态加载的介绍的文章&#xff0c;谈及的关键词汇有动态加载、插件化、热部署、热修复等&#xff0c;对于一些刚接触这方面开发技术的人来说&#xff0c;可能容易混淆。 虽然…...

凡科网多页网站怎样做/大型网站建设平台

H264编码流程手绘图&#xff1a; H264编码网上图&#xff1a; I 帧 Fn&#xff08;左上&#xff09;是当前要编码的帧&#xff0c;他是 GOP 中的第一帧&#xff0c;也就是 I 帧&#xff0c;I 帧要进行帧内编码&#xff0c;首先要选择预测模式&#xff08;Choose Intra predict…...

logo图案设计/快排seo软件

C友元函数和友元类&#xff08;C friend关键字&#xff09; 在 C 中&#xff0c;一个类中可以有 public、protected、private 三种属性的成员&#xff0c;通过对象可以访问 public 成员&#xff0c;只有本类中的函数可以访问本类的 private 成员。现在&#xff0c;我们来介绍一…...