| 会员登录 立即注册

打印 上一主题 下一主题

为什么使用 Go 语言?

[复制链接]
跳转到指定楼层
楼主
3AAA 发表于 2023-3-1 20:24:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
楼主
3AAA
2023-3-1 20:24:21 4857 0 看楼主



他们知道我热衷于 Go 语言,但他们想知道为什么我认为其他人也应该关心。本文包含三个我认为 Go 是重要的编程语言的原因。 -- Dave Cheney
本文导航

    -安全 …… 07%

    -开发人员生产力 …… 26%

    -并发性 …… 56%

    -总结 …… 74%

    -相关文章: …… 79%
编译自: https://dave.cheney.net/2017/03/20/why-go
作者: Dave Cheney

译者: geekpi

几个星期前,我一个朋友问我:“为什么要关心 Go 语言”? 因为他们知道我热衷于 Go 语言,但他们想知道为什么我认为其他人也应该关心。本文包含三个我认为 Go 是重要的编程语言的原因。

安全

个人而言,你和我或许完全有能力在 C 中编写程序,既不会泄漏内存,也不会不安全地重复使用内存。然而,整体上,即使有超过 40 年[1]的经验,用 C 的程序员也无法可靠地这样做。

尽管静态代码分析、valgrind、tsan 以及 “-Werror” 已经存在了几十年,却很少有证据表明这些工具被广泛认可,更不用说广泛采用。总而言之,事实表明,程序员根本无法安全地管理自己的内存。现在是离开 C 的时候了。

Go 不需要程序员直接管理内存,所有内存分配都由语言运行时自行管理,使用前初始化,必要时检查边界。它肯定不是提供这些安全保障的第一个主流语言,Java(1995)可能是该冠军的竞争者。关键是,世界对不安全的编程语言没有胃口,所以人们默认认为,Go 是内存安全的。

开发人员生产力

从 20 世纪 70 年代末,开发人员的时间变得比硬件所耗费的时间更昂贵了。开发人员的生产力是一个不断扩展的话题,但它归结为这一点:你花了多少时间做有用的工作,又有多少时间等待编译器或者失望地迷失在外部代码库中。

有个笑话说 Go 是在等待 C ++ 程序编译[2]时开发的。快速编译是 Go 的一个重要功能,也是吸引新开发人员的关键工具。虽然编译速度仍然是一个永久的战场[3],但公平地说,在其他语言中需要几分钟的编译,在 Go 中只需要几秒钟。

Go 程序员意识到生产力的更根本的问题是代码是为了读而写的,所以将代码的阅读行为放在编写之上[4]。Go 通过工具和自定义来强制所有代码格式化成特定的样式。这消除了学习项目特定语言的方言时的困难,并有助于发现错误,因为它们看上去就是不正确。

由于专注于分析和机器辅助,Go 开发人员开始采用越来越多的工具来发现常见的编码错误,这种工具从来没有在 C 语言开发者中产生共鸣 - Go 开发人员希望工具帮助他们保持代码清洁。

并发性

十多年来,芯片设计师一直在警告免费午餐将会结束[5]。从最低端的手机到最耗电的服务器,硬件的并行性以更多、更慢、堆砌 cpu 内核[6]的形式出现,但只有当你的语言可以利用它们才有意义。因此,并发特性需要内置到我们编写的要在今天的硬件上运行的软件中。

通过提供一种基于协程的轻量级并发模型[7],或者是 Go 中已知的 goroutines,Go 超越了那些暴露操作系统的多进程或多线程并行模型的语言。goroutines 允许程序员避开复杂的回调,而语言运行时确保有足够的线程来保持你的内核的活跃。

总结

我给朋友推荐 Go 有三个原因:安全性、生产力和并发性。有些语言可以涵盖一个也有可能是两个方面,但是这三个方面的结合使得 Go 成为主流程序员的绝佳选择。

相关文章:


    为什么 Go 和 Rust 不是竞争对手[8]

    听听我在 OSCON 上谈 Go 语言性能[9]

    我在 GopherChina 和 GopherCon Singapore 中的演讲[10]

    压力测试你 Go 包[11]

via: https://dave.cheney.net/2017/03/20/why-go

作者:Dave Cheney[12] 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

    [1]: 40 年 - https://en.wikipedia.org/wiki/C_(programming_language)

    [2]: C ++ 程序编译 - https://commandcenter.blogspot.com.au/2012/06/less-is-exponentially-more.html

    [3]: 永久的战场 - https://dave.cheney.net/2016/11/19/go-1-8-toolchain-improvements

    [4]: 代码的阅读行为放在编写之上 - https://twitter.com/rob_pike/status/791326139012620288

    [5]: 免费午餐将会结束 - http://www.gotw.ca/publications/concurrency-ddj.htm

    [6]: 更多、更慢、堆砌 cpu 内核 - https://www.technologyreview.com/s/601441/moores-law-is-dead-now-what/

    [7]: 轻量级并发模型 - https://blog.golang.org/concurrency-is-not-parallelism

    [8]: 为什么 Go 和 Rust 不是竞争对手 - https://dave.cheney.net/2015/07/02/why-go-and-rust-are-not-competitors

    [9]: 听听我在 OSCON 上谈 Go 语言性能 - https://dave.cheney.net/2015/05/31/hear-me-speak-about-go-performance-at-oscon

    [10]: 我在 GopherChina 和 GopherCon Singapore 中的演讲 - https://dave.cheney.net/2017/02/09/im-speaking-at-gopherchina-and-gophercon-singapore

    [11]: 压力测试你 Go 包 - https://dave.cheney.net/2013/06/19/stress-test-your-go-packages

    [12]: Dave Cheney - https://dave.cheney.net/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

3AAA 当前离线
白银会员

查看:4857 | 回复:0

关于我们  |   侵权投诉受理  |   联系我们  |   Archiver  |  
免责声明:邳州信息网所有言论只代表发表者个人观点,与本站无关
Copyright © 2009-2025 pzxxw.com 版权所有:邳州金银杏文化传媒有限公司  

苏公网安备 32038202000401号

快速回复 返回顶部 返回列表