Go团队:Go是什么

news2025/1/13 15:57:36

2024年的Google I/O大会[1]如期而至。

这届大会的核心主旨毫无疑问是坚定不移的以AI为中心:Google先是发布了上下文长度将达到惊人的200万token的Gemini 1.5 Pro[2],然后面对OpenAI GPT-4o的挑衅,谷歌在大会上直接甩出大杀器Project Astra[3],视觉识别和语音交互效果,跟OpenAI的GPT-4o[4]不相上下;接着,谷歌又祭出文生视频模型Veo[5]硬刚Sora,效果酷炫,时长超过1分钟,打破Sora纪录。最后Google CEO劈柴宣布:谷歌搜索将被Gemini重塑,形态从此彻底改变!用户不再需要自己点进搜索结果,而是由多步骤推理的AI Overview[6]来代办一切。

3d1f1538a03d53ff2f1635154fad4aa3.png

不过,除了AI之外,Google在移动、Web和Cloud几个平台方面也为开发者带来了诸多精彩的内容,这其中就包括由Google Cloud团队带来的“Profile-guided optimization with Go”[7]的演讲:

42c53c66f17c67bd74440052b5c95f1c.png

注:目前,Go团队已归入Google Cloud团队管理。

该演讲由Cameron Balahan、Michael Pratt和James Ma三个人共同完成。其中长相颇似电影“源代码”[8]主角杰克·吉伦哈尔的Cameron Balahan在演讲中首先登场,阐述了Go团队眼中的Go究竟是什么

2022年,美国计算机学会通讯(Communications of the ACM)[9]期刊2022年5月第65卷第5期将发表了一篇有关Go语言的综述类Paper:《Go编程语言与环境》[10],这篇文章由Russ Cox,Robert Griesemer,Rob Pike,Ian Lance Taylor和Ken Thompson等Go团队的大佬联合撰写,对10多年来Go演化发展进行了复盘,深入分析了那些对Go的成功最具决定性的设计哲学与决策,这算是Go团队第一次阐述Go究竟是什么。

而Cameron Balahan这次的演讲算是Go团队加入Google Cloud后对Go未来定位和演进上的一次说明,虽然简短,但对Gopher们也极具参考意义。在这篇文章中,我们就来看看Cameron Balahan所代表的的Go团队对Go语言的观点。

Go是构建生产系统的高效平台

Go团队认为的第一点,也可能是最重要的一点是:Go不仅仅是一种编程语言,它是一个完整的端到端构建生产系统的平台。这一直都是Go团队的愿景。Go从一开始就是为了在规模化的实际软件工程中提供便利[11]。并且,Go团队在Google内部将该愿景简化成了下面幻灯片中的使命陈述:Go提供了构建生产系统的最高效平台。

92784e38d1c7c31a27ae58418e24c805.png

说Go很高效(Go is productive),是因为Go易于学习和维护,并且可以在团队之间扩展(scale)。

说Go是一个平台(Go is a platform),是因为它不仅仅是一种语言,它是一种端到端的开发者体验,包括IDE集成,构建和部署工具,监控工具,运行时工具,漏洞扫描等等,这些都是开箱即用的。

说Go是生产就绪的(Go is production ready ),是因为它可靠(reliable)、高效(efficient)、稳定(stable)和安全(secure),这就是为什么大家会在企业中看到它的身影的原因,尤其是在关键业务系统和基础设施中,遍布整个云计算领域。实际上,这也是现代云计算本身建立在Go之上的原因。这并不仅仅指Google Cloud,我指的是所有主要的云服务提供商以及所有其他主要的参与者以及云工具和技术。

Go的无限双循环

df2d2aa263d13d87686985caeb86155d.png

无限双循环是一个很好的思考更广泛的软件开发生命周期的方式。左边的循环是内部开发循环,也就是大家编写代码的地方。你迭代地很快,寻求快速反馈和高效率。而右边的循环可以看作是外部循环,你已经部署了你的代码到生产中,你要监控和操作它。

因此,当Go团队将Go作为一个平台来考虑时,他们将考虑如何端到端地解决这整个过程,包括内部和外部循环。Cameron下面基于这个循环从developer velocity(开发人员效率)、security(安全)和performance(性能)等方面分别举一些Go如何解决这些问题的例子。

developer velocity(开发人员效率)

427e4a107e6bc033dd32702754d5ea59.png

Go有一些旨在为了最大化你团队的开发人员效率的语言特性、工具和库。包括了从编写代码到将其推送到生产,再到之后可靠运维的整个过程。

Go团队提供IDE集成,包括为Visual Studio Code开发的插件,使其能够轻松利用其余工具链的特性。Go还提供了强大的并发模型,通过Goroutine实现。Go有内置的格式化工具、内置的测试框架和内置的调试器。Go编译器本身构建静态独立二进制文件,不依赖任何系统范围的依赖项或单独的运行时,这使得部署比其他语言更容易、更安全、更快。这是一种端到端的解决方案,用于获取和维护开发人员效率。

security(安全)

0d0a1db6eb256ebb8ca6eaa4ff7eee82.png

Go在安全性方面是领先者,这一点Go也是端到端解决的。如果你在关注最新的XZ软件供应链攻击新闻,你就会知道这是多么重要,也许比以往任何时候都更重要。这是Go团队非常重视的一个领域,因为他们已经看到在其他语言生态系统中,当一个流行的依赖项被破坏时会发生什么。

由于Go被用于云中所有这些关键基础设施,Go团队认识到安全性是Go应该提供的最重要的功能之一。从依赖管理系统开始,Go先后有了Go Module Mirror、Checksum Database和pkg.go.dev网站,它们都会警告你所依赖的库是否被篡改或遭受已知漏洞。

此外,Go的IDE集成很深入。如果你使用Go的VS Code插件,你会在IDE中就收到关于依赖项中的漏洞警告,包括你是否实际上从代码中调用了这些漏洞。这样,在真正依赖它们进入生产环境之前,你就知道了依赖项的安全态势。Go也是唯一一种将模糊测试[12]内置并集成到其工具链中的主流语言。模糊测试就像一种自动化的测试类型,它会智能地操纵你程序的输入,以找出bug和漏洞。

最后,Go有兼容性承诺,从Go 1.0开始就确保没有破坏性更改。这意味着升级很容易,这使保持最新的安全修复变得容易,跟上增强功能也很容易。去年在Go 1.21[13]中,Go团队在此基础上增加了向前和向后兼容性特性[14]。Go团队确实将兼容性视为不仅仅是一种便利,更是一种关键的安全特性。

performance(性能)

5cead13239384dfc1aaf72fe6982fd18.png

Go的标准库功能丰富且健壮,并针对性能进行了优化。你可以真正构建任何东西,而无需导入一些重型库或框架。Go还有一个自我调优的垃圾收集器。如果你曾经花时间为Java调优垃圾收集器,你就会知道这简直就像是一份全职工作。它可能需要耗费的时间和你最初编写代码一样长。在Go中,垃圾收集器开箱即用,运行高效,并会自动调整以适应你的工作负载需求。 当然,还有Profile Guided Optimization(PGO)[15],使用过PGO的开发者都很喜欢它。有些开发者甚至已经看到了令人印象深刻的性能提升。

开箱即用(out of the box)

5f0626021142200464cdc8852ed6ac52.png

图片中所有这些特性都符合开箱即用的端到端解决方案这一框架,正是这使Go成为构建生产系统最高效的平台。

Go团队在做所有这些的同时,也获得了来自用户的非常出色的反馈。大部分Go用户真的很喜欢Go。我们在调查中一直看到这一点,客户满意度水平(93%)实际上在业内是罕见的。

Go特性与客户价值定位

1925427d3510b0c4db6ab14118c1c24c.png

第一行可视为与生产力相关的内容。Go支持快速入门、快速迭代、快速构建真正可扩展的生产应用程序。所有这些都转化为你更快获得价值。

第二行是关于可靠性的,包括安全性、兼容性以及所有能够减少你长期维护和运维负担的内容。负担越小,你的总体拥有成本就越低,你就有更多时间和资源专注于推动业务增长的新事物。

第三行是关于云的。Go就像是为云量身定制的一样。Go启用的库、集成和架构都是为云而设计的,而不是后来才重新调整以适应云。因此,你将比使用其他语言时能更快更轻松地实现云的优势。

最后,Go用户是快乐的。他们无论在哪里都很开心。而且在Google Cloud上,他们尤其开心。每个人都喜欢开心的开发人员和运维人员。

小结

Google I/O 2024大会上Go团队代表对Go语言及其在软件工程领域的定位做了新的诠释:Go不仅是一种编程语言,更是一个端到端构建生产系统的高效平台

Go团队认为Go易学易维护,可扩展,同时可靠、高效、稳定和安全,适合在企业中使用,尤其是关键业务系统和基础设施领域。

文中介绍了将Go的愿景拆解为Go的"无限双循环"的理念。其中内循环侧重开发效率,外循环侧重可靠运维。Go在开发人员效率、安全性和性能等方面都有出色的解决方案。如IDE集成、并发模型、格式化工具、测试框架、调试器、静态部署等有助提高开发效率;依赖管理、漏洞扫描、模糊测试等确保安全性;垃圾回收、编译优化等提升性能。

此外,Go兼具快速入门、快速迭代、可扩展构建、安全可靠、低运维成本、云原生设计等特性,能让客户快速获得价值、降低总拥有成本、享受云优势,获得高客户满意度。Go可视为构建现代云基础设施的理想语言。


Gopher部落知识星球[16]在2024年将继续致力于打造一个高品质的Go语言学习和交流平台。我们将继续提供优质的Go技术文章首发和阅读体验。同时,我们也会加强代码质量和最佳实践的分享,包括如何编写简洁、可读、可测试的Go代码。此外,我们还会加强星友之间的交流和互动。欢迎大家踊跃提问,分享心得,讨论技术。我会在第一时间进行解答和交流。我衷心希望Gopher部落可以成为大家学习、进步、交流的港湾。让我相聚在Gopher部落,享受coding的快乐! 欢迎大家踊跃加入!

e3c5ea30595419792e787e561e3cb8a8.jpegee86c89c14995be67aaa2a1b64a9a0ea.png

8857979c7cffa83b5af12bf28bf98ea1.png677dae57b0f126f233aefdcd25611952.jpeg

著名云主机服务厂商DigitalOcean发布最新的主机计划,入门级Droplet配置升级为:1 core CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址[17]:https://m.do.co/c/bff6eed92687 开启你的DO主机之路。

Gopher Daily(Gopher每日新闻) - https://gopherdaily.tonybai.com

我的联系方式:

  • 微博(暂不可用):https://weibo.com/bigwhite20xx

  • 微博2:https://weibo.com/u/6484441286

  • 博客:tonybai.com

  • github: https://github.com/bigwhite

  • Gopher Daily归档 - https://github.com/bigwhite/gopherdaily

ed79e71827f7ef6247e6f51807ab87cd.jpeg

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

参考资料

[1] 

Google I/O大会: https://io.google/2024/intl/zh/

[2] 

Gemini 1.5 Pro: https://deepmind.google/technologies/gemini/pro/

[3] 

Project Astra: https://deepmind.google/technologies/gemini/project-astra/

[4] 

OpenAI的GPT-4o: https://openai.com/index/hello-gpt-4o/

[5] 

文生视频模型Veo: https://deepmind.google/technologies/veo/

[6] 

AI Overview: https://developers.google.com/search/docs/appearance/ai-overviews

[7] 

“Profile-guided optimization with Go”: https://www.youtube.com/watch?v=FwzE5Sdhhdw

[8] 

电影“源代码”: https://movie.douban.com/subject/3075287/

[9] 

美国计算机学会通讯(Communications of the ACM): https://cacm.acm.org/

[10] 

《Go编程语言与环境》: https://cacm.acm.org//magazines/2022/5/260357-the-go-programming-language-and-environment/fulltext

[11] 

为了在规模化的实际软件工程中提供便利: https://go.dev/talks/2012/splash.article

[12] 

模糊测试: https://tonybai.com/2021/12/01/first-class-fuzzing-in-go-1-18

[13] 

Go 1.21: https://tonybai.com/2023/08/20/some-changes-in-go-1-21

[14] 

向前和向后兼容性特性: https://tonybai.com/2023/09/10/understand-go-forward-compatibility-and-toolchain-rule/

[15] 

Profile Guided Optimization(PGO): https://go.dev/doc/pgo

[16] 

Gopher部落知识星球: https://public.zsxq.com/groups/51284458844544

[17] 

链接地址: https://m.do.co/c/bff6eed92687

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1691374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于pytest中用例名称使用中文乱码的解决

场景:使用pytest.mark.parametrize装饰器为用例自定义名称时,运行显示乱码。如下图所示: 解决方案: 1.在根目录 pytest.ini中增加一行代码 [pytest] disable_test_id_escaping_and_forfeit_all_rights_to_community_supportTrue…

学习使用博客记录生活

学习使用博客记录生活 新的改变 今天新的开始,让我用图片开始记录吧 看这个背景图片怎么样

微信小程序实现容器图片流式布局功能,配合小程序原生框架使用。

小程序实现容器图片流式布局功能,因为目前论坛上也有很多博主出过类似的文章,这里我就以一个小白角度去讲一下如何实现的吧。给作者一点点鼓励,先点个赞赞吧👍,蟹蟹!! 目标 实现下方效果图 技术…

基金/证券项目如何进行非交易日数据补全(实战)

一些大数据开发的项目,特别是基金/证券公司的项目,都经常会涉及到交易日与非交易日的概念。 如果要让你对一张交易日跑批的主表,怎么去补全非交易日的数据呢? 在遇到这种情况的时候,我们要去怎么处理?来&…

模板编译之入口分析

Vue 是一个渐进式 JavaScript 框架,提供了简单易用的模板语法,帮助开发者以声明式的方式构建用户界面。Vue 的模板编译原理是其核心之一,它将模板字符串编译成渲染函数,并在运行时高效地更新 DOM。本文将深入探讨 Vue 模板编译的原…

图片分类模型训练及Web端可视化预测(下)——Web端实现可视化预测

Web端实现可视化预测 基于Flask搭建Web框架,实现HTML登录页面,编写图片上传并预测展示页面。后端实现上一篇文章所训练好的模型,进行前后端交互,选择一张图片,并将预测结果展示到页面上。 文章目录 Web端实现可视化预测…

前端基于word模板导出word文档

项目环境 vue2 js vue-cli等 依赖包都可以在npm官网找到对应文档 npm官网(英文) 1、依赖 安装依赖 docxtemplater npm i docxtemplaterfile-saver npm i file-saverjszip-utils npm i jszip-utilsjszip npm i jszip在对应页面或模块中引入依赖 import Docxtemplater …

探索AI写作工具:五款推荐

在现实生活中,除了专业的文字工作者,各行各业都避免不了需要写一些东西,比如策划案、论文、公文、讲话稿、总结计划……等等。而随着科技的进步,数字化时代的深入发展,AI已经成为日常工作中必不可少的工具了&#xff0…

智慧之选:开源与闭源大模型的未来探索

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

有一个3x4的矩阵,要求编写程序求出其中值最大的那个元素,以及其所在的行号和列号

解题思路: 先考虑解此问题的思路。从若干数中求最大数的方法很多,现在采用"打擂台"的算法。如果有若干人比武,先有一人站在台上,再上去一人与其交手,败者下台,胜者留在台上。第3个人再上…

selenium安装出错

selenium安装步骤(法1): 安装失败法1 第一次实验,失败 又试了一次,失败 安装法2-失败: ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。: c:\\programdata\\a…

【C++题解】1697. 请输出n~1之间所有的整数

问题:1697. 请输出n~1之间所有的整数 类型:循环 题目描述: 从键盘读入一个整数 n ,请输出 n∼1 之间所有的整数,每行输出 1 个。 比如,假设读入 n5 ,输出结果如下: 5 4 3 2 1 输入&#xff1…

UE5 像素流与web 交互

总结下虚幻与网页的交互,这里将ue5 与js 交互传递参数记录下,其它的博主写的就是缺胳膊少腿的要么就是封闭收费,这个是在官方可以查询到。这里记录下: 点个关注不迷路: 具体的使用如下: 在你的游戏玩家类…

推荐几款新手学习编程的网站

免费在线开发平台 介绍一款编程平台,专为学生和开发者量身打造!平台拥有近4000道编程题目,支持多种编程语言(包括C、C、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3和C#),为您提供全面的学…

【Oracle篇】rman标准化全库备份策略:完整备份or增量备份(第三篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

YoloV8改进策略:蒸馏改进|CWDLoss|使用蒸馏模型实现YoloV8无损涨点|特征蒸馏

摘要 在本文中,我们成功应用蒸馏策略以实现YoloV8小模型的无损性能提升。我们采用了CWDLoss作为蒸馏方法的核心,通过对比在线和离线两种蒸馏方式,我们发现离线蒸馏在效果上更为出色。因此,为了方便广大读者和研究者应用&#xff…

Kubernetes Service 之原理与 ClusterIP 和 NodePort 用法

Kubernetes Service 之原理与 ClusterIP 和 NodePort 用法 Service 定义 在 Kubernetes 中,由于Pod 是有生命周期的,如果 Pod 重启它的 IP 可能会发生变化以及升级的时候会重建 Pod,我们需要 Service 服务去动态的关联这些 Pod 的 IP 和端口…

六个免费的AI制图网站的介绍

六个免费的AI制图网站的介绍 以下是六个免费的AI制图网站的介绍,包括官网、特点、缺点以及使用时的注意事项: 海鲸AI 官网:AI绘画创作平台 - 海鲸AI | 智能艺术生成器特点:支持PC和移动端,集成了Midjourney AI模型&am…

【Spring】SSM介绍_SSM整合

1、SSM介绍 1.1简介 SSM(Spring SpringMVC MyBatis)整合是一种流行的Java Web应用程序框架组合,它将Spring框架的核心特性、SpringMVC作为Web层框架和MyBatis作为数据访问层框架结合在一起。这种整合方式提供了从数据访问到业务逻辑处理再…

jmeter之测试计划

一、测试计划作用 测试计划是jmeter的默认控件所有线程组都是测试计划的下级控件测试计划可以配置用户自定义的变量测试计划可以配置线程组的串行或并行 二、查看界面 名称:可以修改自定义的名称注释:解释测试计划是用来做什么的用户自定义的变量&…