作者 | 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:CSDN重磅共建人工智能技术新生态对标Pytorch,清华团队推出自研AI框架“计图”医疗保健、零售、金融、制造业……一文带你看懂大数据对工业领域的影响!如何开发日均吸引100万活跃用户的DApp?先收藏再看!Kubernetes这么火你还不知道是啥?赶紧来看看吧~微信iOS版正式支持深色模式;谷歌宣布彻底取消I/O开发者大会;Visual Studio 2019 16.5发布
你点的每个“在看”,我都认真当成了AI

Go对Python产生的冲击相关推荐

  1. Python 2退出历史舞台 一句话证明它的重要性

    北京时间 2020 年 4 月 20 日 23 点 06 分,Python 2 维护者兼发布经理本杰明·彼得森在邮件组中正式声明,Python 2.7.18 正式发布,并且这将是 Python 2 的 ...

  2. 编程语言使用率的统计与简单分析

    这里有一个统计: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 2011年的前几名依次是:Java, C, C++, ...

  3. 不愿做「奴隶」的程序员们组建了一个王国

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 有一天,程序员们受够了这个世界 他们不但每天要加班 遭受产品经理的压迫 还要时刻提防被拉去「 ...

  4. 小白学编程千万别踩这 4 个坑!| 原力计划

    作者 | 三钻 责编 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 编程确实不是一件容易的事情,除了要有较强的逻辑思维,还需要花大量的时间和集中力来提升或者维持一定的高度. 与其他的领域不 ...

  5. 假如全世界所有程序员组成一个王国!

    有一天程序员们受够了这个世界 他们不但每天要加班 遭受产品经理的压迫 还要时刻提防被拉去「祭天」 遂决定联合起义 - 这一天所有的程序员都受收到了一封邮件 "你还在日夜加班吗?" ...

  6. 假如有一天,程序猿受够了所有压迫……

    有一天程序猿们受够了这个世界 他们不但每天要加班 还会遭受产品经理的压迫 还要时刻提防被拉去「祭天」 遂决定联合起义 - 这一天所有的程序猿都受收到了一封邮件 "你还在日夜加班吗?" ...

  7. 程序员受够了所有压迫之后……

    有一天程序员们受够了这个世界 他们不但每天要加班 遭受产品经理的压迫 还要时刻提防被拉去「祭天」 遂决定联合起义 - 这一天所有的程序员都受收到了一封邮件 "你还在日夜加班吗?" ...

  8. 不愿做「奴隶」的程序员们组建了一个帝国

    点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 有一天,程序员们受够了这个世界 他们不但每天要加班 遭受产品经理的压迫 还要时刻提防被拉去 ...

  9. 假如有一天,程序员受够了所有压迫……

    有一天程序员们受够了这个世界 他们不但每天要加班 遭受产品经理的压迫 还要时刻提防被拉去「祭天」 遂决定联合起义 - 这一天所有的程序员都受收到了一封邮件 "你还在日夜加班吗?" ...

最新文章

  1. 强制解除占用端口,最快速方便的解除占用端口,端口占用解决方案大全
  2. jvm性能调优实战 - 30使用jmap和jhat摸清线上系统的对象分布
  3. 元宵节电商促销活动首页PSD分层模板
  4. LayaAir引擎开发HTML5最简单教程(面向JS开发者)
  5. 修改使用phpstorm创建的模板的默认注释
  6. jdbc代码_Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记
  7. 拓端tecdat|用TensorFlow实现MNIST
  8. 基于Silverlight4开发的相关工具
  9. 广东省考计算机类的比例,广东公务员考试22.4万人参加 竞争比例为19:1
  10. 如何给宝宝取一个高雅有内涵的名字
  11. 三国时期蜀国的巅峰实力
  12. 大学该不该开python教学_孩子该不该学编程?
  13. 这可能是实现高斯模糊(毛玻璃)最简单的库了
  14. span内一连串英文字符不会自动换行
  15. 浙江省计算机二级题库excel,浙江省计算机二级excel题目
  16. 《仙剑奇侠传3D回合》性能精讲
  17. 一些十分有用的字符串相关的函数,在写串口解析,TCP HTTP通信时有用
  18. win32 注册表操作API
  19. nhmicro添加合同模板管理功能
  20. 毕业答辩PPT模板如何制作?

热门文章

  1. I.MX6 bq27441 driver hacking
  2. ARP(Accounting Resource Planning)项目感想
  3. PagedGeometry 笔记03
  4. SQLDMO- (数据备份与恢复篇)
  5. 使用NATAPP.cn测试微信支付回调接口
  6. c++ 负数比较大小_负数的定义(二)
  7. c语言坐标正反算代码,C语言代码逆向的实战十篇(原创)
  8. Python中从cmd获得.py文件的参数
  9. 各系统QT安装ROS后不显示src问题
  10. Oracle 高效分页