Python和Go都很火,我要怎么选?
「人生苦短,我用 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。测试结果如下:
如何选择?
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 社区不会坐以待毙。这两种语言都在扩张和增长。这意味着,未来我们将看到更多功能和改进。
【本文是51CTO专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
5nm制程即将上线,会是iPhone 12杀手锏吗?
2月底的MWC因为疫情已经宣布取消,但科技行业里的发布会不会减少。2月18号,高通在举办了一场线上沟通会,带来了最新一代的5G芯片——骁龙X60。相比骁龙X55,它的峰值速率提升其实并不明显,但有几个突出的亮点:制程工艺提升到了5nm,是全球首款发布的5nm芯片;配套天线组的体积缩小,整体可以做得更小。 最近这几年一路过来,我们可以清晰地发现芯片制造工艺的突飞猛进。2016年,手机旗舰芯片的工艺制程还是14nm,现在已经一步步提升到7nm。2020年,将会有采用5nm芯片的产品批量上市。 台积电三星奋战5nm 目前,芯片制造领域的晶圆代工厂,实力强劲的已经不多。在掌握最先进的工艺制程上,台积电和三星是最有资格的选手。 台积电:上半年量产 根据台积电公布的信息,今年上半年就能量产5nm EUV工艺,并且下半年产能将提升到每个月7-8万片晶圆。 台积电去年年底发布的论文数据显示,台积电7nm工艺每平方毫米可生产大约9627万个晶体管,而5nm晶体管密度是它的1.83倍,也就是说每平方毫米生产的晶体管能达到1.77亿个。 此外,相比7nm,台积电5nm EUV能效提升15%,功耗减少30%,...
- 下一篇
【云栖号案例 | 互联网】短视频业务上云 丰富更多短视频功能
云栖号案例库:【点击查看更多上云案例】不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 公司介绍 我们公司是一家网络科技公司,以娱乐类短视频为主要业务,计划新上短视频业务。需要支持美颜、贴纸、字幕等高级功能,支持移动端上传视频,并搭建服务端平台。 客户痛点 我们公司没有开发短视频业务经验,希望能够实现类似抖音的短视频服务。但是项目周期和研发能力都不容许开发自己的短视频客户端。 自建视频服务端成本高,带宽能够承载的并发用户有限。无法满足未来业务发展的需求,且无力建设我们公司自己的CDN网络。 视频管理系统开发复杂,管理成本高。 解决方案 解决方案架构图 阿里云推荐我们采用阿里云视频点播服务,视频点播服务是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速、视频播放于一体的一站式音视频点播解决方案。支持媒资管理,媒体处理(转码,水印,截图等),剪辑,分发加速,播放器等功能。 分布式架构的媒体中心,国内节点数量最多的CDN厂商。通过遍布全球1500+CDN节点提供快速的视频内容分发网络。保障视频播放质量。 支持现存绝大多数视频格式的转码,支持...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2全家桶,快速入门学习开发网站教程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Linux系统CentOS6、CentOS7手动修改IP地址