当前位置: 首页 > 科技观察

Python曾经是程序员的“瑞士军刀”,现在正在慢慢被取代

时间:2023-03-14 14:36:01 科技观察

近30年来,不乏对它的“炒作”。诚然,编程世界至少花了20年时间才认识到它,但从那时起,它的流行程度已远远超过C、C#、Java,甚至Javascript。虽然Python目前主导着数据科学和机器学习,并且在某种程度上主导着科学和数学计算,但与Julia、Swift和Java等较新的语言相比,它确实有其劣势。是什么让Python如此受欢迎?Python快速增长的主要原因是它简单易学且功能强大。这使得它对初学者非常有吸引力,包括那些因为C和C++等语言的难懂和不熟悉的语法而望而却步的人。从根本上说,该语言广泛强调代码的可读性。凭借其简洁而富有表现力的语法,它允许开发人员表达想法和概念而无需编写大量代码(例如使用C或Java等低级语言)。Python非常简单,可以与其他编程语言无缝集成(例如将CPU密集型任务卸载到C/C++),这对多语言开发人员来说是一个加分项。Python广泛使用的另一个原因是它被大型企业(包括FAANG)以及无数小型企业大量使用。如今,几乎任何可以想象的东西都包含在Python包中——用于科学计算的Numpy、用于机器学习的Sklearn和用于计算机视觉的Caer。Python也有缺点,就是运行起来很慢,很明显很慢,在未来很长一段时间内,速度将是开发者主要关注的问题之一。Python实际上“慢”有两个原因——Python被解释而不是编译,最终执行起来更慢;并且它是动态类型的(Python在执行期间自动推断变量的数据类型)。事实上,“Python很慢”这句话对初学者的影响很大。这是事实,但只是部分事实。以Python中可用的机器学习库TensorFlow为例。这些库实际上是用C++编写的,可以在Python中使用,在某种程度上构成了围绕C++实现的Python“装饰器”。Numpy,甚至Caer,在一定程度上也是这样做的。它有一个GIL(I)Python运行缓慢的主要原因之一是GIL(全局解释器锁)的存在,它一次只执行一个线程。虽然这提高了单线程性能,但它限制了并行性,开发人员必须实现多处理器而不是多线程程序才能提高速度。不是内存密集型任务的最佳选择Python会在对象超出范围时自动对其进行垃圾回收。它旨在消除C和C++中内存管理中涉及的许多复杂性。由于指定数据类型的灵活性(或缺乏灵活性),Python消耗的内存量可能会迅速增加。此外,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作为一种编程语言正在消亡吗?我不这么认为。那么,它的魅力正在消退吗?也许有一点,但只有一点。