首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python正在慢慢失去魅力?

自20世纪90年代早期发布以来,有关Python的炒作就没有停止过。编程社区花了至少20年的时间才确认了它的地位,而从那以后,它的流行程度远远超过了C、C#、Java甚至是JavaScript。 尽管Python在数据科学、机器学习以及科学和数学计算(一定程度上)领域占据着主导地位,但与Julia、Swift和Java等新兴语言相比,它也有自己的缺点。

是什么让Python如此流行?

Python飞速发展的主要原因之一是它的易学和强大,这对初学者来说非常有吸引力,甚至对那些因为C/C++等语言的晦涩语法而逃避编程的人来说也是如此。

Python最为强调的是代码可读性。凭借其简洁而富有表现力的语法,开发者无需编写大量的代码就可以表达他们的想法和概念(而C语言或Java就做不到了)。Python可以无缝地与其他编程语言集成(比如将CPU密集型任务交给到C/C++来完成),对于多语言开发者来说,这无疑也是一个额外的优势。

导致Python流行的另一个原因是它被巨头企业(包括美国五大科技巨头)和无数小型企业使用。现如今,你可以为你想做的任何一件事情找到一个Python包——科学计算有Numpy,机器学习有Sklearn,计算机视觉有Caer。

Python的弱点

慢,非常慢

这个是显而易见的。速度通常被认为是开发者最为关注的重点之一,并且可能在不可预见的一段时间内继续如此。

导致Python“慢”主要可以归结为两个原因——Python是解释执行的,而不是编译执行的,所以执行时间变长;它是动态类型的(Python在执行过程中自动推断变量的数据类型)。

实际上,“Python很慢”这一说法在初学者当中很经常听到。是的,这是真的,但也不完全对。

以Python机器学习库TensorFlow为例。这些库实际上是用C++编写的,然后使用Python进行了“包装”。Numpy也是一样的,在某种程度上Caer也是。

全局解释器锁

导致Python慢的另一个原因是GIL(全局解释器锁),它一次只允许一个线程执行。虽然这提高了单线程的性能,但限制了并行性。为了提高速度,开发者必须实现多处理程序,而不是使用多线程。

不适合内存密集型任务

当对象超出作用域时,Python会自动对它们进行垃圾回收。Python致力于消除内存管理的复杂性。因为采用了动态类型,Python消耗的内存可能会迅速暴增。

另外,Python有一些没有被注意到的bug,可能会在运行时突然出现,最终极大降低开发速度。

在移动计算领域的弱势

随着从桌面到智能手机的巨大转变,显然需要更健壮的编程语言来构建移动软件。虽然Python在桌面和服务器领域有相当抢眼的表现,但由于缺乏强大的移动计算处理能力,所以在移动开发领域失去了优势。

近年来,Python在这个领域已经有了很大进步,但这些新增的库与强大的竞争对手(如Kotlin、Swift和Java)还是无法比拟的。

其他编程语言的崛起

近年来,像Julia、Rust和Swift这样的新兴编程语言突然出现在人们的视野中,它们借鉴了大量来自Python、C/C++和Java的优秀设计理念——Rust在很大程度上保证了内存安全和运行时的并发性,并提供了与WebAssembly的互操作性;因为支持LLVM编译器工具链,Swift几乎和C语言一样快,而Julia为I/O密集型任务提供了异步I/O,速度快得惊人。

结论

Python从来就不是最好的编程语言,也从来不是为了取代C/C++和Java。它是一种通用的编程语言,强调的是代码可读性、以英语为中心的语法,从而加快程序和应用程序的开发。

Python和其他编程语言一样,说到底都是一种工具。有时候,它是最好的工具,但有时它不是。大多数情况下,都是“还好”。

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

我不这么认为。

它正在失去魅力吗?

也许有一点,但也只是一点。

原文链接:

https://towardsdatascience.com/python-is-slowly-losing-its-charm-9ca652726492

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/pmAZtbZ4LGyurtBNeloR
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券