尽管Python在数据科学和机器学习领域以及某些程度上在科学和数学计算领域占据着主导地位,但与Julia,Swift和Java等较新的语言相比,它确实有其缺点。
是什么使Python如此流行?
Python迅猛发展的主要推动力之一是它的易学性和强大的实用性,这使其对初学者以及因诸如C之类的语言的语法难以理解而回避编程的人非常有吸引力。 / C ++。
该语言从根本上广泛强调代码的可读性。 凭借其简洁明了的语法,它使开发人员无需编写大量的行代码即可表达想法和概念(在C或Java等低级语言中就是这种情况)。 Python非常简单,可以与其他编程语言无缝集成(例如将CPU密集型任务卸载到C / C ++),这对多语言开发人员来说是一个额外的好处。
Python多功能性的另一个原因是企业(包括FAANG)以及无数小型企业对其的大量使用。 如今,您将找到一个Python软件包,几乎可以想到的所有内容-对于科学计算,您已经拥有Numpy,Sklearn(用于机器学习)和Caer(用于计算机视觉)。
Python的弱点
很慢,很慢
> Photo by Nick Abrams on Unsplash
这可能很容易。 速度通常被认为是开发人员关注的重点之一,并且可能会持续不可预见的时间。
Python变慢的主要原因之一,实际上可以归结为2 – Python被解释为与编译相反,最终导致执行时间变慢; 以及它是动态类型的(在执行过程中,Python会自动推断变量的数据类型)。
实际上,这种" Python慢"的观点在初学者中往往起很大作用。 对,是真的。 但只是部分。
以TensorFlow为例,这是Python提供的机器学习库。 这些库实际上是用C ++编写的,并且可以在Python中使用,有点像是围绕C ++实现的Python"包装器"。 Numpy甚至在一定程度上也是如此。
它有一个GIL(l)
Python速度缓慢的主要原因之一是存在GIL(全局解释器锁定),该功能一次只能执行一个线程。 虽然这可以提高单线程的性能,但是它限制了并行性,在这种并行性中,开发人员必须实现多处理程序而不是多线程程序,以提高速度。
对于内存密集型任务不是最好的
当对象超出范围时,Python会自动进行垃圾回收。 它旨在消除C和C ++涉及的很多内存管理复杂性。 由于指定数据类型的灵活性(或缺乏灵活性),Python消耗的内存量可能会迅速爆炸。
此外,Python可能不会注意到的一些错误可能会在运行时弹出,最终使开发过程变慢了很多。
移动计算的弱势存在
> Photo by Yura Fresh on Unsplash
从台式机到智能手机的巨大转变,很明显,需要更强大的语言来构建用于手机的软件。 尽管Python在台式机和服务器平台上具有相当大的代表性,但是由于缺乏强大的移动计算处理能力,Python往往会在移动开发方面失去优势。
近年来,在这一领域取得了许多进步,但是这些新添加的库甚至与强大的竞争对手(如Kotlin,Swift和Java)并不接近。
其他语言的兴起
最近,Julia,Rust和Swift等较新的语言突然出现,它们借鉴了Python,C / C ++和Java的许多优秀设计概念-Rust几乎保证了运行时的内存安全性和并发性,并提供一流的 与WebAssembly的互操作性; Swift对LLVM编译器工具链的支持几乎与C一样快,而Julia为I / O密集型任务提供了异步I / O,并且速度非常快。
结论
Python从未被构建为最佳的编程语言。 它从未被构建为可以使用C / C ++和Java。 它被构建为一种通用的编程语言,强调了人类可读的,以英语为中心的语法,从而可以快速开发程序和应用程序。
就像一天结束时的所有其他语言一样,Python是一种工具。 有时,它是最好的工具。 有时候不是。 通常,这"还好"。
那么,Python作为一种编程语言是否正在消亡?
我几乎不这么认为。
它失去魅力了吗?
啊,也许只是一点点。 一点点。