Go语言有个“好爹”反而被程序员讨厌?

Go (Golang) 是 Google 开发的一种编译型、并发型,并具有垃圾回收功能的编程语言,于 2009 年 11 月正式宣布推出成为开源项目,2012 年发布 1.0 版本。

如今,谷歌仍在继续投资该语言,最新的稳定版本是 1.22.5。

在最新的 TIOBE 7 月榜单中,Go 排名第七。与其他所有编程语言一样,有人喜欢 Go 语言也有人讨厌,同样的功能既会带来诋毁也会带来赞美。

InfoWorld 撰稿分析了开发人员喜欢或讨厌 Go 语言的 8 个原因,具体如下。

1、易于学习

Go 的设计者特意打造了一种易于学习的语言,没有太多复杂的功能或特异之处。

喜欢的点在于:对于新程序员和团队成员来说,更简单的语言更容易学习和掌握。由于老程序员可以很快学会 Go 的新技巧,因此项目人员配备也更容易。不仅如此,相关代码通常也更容易阅读。

讨厌的点在于:太过简单反而束缚了手脚。“一个女巫会选择一本简略的咒语书吗?四分卫会选择只有几个战术的战术书吗?一些程序员认为,用 Go 编程就像一只手被绑在背后。这种语言缺乏其他语言设计者向世界展示的所有聪明才智,而这是要付出高昂代价的。”

2、Go 不会偏袒任何一方

最初开发人员希望创建一种小型语言,为此他们牺牲了其他语言中许多受欢迎的功能。Go 是一种精简的语言,即可以满足用户的需求,又省去了一些繁琐。

喜欢的点在于:许多开发人员都称赞 Go 的简单性。Go 不需要他们掌握或保持数十种功能的专业知识才能熟练使用。

讨厌的点在于:每个人都有一些喜欢的功能和技巧,但 Go 很可能不提供这些功能和技巧。开发人员有时会抱怨,他们只需用 COBOL 或 Java 或其他喜欢的语言写一行代码,就可以完成在 Go 中可以完成的相同任务。

3、基于 C 的语法

Go 的设计团队确实基于传统 C 语言改进了一些缺陷,并简化了一些细节,使其看起来和感觉更现代。但在大多数情况下,Go 完全继承了始于 C 语言的传统。

喜欢的点在于:在 C 语言风格中成长起来的程序员会直观地理解 Go 的大部分内容。他们将能够非常快速地学习语法,并且可以花时间学习 Go 相较 C 或 Java 的一些改进之处。

讨厌的点在于:很多方面,Python 的设计都是与 C 截然相反的。对于喜欢 Python 方法的人而言,会觉得 Go 有很多让人讨厌的地方。

4、Go 的规则太多了

从一开始,Go 的创建者就希望不仅定义语法,还定义语言的大部分风格和使用模式。

喜欢的点在于:Go 的强惯用规则确保代码更容易理解,团队将减少对风格的争论。

讨厌的点在于:所有这些额外的规则和惯例都像束缚。“程序员在生活中拥有一点自由有那么糟糕吗?”

5、Go 有额外的错误处理

喜欢的点在于:Go 方法承认错误存在,并鼓励程序员制定处理错误的计划。这就鼓励程序员提前计划,并建立起一种弹性,从而开发出更好的软件。

讨厌的点在于:不必要的错误处理会让 Go 函数变得更长、更难理解。通常情况下,deep chain 中的每个函数都必须包含类似的代码,这些代码或多或少会执行相同的操作,并产生相同的错误。其他语言(如 Java 或 Python)鼓励程序员将错误 "throw" 到链上的特定代码块中,以 "catch" 它们,从而使代码更简洁。

6、标准库

喜欢的点在于:当许多标准功能由默认库处理时,大多数代码更易于阅读。因为没有人会编写自己的版本,或争论哪个软件包或第三方库更好。

讨厌的点在于:一些人认为,竞争能更好的推动需求和创新。有些语言支持多个软件包来处理相同的任务,表明大家对此确实有着浓厚的兴趣和丰富的文化。

7、可执行文件的大小

Go 团队的目标之一是让部署 Go 程序变得更容易,他们通过将所有程序打包成一个可执行文件来实现这一目标。

喜欢的点在于:磁盘空间很便宜。当安装了不同版本的库时,在陌生的位置部署代码可能是一场噩梦。Go 开发人员只需构建一个可执行文件就可以节省大量时间。

讨厌的点在于:我的磁盘上有多少份 Go 库?如果我有 100 个程序,那就意味着 100 份。在某种程度上,效率是一个考虑因素。没错,磁盘空间比以往任何时候都便宜,但内存带宽和缓存仍然是影响执行速度的首要问题。

8、背靠“好爹”谷歌

Go 由谷歌开发,这家大公司一直是 Go 的主要支持者之一。大多数情况下,Go 开发工作都直接来自 Google 内部。

喜欢的点在于:如今,大量的工作涉及为服务器和客户端编写代码,而这类工作在 Google 的工作量中占了很大一部分。如果 Go 对谷歌有利,那么对我们这些以同样方式工作的人也有好处。如果谷歌的工程师们能开发出自己喜欢的东西,那么任何有类似项目的人都会同样喜欢它。

讨厌的点在于:这并不是说人们不喜欢谷歌本身,而是程序员不信任中心化组织、供应商锁定和缺乏控制等问题,对任何试图管理技术堆栈的人来说都是严重的问题。谷歌的慷慨仍然让程序员们心存疑虑,尤其是当其他语言都拥有了围绕它们构建的庞大的开源社区。


相关阅读:
Go语言之父反思错误:“并发”理念指导不足、没做好包管理、用C写了编译器、文档缺失……
Go语言之父总结成功因素:吉祥物功不可没
谷歌内部用Java比Go还多?

Reference

https://www.infoworld.com/article/2514123/8-reasons-developers-love-go-and-8-reasons-they-dont.html

END


热门文章

Vue诞生10年,创始人尤雨溪推动“锈化”

"Only Google Can Do"API:可读取系统CPU和内存使用情况等信息

完全开源的现代化IDE正式发布:支持云端和桌面、兼容VS Code扩展

这款中国程序员开源的游戏引擎,让你用不到100行代码就写出“愤怒的小鸟”


相关推荐

  • 没听说过MODBUS TCP实时性可能差???
  • 带大家感受一下物种的多样性
  • 像拼搭积木一样同时管理30+数据库引擎
  • 随时撸代码,愉快滴在手机上玩Python!
  • 腾讯的新年薪,把员工当猴耍???
  • 变天了!硕士学历停止发放生活及租房补贴。。。
  • js如何控制一次只加载一张图片,加载完成后再加载下一张
  • 不良资产投资人,盯上一级市场了
  • 去 TCL 了,一些我面试的小心机
  • 字节员工:一直误以为自己是“老板”的嫡系,直到被裁的那一刻发现自己只是干活的牛马
  • 招聘|营销算法工程师
  • 数据赋能实战:企业产品与业务的升级之道!
  • 指标归因在互联网平台的应用
  • 剑桥大学:基于语音的大模型攻击,轻松“操纵”多模态大模型
  • 斯坦福提出大模型最强架构TTT,超越Transformers
  • OpenAI神秘項目「草莓」曝光!自我进化已超越人类智能?马斯克嘲讽:回形针灾难
  • Mamba真比Transformer更优吗?Mamba原作者:两个都要!混合架构才是最优解
  • 已婚男子「出轨」AI女友,无法自拔!GPT-4o发布在即,年入十亿美金产业爆发
  • OpenAI秘密武器「草莓」计划曝光!Q*推理能力大爆发,逼近AGI L2里程碑
  • GraphRAG科普长文推荐:知识图谱增强生成宣言,为通用人工智能注入知识