python比较两个数的大小(python编程符号大全)
「人生苦短,我用 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 社区不会坐以待毙。这两种语言都在扩张和增长。这意味着,未来我们将看到更多功能和改进。