作者 | Pawel Dziubałka, Sebastian Karasiewicz

译者 | 泓技

责编 | 夕颜

出品 | AI科技大本营(ID:rgznai100)

互联网上有非常多的精彩代码,它们成了构建各种基础设施的基础。你正在阅读的这个平台同样也在致力于创建出色的代码。尽管普通用户一般不会注意到这一点,但另一方面,优秀的开发人员始终在寻求使他们的应用程序(以及他们的代码)有更好的方法。

编写出色代码的基础取决于开发人员的技能及其选择的语言。这不可避免地导致开发人员之间的冲突,而冲突不仅关乎技能水平,而且主要关乎他们偏爱的语言(甚至有可能发生史诗般冲突)。当你将两种出色的编程语言(例如Golang(Go)和Python)放在一起时,最有可能出现这种情况。

现在让我们退后一步,消除个人偏见和偏好,单纯地从优点和功能的角度评估这两种语言,熟练地平整好比赛场地。现在,我们剩下的只有两个不错的选择:Go vs Python。现在的问题变成,哪个编程语言更适合你?

Python的故事

如果去询问一些开发人员,你会听到Python诞生之前的都不值一提,而Python之后的也都不值一提之类的话。多年来,由于它是一种非常好的编程语言,已成功赢得了庞大关注。互联网上充满了使用Python创建的酷炫应用。

就编程年限而言,Python算是元老。它于1991年首次被概念化。随着年龄的增长,逐渐具备了一定的优势。它拥有广泛的支持者,这意味着它是稳定的,并且文档丰富。在大多数情况下,你会找到几乎所有内容的库以及几乎所有可以想到的任何代码示例。对于开发人员和企业而言,这意味着使用Python的选择会带来丰富的经验和编码。

有很多使用Python作为基础的开源项目,因此在大多数情况下,你不是从头开始的。它很好地集成到企业应用程序中,并且可以在机器语言和AI应用程序中使用。但是它确实有缺点,一方面,它对于内存密集型任务不是理想的选择,对于执行而言有点慢,另一方面,它不适合移动应用程序开发。

说到Golang(Go)

Google于2009年开发了Go语言。Go的初衷是解决实际问题。它的目标是创建一种语言,以消除C++等语言中发现的所有负担和多余的东西,这给它带来了性能和速度上的提升。另外,大多数第一次接触Go的开发人员不会体会到语法的高门槛,因为Go里面熟悉的元素和易用性会令人惊喜。

这并不是说该语言在所有情况下都是完美的。尽管将速度和优雅提升到了一个新的高度,但它确实留下了一些需要改进的地方。首先,它没有扩展库,也不支持继承。此外,没有GUI库或面向对象的编程支持。它要做的就是创建一个轻量级线程(Goroutines),智能标准库,强大的内置安全性,并且易于使用最少的语法进行编码。

性能测试

我们可以无休止地谈论Golang或Python的优缺点,但是当我们考虑部署使用时,我们都期待它们能有卓越性能。因此,我们在Intel®Core™i7–9700KCPU @ 3.60GHz × 8核的测试设备上进行了一些测试。测试代码可以从这里获得https://github.com/sekarasiewicz/go-python-benchmark。

1.二分搜索

我们创建了一个整数列表(从1到100000),然后使用二分搜索查找始终相同的数字729。结果是:

2.冒泡排序

再次,我们生成了一个整数列表(这次是随机的,共10000个元素),并使用冒泡排序算法对其进行了排序。

3.文件读取

读取“ lorem ipsum”文本文件的简单测试。

4. HTTP请求处理

编写HTTP服务器确实很容易,但是我们为在Python中进行有效的模拟付出了很多努力。我们检查了一个简单的“hello world!” 信息需要多长时间响应。

选Golang还是Python?

尽管Python一直是社区中的最爱,在2019年第一季度就成为GitHub上最快的编程语言排行榜上(按拉取请求数计算+17%)的第二名,但Golang并没有落后很多,位于紧随其后的第四位(+ 8%)。Golang与Python之间的选择变得更加模糊。无论如何,在选择哪一项适合你时都需要考虑一些事项。

1.可扩展性:Golang在创建时就考虑了可扩展性。它具有内置的并发性,可以同时处理多个任务。Python同样可以使用并发,但不是内置的。它通过线程实现并行性。这意味着,如果你要处理大型数据集,那么Golang似乎是一个更合适的选择。

2. 性能:众所周知,Python不是内存或CPU友好型的编程语言,但由于它拥有大量的库,Python可以有效执行基本的开发任务。Golang具有内置功能,它更适合于微服务软件体系结构。

3. 应用程序:Python非常适合编写用于人工智能、数据分析、深度学习和Web开发的代码。Golang已普遍用于系统编程,并且受到云计算和集群计算应用程序的开发人员的喜爱。

4. 社区和库:如前所述,Python的时代赋予了它一定的优势。其中之一是它拥有的库数量以及支持它的大型社区。另一方面,Golang虽然没有Python提供的大量库和社区支持,但仍是一种增长中的语言。我们不应该将Golang踢出局。它的增长和采用率令人难以置信,并且每天都在增长。

5. 执行性能:如果只关注速度,那么Golang肯定会赢。

考虑所有这些因素后,你的用例将成为采用哪种语言的决定因素。在你要建立开发团队来创建微服务的情况下,Golang将是更合理的选择,因为它既快速,易于编码,又可以很好地扩展。另一方面,Python更适合于AI、ML和数据分析。

因此,一对一地比较,在大多数情况下,Go会脱颖而出,被认为是使用Python的有效替代方案。开发人员需要选择一种编程语言,要考虑其开发项目的性质和规模以及所涉及人员的技能。

好消息是,无论选择哪种语言,两种语言都在不断发展。尽管在大多数情况下,Golang似乎是一个显而易见的选择,但Python社区不会闲坐而不采取任何行动。两种语言都在扩展和增长。这意味着将来我们将看到更多的功能和改进。

原文链接:

https://www.softkraft.co/golang-vs-python/

本文为 CSDN 翻译,转载请注明来源出处。

【End】

推荐阅读 

☞百度移动平台关闭安卓渠道;苹果将推 iPhone SE 2 代;微软开源 Scalar | 极客头条

☞ 机器学习霸占高薪榜、区块链偃旗息鼓?2020 年软件工程师状况解读!

☞编程语言性能实测,Go比Python更胜一筹?

☞Python 爬取李子柒辣椒酱 1794 条数据,有人嫌牛肉粒太小...... | 原力计划

☞大神如何一招完美解决Hadoop集群无法正常关闭的问题!| 博文精选

☞比特币技术栈的演进

你点的每一个在看,我认真当成了喜欢

猛戳“阅读原文”,填写中国远程办公-调查问卷

编程语言性能实测,Go 比 Python 更胜一筹?相关推荐

  1. 编程语言性能实测,Go比Python更胜一筹?

    作者 | Pawel Dziubałka, Sebastian Karasiewicz 译者 | 泓技 出品 | AI科技大本营(ID:rgznai100) 互联网上有非常多的精彩代码,它们成了构建各 ...

  2. 卓越性能代码_编程语言性能实测,Go比Python更胜一筹?

    作者 | Pawel Dziubałka, Sebastian Karasiewicz 译者 | 泓技 出品 | AI科技大本营(ID:rgznai100) 互联网上有非常多的精彩代码,它们成了构建各 ...

  3. 系统级编程语言性能大PK的笑话-Go语言

    2019独角兽企业重金招聘Python工程师标准>>> 喜欢和不喜欢Go语言的都喜欢拿性能PK说事. 流传比较广的是benchmarksgame的PK数据: http://bench ...

  4. 第七十四期:从bug看11种编程语言演化史,果然如今Python比较流行

    在本文中,作者选择了 11 种非常流行的编程语言(通过 Stack Overflow 标签出现的频率衡量),希望可以找出这些问题的共性及差异性. 作者:机器之心编译来源:机器之心 自 2008 年创办 ...

  5. python vb 哪个好学_最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...

    原标题:最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几 在很多人眼里程序员的标配就是黑框眼镜+格子衫+双肩包+牛仔裤+运动鞋,拥有了这些可能就被判定为一个程序员. 而如何判定一个程 ...

  6. Hacker News 7 月编程语言招聘趋势榜:Python 稳居第一,Go 成功击败 Java

    Hacker News 近日发布了2018年7月编程语言招聘趋势TOP10,Python 依然稳居冠军宝座,Go 语言逆袭进入前三. Python JavaScript Go Ruby Java C+ ...

  7. 套壳python_“完全自主设计、开发和实现”的编程语言,被指是Python的套壳产品?...

    最近,关于"完全自主设计.开发和实现"的编程语言,被指是Python语言的套壳产品闹得沸沸扬扬.针对这一网络质疑,在本月的17日,有关项目的负责人表示,中科院的实验员工刘雷,曾经在 ...

  8. vb还是python强大-最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...

    原标题:最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几 在很多人眼里程序员的标配就是黑框眼镜+格子衫+双肩包+牛仔裤+运动鞋,拥有了这些可能就被判定为一个程序员. 而如何判定一个程 ...

  9. cubic与bbr性能实测

    自1988年第一代TCP算法Tahoe诞生依赖,相继出现了reno.new reno.sacks.cubic.bbr等多种拥塞控制算法,在较常见的有reno.cubic以及linux 4.9以上内核搭 ...

最新文章

  1. 介绍下Nginx 反向代理与负载均衡
  2. mysql一主两从_MySQL 网络延迟参数设置建议
  3. linux常用工具命令
  4. 方立勋_30天掌握JavaWeb_jdbc实现客户关系管理(未完)
  5. vue---day03
  6. Linux 编译 libc log,在Android的源码中添加LOG
  7. 程序员应如何理解高并发中的协程
  8. 恭喜你!在25岁前看到了这篇最最靠谱的深度学习入门指南
  9. 百万奖池大赛 | 交通事件、医学病理、违法广告检测等,2020首届江苏大数据开发与应用大赛启动...
  10. 体验VMware View HTML Access
  11. for循环与求值 学习笔记
  12. 数据挖掘:模型选择——集成算法与树模型
  13. MFC 视频播放器实现局部放大功能
  14. 镄囩 php编码,GBK 编码
  15. Julia:如何用 Plots 画多个子图
  16. 一加6手机图片中的文字如何识别?
  17. 中兴网络设备交换机路由器查看MC-LAG状态检查命令方法
  18. 活动星投票奋斗青春,使命必达网络评选微信的投票方式线上免费投票
  19. onedrive的多电脑同步妙用
  20. 输入一个数求他的因数c语言,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...

热门文章

  1. eclips常用快捷键
  2. Android学习二:Http操作
  3. Struts2错误之:Could not find action or result
  4. [论文阅读] Annotation-Efficient Cell Counting
  5. 递归算法经典实例_【经典算法】利用递归方法求5!
  6. 解决ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接
  7. pandas项目中使用的一些代码总结
  8. opencv python3树莓派_树莓派4B日志七:Python3上的OpenCV安装
  9. 【QT】QT从零入门教程(七):图像适应窗口
  10. Docker集群的创建与管理