我们都经历过绿地(greenfield)项目初期的幸福感。对于每一个决定,你都有无限的选择余地,当你启动项目编码的时候,你首先要处理的问题是我应该选择哪种编程语言来开发我的项目?
我是应该使用一种新的有趣的语言还是应该坚持使用最流行的语言?幸运的是,在 baconce Technology,我们的专家对这些问题非常熟悉,因为我们处理过各种宽高比(shapes)和尺寸的客户端(屏幕),而且我们总是在考虑编程语言应该适合服务器端应用程序开发这一共同可能性的情况下做出选择。这就是为什么我们特别重视 Golang 。
如今,大多数科技创始人都在使用 Go 语言。这引起了很多人的好奇,为什么有十年历史的语言正在成功地取代 1991 年出现的 Java 和其他编程语言,它们比 Golang 要古老得多。
为了验证,我检查 [TIOBE Index](https://www.tiobe.com/tiobe-index/) 的流行程度,TIOBE 是一个衡量编程语言流行程度的编程社区指数,根据 TOIBE 公布数据,Go 编程语言的使用和采用都有显著且稳定的增长。Go 是一种严肃的语言,在提升企业级项目方面具有良好的记录。
## 回到最初的问题:为什么选择 Golang ?
假设您是一名 Golang 程序员,并且在一个完全不同的城市参加活动。您决定与周围的人分享一些有关 [Golang 中微服务架构](https://www.bacancytechnology.com/blog/microservice-architecture-in-golang) 的知识; 它是一个二进制文件,所以 Golang 相对稳定,成熟且快速。你的知识吸引了其他人的注意,其中一个人立刻使您认为 [Golang 比 Rust 更好](https://www.bacancytechnology.com/blog/golang-vs-rust),另一个人也好奇地问 [Golang 是否会超越 Python](https://www.bacancytechnology.com/blog/9-reasons-to-choose-golang) ?
不幸的是,您感觉不太好,因为您只能回答 Go 语言的问题,使 Golang 成为 Web 应用程序开发的最佳编程语言,但这并不是一个令人满意的答案。 突然之间,您选择使用 Go 语言而不是其他编程语言开始感到难过,因为您被告知 Go 相当快并且在语法上类似于 C,但是具有 CSP 样式的并发,垃圾回收和内存安全性。
您选择了 Go 作为一种有前途的语言,但是另一种对 Golang 的看法则完全不同,然而你早就做出了选择,现在您很高兴加入圈子,是因为您想一劳永逸地解决辩论。
## 那么让我们一起讨论:为什么 Golang 比 Python 好?
- Go 和 Python 都以面向简单的语言呈现。 两种语言的代码都易于阅读和理解。
- 与 Python 相比,Golang 提供了更流畅的调试过程。 Python 是动态类型语言; 它在运行时提示错误,而 Go 是静态类型语言。 它在编译时而不是执行时提示错误。
- Go 提供了对 Web 应用程序开发的内置支持; 因此,Go 开发者表示不需要使用框架。 但是,Python 为您提供了便利的基础方法。
- **Golang vs. Python: 性能**
通过包括内存管理,功能和速度等多个因素,可以轻松测试这两种编程语言的性能。 两种编程语言都表现出色。
- **Golang vs. Python: 扩展性**
在当今时代,拥有可扩展的应用程序构建过程是研发类型公司要考虑的最重要的事情之一。 Golang 是一种参数类型强校验的编程语言。 对于像 Google 这样的 Golang 研发类型公司来说,并发过程通道的支持和想法被证明是一个重要因素。
但是,当涉及到 Python 时,该语言在并发情况下肯定会出现一些问题,但在并行性方面却总能得出令人莫名其妙的结果。当涉及到分解任务以提供更好的可扩展性时,Python 提供了一致的结果。
## 有人好奇地问您对此有何看法
### Golang vs. Rust
好吧,Go vs. Rust 一直是讨论的热门话题,因为它们大约同时发布。 在设计 Web 应用程序时,Rust 和 Golang 都是能胜任的语言。 两种语言都能够处理高流量,并且还能够垂直和水平缩放。 Rust 和 Golang 语言都不容许不安全的内存访问。
相反,行业专家建议,与 Rust 相比,Go 在所有可能的方式上都是一种优越的语言。 与其他编程语言相比,它是完全安全的。 两种语言都在增长,并在开发者社区中越来越流行。 [为什么 Go 比 Rust 更好?](https://www.bacancytechnology.com/blog/golang-vs-rust) 由于其简单性和易用性。 它的学习速度也更快,为开发人员提供了更轻松的编程体验。 因此,Go 是开发人员团队更喜欢的语言。 Go 语言注重简单性和统一性。 通过提供严格的简化应用程序,可以使团队更加高效。
Rust 作为一种编程语言,为开发人员团队提供了精细的控制能力,还可以控制线程及其在系统其余部分的行为。 然而,由于 Rust 的复杂性以及学习和适应的难度,Rust 并未得到广泛的欢迎。 此外,Rust 无法轻易适应其他语言(例如 Python),并且正在竞争寻找其在 C ++ 和 D 等语言中的重要性。
## 然后我问,您对 Golang 与 Node.js 有何看法?
### Golang Vs. NodeJS:性能
在 Node.js 的比较中,Golang 非常轻巧,其性能特征类似于 C / C ++。 在现实生活中,两种技术都显示出相似的结果。 当涉及数据库交互或网络通信时,Node.js 和 Go 几乎是相等的,它们以相似的速度工作。
Go 的性能始终如一,但 Node.js 的性能忽高忽低,这取决于要构建的应用程序的类型。
### Golang Vs. NodeJS: 错误处理
当涉及到编译时和运行时错误时,肯定会给 Go 开发人员带来麻烦。 Golang 的创建者还开始执行进一步的错误处理功能,以缩短开发时间。 而 Node.js 的错误处理机制在常规方法中非常流行,因为错误会在执行进一步操作之前立即容错修复。 但是 Node.js 的执行结果有时会不一致。
### Go vs. Node JS: 开发工具
在 Nodejs 的比较中,Golang 没有过多的库和包。 Go 需要对手动配置进行研究,而 Node.js 具有广泛的工具,框架,库和庞大的社区,可为各种开发工具提供扩展支持。 在开发工具中,Go 输给了 Node.js。
## Golang 如何与其他编程语言相提并论?
Golang 从根本上更好,因为它具有在所有任务中都能平稳运行的能力和可伸缩性。 在机器学习,物联网,云编码和后端方面,它是卓越的–显而易见的赢家,因为它节省了时间。 这就是它给我们带来的强项和范例。
如果您打算在考虑跨平台支持的情况下构建 Web 应用程序,并充分利用并发性和代码库,那么毫无疑问,您应该 [雇用 golang 开发人员](https://www.bacancytechnology.com/hire-golang-developer)。 Go 是 Google 的一项出色的语言计划,并且迁移到 Golang 可能会帮助您制定软件策略,并且在不久的将来也很有用。
## 何时应该将您的应用迁移到 Golang?
在短时间内,Netflix 已将其服务扩展到全球范围,而 Netflix 利用 Golang 进行了优化的服务器加载,并通过 Golang 进行无中断的后台加载来对服务器进行有效的数据处理。
如果你的业务需要实施流行(modern )功能,例如新的电子商务功能和按需服务,那么毫无疑问,迁移到 Golang 是一个可行的选择。 当应用程序扩展并添加新功能时,由其前辈编写代码变得有些困难。 因为这会导致维护和故障排除中的响应时间增加。 因此,如果需求激增并且您现有的应用程序无法处理容量,那么 Golang 是确保服务器快速响应和可预测的业务增长的肯定选择。
via: https://www.bacancytechnology.com/blog/why-choose-golang-over-python-rust-and-nodejs
作者:Riken Solanki 译者:lts8989 校对:polaris1119
本文由 GCTT 原创翻译,Go语言中文网 首发。也想加入译者行列,为开源做一些自己的贡献么?欢迎加入 GCTT!
翻译工作和译文发表仅用于学习和交流目的,翻译工作遵照 CC-BY-NC-SA 协议规定,如果我们的工作有侵犯到您的权益,请及时联系我们。
欢迎遵照 CC-BY-NC-SA 协议规定 转载,敬请在正文中标注并保留原文/译文链接和作者/译者等信息。
文章仅代表作者的知识和看法,如有不同观点,请楼下排队吐槽