作者:SoftKraft机器之心编译参与:魔王

「人生苦短,我用 Python」是当下非常流行的一句口头禅。但你有没有想过,Python 就那么好吗?在某些方面,其他语言真的不香吗?本文作者对比了 Go 和 Python 的特点及测试结果,认为开发者应基于项目的属性和规模以及所需技能组合,合理地选择编程语言,而不是一味地将 Python 用在所有任务中。

互联网上有大量优秀的代码,它们构成了多种基础架构的基石。甚至本文所在网站的创建初衷也是创建优秀代码。虽然普通用户并没有注意到这一点,但优秀的开发者总是致力于优化其应用(以及代码)。

编写优秀代码的基础在于开发者的技能以及他/她所选择的编程语言。这必然导致开发者之间出现历史性的冲突,这冲突不仅存在于技能层面,主要还在于开发者所选择的语言。如果你把两种编程语言(如 Golang (Go) 和 Python)放在一起对比,大概率会得到这样的结果。

但是,我们退后一步,放下个人偏见和喜好,从优点和功能的角度来评价两种语言。然后设置公平的竞争环境和技能水准。

现在,我们只有两个选择:Go vs Python。那么问题来了:哪种语言更适合你?

关于 Python

询问一些开发者后,你会发现 Python 是「空前绝后」的语言。Python 获得这么多人青睐的原因在于它是一门非常优秀的编程语言。互联网上到处都是用 Python 写就的奇迹。

Python 是一门「古老」的语言,其概念首次出现于 1991 年。Python 的历史积淀赋予了它一些优势。Python 的使用者众多,这表示这门语言稳定,且具备大量编写完备的文档。在大部分案例中,你能找到几乎所有事物的库,以及关于你所思考的所有事物的代码示例。对于开发者和企业来说,这意味着使用 Python 伴随而来的是大量经验和代码,只需要评估即可。

还有大量以 Python 为基础创建的开源项目,因此在大多数情况下,你不需要从头开始。Python 可以很好地集成到企业级应用中,可用于机器语言和 AI 应用。但它也有缺点,比如,不适合内存密集型任务,执行速度略慢,不适合移动应用开发。

关于 Go 语言

Go 于 2009 年由谷歌开发完成。它解决了一个问题,创建出一种没有 C++等语言的过重包袱和过分设计的语言。这使得 Go 在性能和速度上都有极大提升,使用 Go 工作成为一件乐事。此外,大部分第一次使用 Go 语言的开发者不会感觉到不便,因为 Go 中的熟悉元素及其易用性构成了一项惊喜。

这并不是说 Go 语言在所有情况下都是完美的。虽然它将速度和优雅度提升到新的层次,但也舍弃了一些用户期望的功能。比如,它不具备大量库,也不支持继承。此外,它没有 GUI 库,也不支持对象导向的编程。Go 语言的特点表明它具备轻量级线程实现(Goroutine)、智能标准库、强大的内置安全性,且可使用最简语法进行编程。

性能测试

关于 Go 和 Python 的优缺点能说上三天三夜,但最关键的一点还是它们的性能。因此接下来本文在基于 Intel® Core™ i7–9700K CPU @ 3.60GHz × 8 cores 运行的试验配置中执行一些测试。

代码地址:https://github.com/sekarasiewicz/go-python-benchmark

二分搜索

创建整型列表(从 1 到 100000),使用二分搜索找出数字 729。测试结果如下:

冒泡排序

首先生成整型列表(包含 10000 个随机数字元素),然后使用冒泡排序算法对这些元素进行排序。测试结果如下:

从文件中读取

该测试是关于读取「lorem ipsum」文本文件,测试结果如下:

HTTP 请求处理

创建 HTTP 服务器很简单,但是用 Python 搭建一个类似的服务器则需要花费一番功夫。我们来看二者对简单的「hello world!」消息的响应时间:

如何选择?

Python 是社区最受欢迎的语言,在 2019 年第一季度「GitHub 发展最快的编程语言」中名列第二位(pull requests 数量增长 17%),但 Golang 也没落后多少,在该排名中名列第四(pull requests 数量增长 8%)。在 Golang 和 Python 中做出选择变得更加艰难。然而,在选择适合自己的语言时,你需要考虑以下事项:

可扩展性:Golang 在创建之初就考虑到了可扩展性。其内置并发性允许同时处理多项任务。Python 也使用并发性,但并非内置,它通过线程实现并行化。这意味着如果你打算处理大型数据集,Golang 似乎是更适合的选择。

性能:众所周知,Python 并非内存/CPU 友好的语言,但它具备大量库,可以高效执行基础的开发任务。Golang 具备内置功能,更适合微服务软件架构。

应用:Python 适合人工智能、数据分析、深度学习和 web 开发任务,而 Golang 适用于系统编程,执行云计算和集群计算应用的开发者喜欢使用 Golang。

社区与库:如前所述,Python 的历史赋予它一定优势。其中之一就是它具备大量库,拥有大型支持社区。而 Golang 语言仍在增长期,没有那么多库和社区支持。但是我们不应因此判定 Go 语言出局。其增长率和采用率非常惊人,每天都在扩张。

执行:如果速度是王道,那么 Golang 遥遥领先。

考虑以上事项后,具体使用案例将成为采用哪种语言的决定性因素。假如你的开发团队要创建微服务,那么 Golang 是更合理的选择,因为它速度快、易于编程、可扩展性优异。而 Python 更适合 AI、ML 和数据分析任务。

从直接测试结果来看,Go 在大部分案例中领先,被认为是 Python 的有效替代方案。开发者在选择编程语言时,应考虑开发项目的性质和规模,以及所需的技能组合。

好消息是,不管选择了哪种语言,Go 和 Python 都在持续演进。尽管在大多数情况下 Golang 可能是更好的选择,但 Python 社区不会坐以待毙。这两种语言都在扩张和增长。这意味着,未来我们将看到更多功能和改进。

原文链接:https://medium.com/softkraft/golang-vs-python-which-one-to-choose-3c052ec324e6

编程语言python怎么读-Python和Go都很火,我要怎么选?相关推荐

  1. 计算机语言python怎么读,python编程怎么读音发音

    python 怎么读 python,英[ˈpaɪθən],美[ˈpaɪθɑːn],英['paɪθən]:发音有点像"派森" 或 "派粉",注意中间那个 θ 音, ...

  2. android 全局菜单键,视听效果都很出色的超值之选 OPPO智能电视K9评测

    视听效果都很出色的超值之选 OPPO智能电视K9评测 2021年05月14日 09:00作者:申沛编辑:申沛文章出处:泡泡网原创 分享 去年11月,OPPO正式发布了旗下首款智能电视S1与R1,这不仅 ...

  3. 编程中python怎么读-python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  4. python是什么意思怎么读-python怎么读(python怎么读中文)

    Python具有简单,易学,免费,开源,可扩展,可嵌入,面向对象等优点.其面向对象的功能甚至比java和c#.net更为完善,并且可以与C++完美集成.两者可以称为"黄金油".我相 ...

  5. python怎么读-Python怎么读?为什么叫Python?

    Python这门编程语言被越来越多的人追捧,大家现在都知道Python是一门应用很广泛的语言,在WEB开发.人工智能.数据分析等领域都得到广泛的应用,不过今天并不是要说Python在这些领域有多重要, ...

  6. python这个怎么读-python怎么读(python怎么读中文)

    Python具有简单,易学,免费,开源,可扩展,可嵌入,面向对象等优点.其面向对象的功能甚至比java和c#.net更为完善,并且可以与C++完美集成.两者可以称为"黄金油".我相 ...

  7. Python怎么读, Python能做什么,可以自学Python吗?

    短时间掌握一门技能是现代社会的需求.生活节奏越来越快,现在不是大鱼吃小鱼,而是快鱼吃慢鱼的时代,人的时间比机器的时间更值钱.Python作为一种轻量级编程语言,语言简洁开发快,没那么多技巧,受到众多追 ...

  8. python在线读-Python电子书免费分享

    Python的教程很多,如果大家不想看网络教程,可以把教程下载到本地.本人最近从网络上找到一些Python教程书籍,整理如下,大家如果需要可以去下载. No.1 简明 Python 教程(byte t ...

  9. 编程中python怎么读-Python编程怎么学习好?老男孩Python入门

    怎么学习Python编程呢?Python是一门计算机编程语言,同时也是一门入行IT行业的首先语言,学习一门新技术最重要的就是去掌握学习方法,对于Python学习来说,对于新手来说相对于是非常简单的,而 ...

  10. 编程python怎么读-python怎么读sql数据?

    python中读取SQL数据的方法: python中可以使用游标cursor来读取SQL中的数据,游标cursor是由连接创建的对象,可以在游标中执行查询,并设置数据返回的格式. 当执行select语 ...

最新文章

  1. HttpURLConnection IllegalStateException
  2. java使用正则表达为数字添加千位符的简单方法
  3. hibernate动态表名映射
  4. linux下安装idle和运行(linux下有两个python版本如何运行其中一个)
  5. 【机器视觉】 HDevelop语言基础(二)-变量和表达式
  6. Qt中QTableWidget用法总结
  7. 首页新增“游戏开发区”链接
  8. 华为P50 Pro外形首曝:新造型,头次见!
  9. 【算法】斐波那契(黄金分割法) 查找算法
  10. 单独组件_iOS组件化/模块化的方案总结
  11. Use // eslint-disable-next-line to ignore the next line.解决办法
  12. 数据分析-回归-案例-波士顿房价数据集
  13. linux可执行文件在window,教你如何在windows下编译linux生成windows的可执行程序
  14. 关于AXD调试的详细探索
  15. vue清除地址栏参数
  16. 【单片机毕业设计】【mcuclub-cl-022】基于单片机的隧道检测的设计
  17. music-dl - 利用Python下载全网最优音质歌曲的工具
  18. AS星尘(stardust)粒子系统 学习 3
  19. BUUWeb刷题记录
  20. GBase 8a 哈希索引介绍

热门文章

  1. 如何用命令行运行python程序_如何使用运行python代码命令行.exe从C应用程序?
  2. Bandit UCB推导
  3. mysql隔离级别与锁,接口并发响应速度的关系(2)
  4. 页面中部分标签简单描述
  5. [Lua]Lua入门教程
  6. SOA(在Tuscany 中开发web service)
  7. cacti支持中文办法
  8. 把C#当作脚本语言来用
  9. PHP开发者最好的学习资源收集
  10. HDU2075 A|B?【水题】