2

2021 年 Python 的好与坏

 2 years ago
source link: https://www.techug.com/post/good-and-bad-of-python-in-2021.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client


img1636629609373186838.jpeg

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 库,以及分发代码供其他人使用。

查看英文原文:Python in 2021: The Good, The Bad, and the Ugly

本文文字及图片出自 InfoQ


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK