Golang vs Python:选哪个?

Go语言中文网

2021-09-23

对开源开发来说 Golang 和 Python 哪个语言更好,我们详细分析对比一下。

在任何项目开始之前,大多开发团队需要通过多次会议讨论来确定最适合他们项目的编程语言。很多时候他们会在 Python 和 Golang 中间纠结。在这篇 Golang vs. Python 的博文中,我将亲自从多角度对比这两种语言,以帮你确定哪种语言最适合你。主要从以下几个方面比较:

  • 性能
  • 可扩展性
  • 应用
  • 执行
  • 代码可读性

让我们开始吧。在对比开始之前,让我来对这两种语言做简要介绍吧。

本文是 Go语言中文网组织的 GCTT 翻译,发布在 Go语言中文网公众号。

Golang

Golang[1] , 也就是我们常说的 Go,是由 Google 开发的一种计算机编程语言。Golang 是于 2007 年在 Google 开始开发的,2009 年面世。Go 语言的三位主要开发人员分别是 Google 的 Robert Geriesemer,Rob Pike 和 Ken Thompson。这几位一直以来的目标是创建一种语法上与 C 语言相似,又能像 C++ 一样消除「多余的垃圾」的语言。以致于 Go 语言包含现代多种语言的特性,如方法和运算符的重载、指针运算、类型继承。最终,造就了一个带有轻量并强大库以及拥有无敌的性能和速度的静态类型语言。

这就是关于 Go 语言的内容。下面来说说 Python。

Python

Python 是一种多用途的编程语言,换句话来说它几乎可以做任何事情。Python 是由一位荷兰程序员 Guido van Rossum 编写,于 1991 年首次发布。Python 最重要的一方面是它是一种解释型语言,这就意味着 Python 代码不会在运行时被翻译成机器语言,而大多数编程语言会在代码编译过程中完成这种转换。这种编程语言(解释型)也被称为「脚本语言」,因为它们最初是被用来做一些小项目的。

OK,既然我已经向大家粗略地介绍了两种语言,那让我们继续将他们做对比吧。

Golang vs. Python:性能

首先我们要对比的是这两种语言的性能。比较性能有一个很好的方法是处理复杂的数学问题。虽然不完全公平,但是在谈及处理问题时的内存使用率和耗时时,必然能够证明这一点。

我们同时用两种语言处理了三个问题,即 *Mandelbrot 方程 *、*n-body 问题 * 以及 fasta。这些都是需要进行大量计算的复杂的问题,所以是一种非常不错的测试语言性能和内存管理的方法。

抛开拿它做性能测试不说,这几个问题都很有意思,值得一看。而我们现在的关注点在 Golang 和 Python 的性能表现。

很明显,在性能方面 Golang 胜过 Python。

OK, 继续比较下一项:可扩展性。

Golang vs. Python:可扩展性

如今,构建一个高可扩展性的应用是一门艺术。如果不做到扩展,那将对业务产生不利影响。Golang 在设计的时候便一直在考虑着这件事。Golang 的初衷是帮助 Google 的开发者解决内部大量的问题,这基本上涉及到成千上万的开发者在寄宿于成千上万集群的大型软件服务。这就是 Golang 具有内置支持并发进程通道(也就是并发性)的原因。而 Python 并不支持并发,它只是通过多线程来实现并行。

让我们来了解一下并发和并行。

并发和并行

并发的意思是说,一个应用在多个任务里同时(并发地)处理多个进程。如果计算机只有一个 CPU,则应用程序可能无法在同一时间在多个任务上取得进展,但应用内的线程会在同一时间段内被执行。在下一个任务被执行之前,当前任务并没有完全完成(交替执行)。

并行是说应用将它的任务分成多个能在同一时刻执行的多个子任务,例如在多个 CPU 上同时执行。

显而易见,天然支持并发的编程语言更适合大型、要求高可扩展性的项目。

让我们继续比较这两种语言的应用。

Golang vs. Python:应用

本节中没有一个很明显的赢家,因为每种编程语言都有自己特定的目的和用途。比如 Javascript 主要用于 Web 开发。同样的,Python[2] 被广泛地用于数据分析、人工智能、深度学习以及 Web 开发。在刚才所说的领域中,使用 Python 更易于开发,这定要归功于这些强大的库了。

而 Golang 更多的用于系统编程。这归结于它天然支持并发,同时它在云计算和集群计算领域中使用广泛。由于 Golang 拥有强大易用的库,可以让你很快搭建出一个 Web 服务,所以 Golang 也被大量用于 Web 开发,增速也很大。如果你也想学 Go 语言中这一很酷的东西,可以直接看我的 Golang tutorial[3] 这篇文章。

Golang vs. Python:执行

现在我们来比较一下 Go 语言代码和 Python 代码是如何被执行的。首先我们要明确的是 Python 是动态类型语言,而 Go 是静态类型语言。Python 和 Go 分别使用解释器和编译器。

为了了解为什么我要对比语言的这一参数,我们必须要知道动态类型语言和静态类型语言的区别。

变量类型被显示声明给编译器,以致于细微的 bug 也能被很容易地捕获到。而在动态类型语言中,类型推断由解释器实现,而解释器在推断类型的过程中可能会出错,从而导致存在遗留 bug。

当开发者想创建一个相当大的项目时,会因为 Python 语言的动态类型这一特性而受限,而 Go 语言可以灵活应用于任意规模的项目。

下面开始比较它们的库吧。

Golang vs. Python:库

强大的库是开发者的福音,因为它能使我们的开发工作更容易。因此,拥有一个优秀的库对编程语言来说是至关重要的。在本节的比较中,Python 肯定以量获胜。比如可以让你使用数组来处理复杂的矩阵问题的 Numpy 库,专注深度学习的 Tensorflow 库和 Scikit Learn 库、针对图像处理的 OpenCV、数据分析的 Pandans、可视化的 matplotlib,等等等等 ~。讲真,如果 Python 仅是因为一件事而闻名,那必定是它的库。但这并不意味着 Go 逊色于它。当 Go 在被开发的时候,Google 将一些很重要的库以内置的形式作为 Go 语言的一部分。虽然从数量上来讲没有 Python 的那么猛,但它的库所涉及的领域和 Python 是一样广的。它有针对 Web 开发、数据库处理、并发编程以及加密的强大的库。

最后一个比较点,可读性!

Golang vs. Python:可读性

当你为客户开发软件时,一般都是和十人团队或百人团队合作开发。这时,代码可读性会成为被大家考虑的重要因素。

可能大部分人认为 Python 在可读性上更胜一筹,但我有着不同的观点,且听我说完。先看一下 Python sure has fantastic readability[4],但在我看来,他们有点说得过头了。在 Python 中,可能有 10 种不同的方式来表达相同的东西,通常这会导致当代码很大或者协作的人很多时产生混淆。

另一方面,Go 在编程的时候有着严格的规则约束。它不允许不使用的包被 import,或者不被使用的变量被声明。这便意味着在大型团队中有更明确的方法对代码有着更好的理解,但有谁会去关心多功能性呢,尤其是在进行核心开发的时候。Golang 的语法对于初学者来说很不友好,但比 C 或 C++ 好很多。所以对于代码的可读性,我更倾向于 Golang。

大家都看到了,在我看来,作为一门编程语言,Glang 在很多方面都胜过 Python。当然 Golang 不像 Python 一样有名,Python 这几年已经在充斥在整个互联网中,但是 Go 在这方面也是迎头赶上。如果你对我的看法有异议,可在下方评论区进行评论。我希望我可以帮助你确定哪门编程语言对你的项目更好。请继续关注更多 Golang 的博客。


via:https://dzone.com/articles/golang-vs-python-which-one-to-choose

作者:Aryya Paul[5]译者:BeGemini[6]校对:polaris1119[7]

本文由 GCTT[8] 原创编译,Go 中文网[9] 荣誉推出,发布在 Go语言中文网公众号,转载请联系我们授权。

参考资料

[1]

Golang: https://www.edureka.co/blog/golang-tutorial

[2]

Python: https://www.edureka.co/blog/python-tutorial/

[3]

Golang tutorial: https://dzone.com/articles/golang-tutorial-learn-golang-by-examples

[4]

Python sure has fantastic readability: https://dzone.com/refcardz/core-python

[5]

Aryya Paul: https://dzone.com/users/3510559/aryya-paul.html

[6]

BeGemini: https://github.com/BeGemini

[7]

polaris1119: https://github.com/polaris1119

[8]

GCTT: https://github.com/studygolang/GCTT

[9]

Go 中文网: https://studygolang.com/


(0)

相关推荐

  • 竟然还在争论是否学Go?本文彻底终结该话题

    本文一篇文外,是 Go语言中文网组织的 GCTT 翻译,发布在 Go语言中文网公众号. 我们都经历过绿地(greenfield)项目初期的幸福感.对于每一个决定,你都有无限的选择余地,当你启动项目编码 ...

  • Python与Golang哪个好学?

    在当下,Python和Golang都是非常受欢迎的编程语言;有不少人转行学编程的时候,在它们之间犹豫不决,那么Python与Golang对比,你会如何选择?我们通过下面了解一下. Golang的特点: ...

  • 什么是Python?和PHP有什么差异?

    众所周知,编程语言有很多,其中包含Python和php,关于这两门语言,很多人都不太了解,下面小编带领大家来看看python和PHP的区别吧. 什么是python? python是一种高级面向对象的编 ...

  • 推荐7款好用的Python工具!

    Python数据分析好用的工具有哪些?今天小编为大家推荐七个数据分析师必备的Python工具. Pandas:是一个开源的,BSD许可的库,为Python编程语言提供高性能,易于使用的数据结构和数据分 ...

  • 如果你还没老到不能学编程如果你喜欢Python选这本入门(界面真的很整洁清晰)

    https://m.toutiao.com/is/eFjnPDh/ 其实不知不觉感觉自己也老了,此时此刻,面对自己的年龄,面对每天的柴米油盐,面对每天的一地鸡毛,除了每天劝劝自己没有任何捷径.也许多学 ...

  • 低级别I/O基准测试。C, C , Rust, Golang, Java, Python

    比较不同语言如何处理网络I/O,检查Rust是否保持其高性能的承诺 Eugene Retunsky 6分钟阅读 这篇文章是<衡量网络服务性能>的延续. 当我的电脑没有互联网连接时,我发现我 ...

  • Python在大部分领域都能胜任,为什么很多企业转向了Golang?

    或许很多人会说,性能在大多数情况下并非问题,我也这么认为,要不然就没有那么多流行的动态语言了.虽然,性能的确是一个很重要的考虑因素,但是当因性能而严重降低了项目的开发进度,也得不偿失,特别是初创企业. ...

  • 初入门,Python和web前端如何选?

    Python和web前端想必大家都很熟悉,不过很多转行的朋友都会问:学习Python还是web前端呢?Python和Web前端哪个就业前景好?接下来小编为大家介绍一下. 其实Python和web前端都 ...

  • Python和Java二选一该学啥?

    由于互联网的高速发展,越来越多的人选择加入IT行业.所以,对于刚入行的小伙伴来说,到底该选择哪一门编程语言学习比较好呢?始终独占优势的Java,还是落后的Python,在做出选择之前,我们先了解一下现 ...

  • Python和Java你会如何选?小白必看

    初入门学习编程,Python和Java是大家最纠结的问题,让很多人不知道从何下手,今天我们通过这篇文章为大家介绍一下. Python是一门拥有简洁语法的高级编程语言,一个名为Guido van Ros ...

  • 如果只能从市面上的Python入门书中选择一本送给你,那我一定会选这本……

    大家好,欢迎来到Crossin的编程教室!我是Crossin. 今天我要给你们送本书. 这本书,亚马逊评分4.5,豆瓣评分8.5,曾获得2011年JOLT(有"软件业界的奥斯卡"之 ...

  • 基金定投选星期几更划算?[python统计分析]

    基金定投常见的一种方式是定期定额投资,即每周或每月固定的时间段,向基金公司申购固定份额的基金.基金定投可以平均成本.分散风险,实现自动投资,所以基金定投又称为"懒人投资术".今天主 ...

  • Python VS Java如何选?优劣势对比!

    大家在转行学习编程语言的时候,总会纠结Python和Java的选择,毕竟一个是后起之秀,一个是行业老大,二者不分上下,棋逢对手.那么Python VS Java如何选择呢?小编告诉你答案. 运行速度: ...