查看原文
其他

Go对Python产生的冲击

The following article is from 懒编程 Author ayuliao


作者 | yuliao

来源 | 懒编程(ID: hackpython)

Go 的流行让以 Python 为主流语言的开发者(比如我)产生了一定的危机感。上一次有这种危机感还是做 Android 开发的时候,当时用 Java 做 Android 开发,Google 强推 Kotlin 让我有比较强的危机感,加了很多 Android 开发者交流群,大家都说工作难找,后来我就转 Python 了。
就目前观察而言,Python 的流行不会那么快的衰减,很多非开发人员会以 Python 作为首门编程语言来学习,Python 简单上手的特点在这里发挥出巨大的优势,但了解的越深会体会到 Python 在工程方面的乏力,一个很具体的例子就是 Web 方面,虽然最近出现了测试覆盖率 100% 的 FastApi 框架,但整体形势依旧不太乐观。
Python 的异步机制一直让人诟病,听过多位资深 Python 开发者吐槽 Python 在 asyncio 上存在的问题,就我了解而言,很少有公司会在生成环境使用 asyncio,太多迷惑行为以及限制了,目前生产环境要用异步,依旧首选 gevent,多年的东西,更新也不是特别频繁,依旧是现在的首选,从这点也可以看出 Python 在异步方面很不给力。
Python 还有很多缺陷,这里不再多费笔墨,但一个事实是,「每个编程语言深入后,都可以提出很多缺陷」,但比较让人悲观的是 Python 社区的运作方式,其松散的运作方式让很多重要却具有较大难度的功能难以被推进与实现。当然,我个人能力有限,在社区也无丝毫贡献,所以也无话可说。
虽然吐槽了 Python,但 Python 还是一门值得学习的编程语言,特别是作为非技术人员的首门语言。
回到本文的主题。
  • 为什么 Go 对 Python 产生了冲击?
  • 为什么很多公司开始从 Python 转 Go?
  • 为什么 Java 对 Python 造成不了这么大的威胁?
先回答第三个问题,虽然 Java 比 Python 快上不少,但在「多技术联动的时代,这种差距的影响在缩小」,而 Python 在开发效率上比 Java 高出不少,让更多人倾向于选择 Python。
假设 Java 比 Python 快 10 倍,执行相同逻辑 Java 需要 1ms,而 Python 需要 10ms,差距似乎很大啊,但一个项目通常不会只使用编程语言完成逻辑操作,比如数据库使用 MySQL,数据库操作可能要花费 60ms,那么相同的逻辑,Java 项目需要 61ms,而 Python 项目需要 70ms,此时相差 9ms,注意这 9ms 的速度落差对于整体项目时间的比重并不大,可以说编程语言速度上的差距会因为一个项目中使用多种不同的工具而降低影响。
另一个原因是,选择 Java 通常是开发大型 Web 项目,此时会从架构、易维护、易读等不同角度考虑,这并不是 Python web 开发的主战场,中小型 Web 项目才是。
综上所述,Java 对 Python 的冲击并不大。
为何 Go 会产生这么大的冲击呢?
Go 的运行速度确实比 Python 快很多,但核心原因却是 Go 语言上手难度低、开发效率高,使用 Go 开发一个 Web 系统是很快的,语言层面支持异步,让初学者不必了解太多技巧,循规蹈矩的开发就可以获得一个性能不错的 Web 系统。
在早几年,Go 的周边工具链还不完善,所以影响没那么大,但经过今年发展,Go 已经全方位跟上了 Python 的步伐,从这点也可以看出,一个开源项目的背后有个商业公司的益处,对项目会有较强的推动性。
在 Web 领域,Python 在 Go 面前几乎没啥优势...
为什么很多公司要从 Python 转 Go?
Go 的众多优势是一个明显的原因。
此外很多公司的项目因为历史原因,还是使用 Python2.7 开发的,2020 年,Python 官方宣布停止对 Python2.7 的支持,让很多公司不得不考虑升级成 Python3,尴尬的是,Python3 并没有向后兼容 Python2,所以升级会存在风险,此时 Go 风头正盛,简单易用性能好的特性越发深入人心,这就产生了「升级 Python3 还不如使用 Go 重写的想法」。
注意,上述讨论都是针对于 Web 领域,而 Python 在数据分析与机器学习等领域依旧是一流语言,但遗憾的是,这几个领域并不太依赖于 Python 多样化的语法糖,而更侧重该领域特有的一些知识,如数学、统计学等等。
至此,结论已经很明显了,如果你想找 Web 方面的工作岗位,我建议你学习 Go。
【end】



精彩推荐


2020 AI 开发者万人大会将于6月26日通过线上直播形式,让开发者们一站式学习了解当下 AI 的前沿技术研究、核心技术与应用以及企业案例的实践经验,同时还可以在线参加精彩多样的开发者沙龙与编程项目。参与前瞻系列活动、在线直播互动,不仅可以与上万名开发者们一起交流,还有机会赢取直播专属好礼,与技术大咖连麦。


今日福利评论区留言入选,都可获得价值299元的「2020 AI开发者万人大会」在线直播门票一张。快来动动手指,写下你想说的话吧~你也可以点击阅读原文,查看活动详情。

推荐阅读


    你点的每个“在看”,我都认真当成了AI

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存