2021 年 Python 的好与坏

2021 年 11 月 16 日 InfoQ

作者 | Shantnu Tiwari 
译者 | 平川
策划 | Tina  
Python 在许多领域都是首选语言,包括编程入门、机器学习、数据科学以及数据工程等。在这篇文章中,我想聊下 Python 最大的优势和不足,以不足为主,因为这些问题已经存在了许多年,而且其中有些导致了很多问题。这篇文章对 Python 的评价看起来非常负面。但我仍然喜欢并每天使用 Python,并希望它能有所改进并不断变好。

本文最初发布于 Shantnu Tiwari 的个人博客,经原作者授权由 InfoQ 中文站翻译并分享。  

前    言

在这篇文章中,我想聊下 Python 最大的优势和不足,以不足为主,因为这些问题已经存在了许多年,而且其中有些导致了很多问题。

Python 闪光之处

现在,Python 在许多领域都是首选语言——编程入门、机器学习、数据科学以及数据工程(包括清理数据、提取数据并存储为一个容易阅读的格式,等等)。

在有些领域,Python 并不是 Number One,但它是一个强有力的竞争者。Web 应用开发,尤其是后端部分。测试和自动化,也主要是后端,还有服务器应用程序。我之前就职的一家初创公司使用 Powershell 和 C 做自动化测试,这引发了很大的分歧,直到我介入,宣布我们将使用 Python。

如果你要在 Linux 服务器上做什么事情,如果脚本行数超过几百行,那么大多数人的选择会是 Python 而不是 Bash。在企业里,任何 bash 脚本超过 20 行,评审人员就会抱怨;我不是在指责他们。

X 是一个很棒的库,但如果它不支持 Python,我连试也不会试。像这样的评论,我见过许多次了。不支持 Python 的应用可是在自找麻烦。

因此,如果你 2021 年要学习编程,或者是学习一项新技能,那么 Python 是一个不错的选项。

Python 糟糕之处
1)Python 很难安装,经常需要碰运气

每次我这样说的时候都会遭到反驳。我之前在一个私人小组中分享了这篇文章之前的一个版本,最多的一种评论是:我从来没有遇到过这个问题,你确定这不是你自己的想象?

Reddit/HN 上的有些人更粗鲁:你甚至不会安装 Python 或某个版本,你一定是个傻瓜。有一个人告诉我,非常非常严肃:你只要学会使用 virtualenv,你所有的问题就都不存在了。好吧,谢谢,好像我没那样想过是的。

有那么一会儿,我真以为也许是我傻。毕竟,不会所有那些聪明人都错了,对吧?不对!

只要花几分钟搜索一下就会发现,其他许多人也遇到了同样的问题:

那么,为什么会存在这个问题?

我发现,如果你使用的是非常标准的 Web 开发库,如 Flask/Django,它们主要是纯 Python 代码,那么什么问题也没有。这就是为什么人们会说,而且是非常严肃地说,Python 很容易安装。

这个问题会在以下 3 个情况下出现:

  1. 数据科学、视频 / 图像处理、游戏或其他有大量 C/C++ 代码的库

  2. 试图将 Python 代码给非开发人员甚或是非 Python 开发人员

  3. 像我一样喜欢尝试许多新库,只是为了学习新东西

就在两周前,我升级了一个库(我需要使用一个比较新的特性;另见下文的向后兼容性),原本可以正常运行的代码就不正常了。

我正在试用一个新的游戏库——但就是安装不到 Windows 上,在 Linux 上却没问题。在 Python 的世界里,Windows 仍然是一个二等公民。

更糟糕的是,我在使用 pip install 和 conda install 时遇到了不同的错误。Python 版本不同,错误也不同——我说的是小版本,如 3.7 vs 3.8。

我都不记得自己被迫放弃了多少优秀的库 / 项目,只因为安装不上。

如果你想与 Python 新手分享自己的代码,那简直是噩梦。当我在写书时,我发现,与其帮助人们安装 Python,还不如提供一个什么都装好了的 5GB 的虚拟机,那样更简单(许多其他的作者也是这样做的,我的虚拟机文件夹一度有 60 到 80GB,全都是针对 Python 的)。

Python 开发者嘲笑 JavaScript 和 NodeJs 平台让人凌乱,但 Python 与 Node 相比有过之而无不及。

2)只有一种方法和有 200 种方法

Python 之禅中有这样一句话,我不知道为什么人们不再说:

   尽量找一种最好是唯一一种明显的解决方案。  

2021 年:

  • 你想创建独立的环境?很好!你可以使用 virtualenv、virtualenv wrapper、pipenv、poetry、conda。有点关系,但应用场景稍有不同:pyenv 和 pipx。

  • 安装 Python 或库?你可以使用 pip install、apt install、brew install,它们会变着法把你的系统搞乱。

  • 随时会有库进来搞乱你的系统。

现在,Python 精英人士会居高临下地说:嘿,伙计,你应该使用 *#@% 等来简化自己的工作。

但初学者一个都不知道(说真的,难道他们真要为了测个脚本去学习那些东西吗?)。

有 10 多年开发经验的程序员(不过是 Python 新手)也会为此纠结不已。

3)今天写好的代码明天就被破坏了——向后兼容性就是个笑话

曾经有一名 Java 程序员攻击我说(好吧,他是在抱怨,但他向我这边看,所以我就认为他是针对我):

我用 Java 7 写的这些代码(当时已经有 9 年了),到现在还能正常运行。而用 Python,上周的代码今天就不能用了。  

我都准备好和他决斗了。但我突然就停住了,这家伙说得很有道理。

这个问题主要存在于库中,但这种快速变化且有破坏性的东西令人非常恼火。我看不出来这些库有什么理由重写 / 重构。

是的,我明白。有时候,你不得不重构代码。代码是由不取得报酬的志愿者维护的,诸如此类。但我希望社区能更严肃地对待向后兼容性。所有 "成熟 "的语言都是如此。

小    结

我知道,这篇文章对 Python 的评价看起来非常负面。但我仍然喜欢并每天使用 Python,并希望它能有所改进并不断变好。以至于只要有 Rust 程序员想开口,就会有十几个 Python 程序员跳出来说,其实你应该用 Python 重写。

简而言之:

  • 用 Python 找工作很不错;

  • 用 Python 编程也很有趣,而且效率极高;

  • 问题是安装 Python 库,以及分发代码供其他人使用。

查看英文原文:

https://new.pythonforengineers.com/blog/python-in-2021-the-good-the-bad-and-the-ugly/

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

独家对话英特尔CTO Greg:让创新成为主流,英特尔将始终拥抱开发者

六年目睹企业间内卷怪现状:爬虫与反爬之战

腾讯员工入职满15年可提前退休;双11天猫总交易额5403亿元,京东超3491亿元;中芯国际重大人事震荡 | Q资讯

从软件历史看架构的未来:编程不再是精英们的游戏

点个在看少个 bug 👇

登录查看更多
2

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【2022新书】Python手册,275页pdf
专知会员服务
176+阅读 · 2022年3月18日
专知会员服务
26+阅读 · 2021年6月2日
【干货书】Python 数据科学学习手册,548页pdf
专知会员服务
84+阅读 · 2021年3月14日
专知会员服务
141+阅读 · 2020年12月28日
【2020新书】高级Python编程,620页pdf
专知会员服务
231+阅读 · 2020年7月31日
Python导论,476页pdf,现代Python计算
专知会员服务
250+阅读 · 2020年5月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
171+阅读 · 2020年1月1日
数据科学家一定要收藏的十个最佳Python库
AI前线
1+阅读 · 2022年3月8日
python都没玩利索的,就别找算法岗了
夕小瑶的卖萌屋
0+阅读 · 2022年3月8日
Python的十大特性
AI前线
0+阅读 · 2021年12月24日
Python 的十大特性
InfoQ
0+阅读 · 2021年12月21日
Python 热图进阶
专知
15+阅读 · 2019年5月4日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
Python 书单:从入门到……
Linux中国
38+阅读 · 2017年8月6日
国家自然科学基金
10+阅读 · 2016年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
3+阅读 · 2009年12月31日
Arxiv
0+阅读 · 2022年4月17日
Arxiv
14+阅读 · 2018年5月15日
VIP会员
相关VIP内容
【2022新书】Python手册,275页pdf
专知会员服务
176+阅读 · 2022年3月18日
专知会员服务
26+阅读 · 2021年6月2日
【干货书】Python 数据科学学习手册,548页pdf
专知会员服务
84+阅读 · 2021年3月14日
专知会员服务
141+阅读 · 2020年12月28日
【2020新书】高级Python编程,620页pdf
专知会员服务
231+阅读 · 2020年7月31日
Python导论,476页pdf,现代Python计算
专知会员服务
250+阅读 · 2020年5月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
171+阅读 · 2020年1月1日
相关资讯
数据科学家一定要收藏的十个最佳Python库
AI前线
1+阅读 · 2022年3月8日
python都没玩利索的,就别找算法岗了
夕小瑶的卖萌屋
0+阅读 · 2022年3月8日
Python的十大特性
AI前线
0+阅读 · 2021年12月24日
Python 的十大特性
InfoQ
0+阅读 · 2021年12月21日
Python 热图进阶
专知
15+阅读 · 2019年5月4日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
Python 书单:从入门到……
Linux中国
38+阅读 · 2017年8月6日
相关基金
国家自然科学基金
10+阅读 · 2016年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
3+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员