近日,关于一篇关于Python的讨论又重出江湖。
哦,不是这个。
这篇「为什么Python不是未来的编程语言」的文章又出现在了互联网上。作者Rhea Moutafis称,如今推动Python流行的优点,也正是之后将它击倒的弱点。
其实早在2020年,该作者就在Medium上发表了同一篇文章。但不知道是当初发表日期为4月1日的缘故,还是TA真的不喜欢Python,时隔1年零2个月又18天,作者又决定在另一个平台上重新发一遍。
我们这就来看看这位Rhea为什么觉得人民群众都喜欢的Python要日薄西山了。
速度很慢,真的很慢
作者表示,使用Python完成一项任务所需的时间是使用任何其他语言的2到10倍。
原因一:动态类型的应用。
Python不需要像在其他语言中那样指定数据类型,因此这会需要使用大量的内存,因为程序需要为每个变量保留足够的空间,那么大量的内存使用就会转化为大量的计算时间。
原因二:一次只能执行一个任务。
Python需要确保每个变量只有一种数据类型,如果使用并行进程就可能会让这个机制出现问题。相比之下,普通的浏览器可以同时运行十几个不同的线程。
作用域
Python使用动态作用域,也就是说编译器想要对表达式进行评估时,首先会搜索当前代码块,然后依次搜索所有调用函数。
动态作用域的问题在于每个表达式都需要在每个可能的上下文中进行测试。这就是大多数现代编程语言使用静态作用域的原因。
空格缩进
Python可以使用空格来表示不同级别的代码。这让代码在视觉效果上更加友好,同时也更易于理解。
然而其他的编程语言,如 C++,就会更多地依赖大括号和分号。虽然对初学者相对不那么友好,但是这样可以增加代码的可维护性,尤其是对于那些大型项目来说。
移动开发
使用Python开发的移动应用程序很少,显然,Python并不是为移动开发而设计的。虽然也不是不能完成,至少有一个名为Kivy的Python包可以使用。
但是,即便Python可以完成基本的任务,最好的办法仍然是使用一种为移动应用程序开发而创建的语言。
作者声称,由于移动端的流量早已超过桌面端,可以肯定地说,学习Python并不足以成为一个经验丰富的全能开发者(a seasoned all-round developer)。
错误和异常
Python脚本在每次执行时都要进行编译,不仅耗费时间而且需要进行大量测试。
这可能对初学者来说有一定的帮助,但是对于经验丰富的开发人员来说,在Python中调试一个复杂的程序反而会让他们出差错。
Python的替代品
作者认为,Rust,GO和Julia都是潜在的替代Python的编程语言。
Rust可以提供与Python相同的安全性,而且它通过所有权和借用的机制解决了性能问题。
Go与Python一样非常适合初学者。而且它非常简单,代码维护起来更容易。同时,Go语言的开发者是收入最高的程序员之一。
Julia虽然是一种非常新的语言,但也可以与Python进行正面较量。尤其是在大型技术计算中,开发者只靠Julia就可以完成,不再需要同时使用Python、Matlab甚至还需要C++作为补充。
作者认为,虽然这三种语言的份额还很小,在人工智能等技术方面也还没有得到很广泛的应用,但是在趋势上是一直在增加的。
不过考虑到 Python 架构中的基本性能问题,这三种语言一定有机会取代Python。
大势所趋?
说到这个趋势,我们再来看看作者在文章开头是怎么介绍Python的。
作者表示,Python的成功体现在Stack Overflow中该语言在问题标签数量的趋势上。
而且,从Stack Overflow的规模上来看,这是判断一个语言流行程度的很好的指标。
从现在最新的数据上来看,有超过16%的问题都打上了「Python」的标签。
显然,在作者看来,处在上升中且占比达到16%的Python,不如占比加起来都不到1%的Go、Rust和Julia。
诚然,这三个都是很好的编程语言。
对此,你怎么看?