13

Python正在慢慢褪色

 3 years ago
source link: https://www.jiqizhixin.com/articles/2020-11-16-9
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.

fEnMFnN.png!mobile

自从20世纪90年代初发布以来,Python一直相当火爆,在这二十多年里,它的流行程度远远超过了C、C#、Java甚至Javascript。

虽然Python在数据科学和机器学习领域占主导地位,甚至是科学和数学计算领域的主角,但与Julia、Swift和Java等语言相比,它确实有些欠缺。

为什么Python如此受欢迎?

Python迅猛发展背后的一个主要驱动力是它学习起来相当容易,使用起来功能强大。对于初学者来说,像C/C++这样有难度的编程语言,不熟悉语法的人都会敬而远之,所以Python显得非常有吸引力。

语言的核心是代码可读性,Python的语法简洁而富有表现力,开发人员无需编写大量代码,便可以表达想法和概念 (C或Java等底层语言的情况也是如此)。它非常地简单, 并可以与其他编程语言无缝集成 (比如将CPU密集型任务交付予C/C++)。用Python语言开发会给开发人员带来许多好处。

Python应用广泛的另一个原因是它被企业大量使用 (包括FAANG)。今天,对于你能想象到的任何项目,你都可以找到一个相应的Python包----科学计算的有Numpy,机器学习的有Sklearn,计算机视觉的有Caer。

Python的弱点

它很慢,太慢了。

不用多说,速度通常是开发人员最为关注的焦点之一。不仅是现在,将来的很长一段时间都会如此。

Python“缓慢”的主要原因,可以归结为以下两点----首先,Python是解释性的语言,而不是编译型的语言,这终究会导致执行时间的缓慢;其次,它是一种动态的语言 (变量的数据类型在执行期间由Python自动推断)。

初学者经常对“Python的确太慢”的说法产生争议,事实上,的确如此,但也并非完全这样。

例如, Python的机器学习库TensorFlow实际上是用C++编写的,在Python中进行调用而已,是在C++的上层实现的一个Python“封装器”。Numpy是如此,Caer也是类似的形式。

Python有一个GIL(L)

Python缓慢的主要原因之一是GIL(Global Interpreter Lock)的存在--它一次只允许一个线程执行。这虽然有助于提高单线程的性能,但限制了并行性,而开发人员为了提高速度必须实现多线程处理程序。

不是内存密集型任务的最佳选择

当对象超出范围时,Python会自动进行垃圾收集。其目的是消除C和C++在内存管理中涉及的许多复杂性。由于指定的数据类型缺乏灵活性,Python消耗的内存量可能会迅速爆增。

此外,在运行时,一些BUG 可能会被Python忽略,最终成为延缓开发过程的主要诱因。

在移动计算中表现牵强

随着从台式机到智能手机的迁移,显然,人们需要为手机软件构建更强大的语言。虽然Python在计算机和服务器平台上有不错的表现,但由于缺乏强大的移动计算处理能力,在移动开发中它往往会失去优势。

近年来,(Python)在这方面有了很大的进步,但这些新增加的库与他们强大的竞争对手相比,如Kotlin,Swift和Java,还相去甚远。

其他语言的兴起

最近,像Julia、Rust和Swift这些新出现的语言,借用了Python、C/C和Java的许多良好设计概念——Rust确保了运行时的内存安全和并行,并提供了与Web Assembly的一样的互操作性;由于它支持LLVM编译器工具链,Swift几乎和C一样快;Julia提供了用于I/O(输入/输出)密集任务的异步I/O,而且速度惊人。

结论

Python并非最好的编程语言,它无法取代C/C++和Java。它被打造成一种通用的编程语言,强调可读性、以英语为中心的语法。人们利用它可以快速开发程序和应用程序。

和其他语言一样,Python只是一种工具。某些应用场景下,它是最好的工具;在另一种场景下,它或许不是。在大多数情况下,它 “挺好用的”。

那么,作为一种编程语言,Python会消亡吗?

我不这么认为。

它逐渐失去魅力了吗?

啊,也许只是一点点,只是一点点。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK