警惕!Python 正在慢慢失去魅力!
共 2217字,需浏览 5分钟
·
2020-11-08 22:41
警惕!Python 正在慢慢失去魅力!
瑞士军刀式的编程语言也存在一些问题,可能会被更适合特定任务的其他语言取代。
自从 1990 年代初发布 Python 以来,它引起了很多炒作。当然,编程社区至少花了 20 年的时间才意识到它的存在,但是自那时以来,它的普及程度已经远远超过了 C,C#,Java 甚至 Javascript。
尽管 Python 在数据科学和机器学习领域以及某些程度上在科学和数学计算领域占据着主导地位,但与 Julia,Swift 和 Java 等语言相比,它确实有其缺点。
是什么让 Python 如此流行?
Python 迅猛发展的主要推动力之一是它的易学性和强大的使用性,这使其对初学者以及因诸如 C / C ++ 之类的语言的语法难以理解而回避编程的人非常有吸引力。
Python 语言从根本上就着重强调了代码的可读性。凭借其简洁明了的语法,它使开发人员无需编写大量的行代码即可表达思想和概念。Python 非常简单,可以与其他编程语言无缝集成,这对多语言开发人员来说是一个额外的好处。
Python 多功能性的另一个原因是大量企业使用它。今天,您可以找到很多领域的 Python 库,其中包含您几乎可以想到的所有内容-对于科学计算,有 Numpy、Sklearn 用于机器学习,Caer 用于计算机视觉。
Python 开始变弱
但 Python 已经开始变弱,虽然这种变化很慢很慢。
这可能是显而易见的,速度通常被认为是开发人员关注的重点之一,并且因为一些不可预见的时间可能会持续被关注。
Python 之所以“变慢”的主要原因之一,实际上可以归结为 2 点 – Python 是 解释的
而不是编译的,最终导致执行时间变慢;并且它是 动态类型的
(变量的数据类型在执行过程中由 Python 自动推断)。
实际上,这种 “Python慢” 的观点在初学者中往往起着很大的作用。对,是真的。但仅仅是部分原因。
以 TensorFlow 为例,这是 Python 提供的机器学习库。这些库实际上是用 C ++ 编写的,并可以在 Python 中使用,某种程度上构成了围绕 C ++ 实现的 Python “包装器”。Numpy 、Caer 在一定程度上也是如此。
GIL的限制
Python 速度缓慢的主要原因之一是存在 GIL
(Global Interpreter Lock,全局解释器锁定),该功能一次只能执行一个线程。虽然这可以提高单线程的性能,但是它限制了并行性,在这种并行性中,开发人员必须实现多处理程序而不是多线程程序,以提高速度。
对于内存密集型任务不是最好的
当对象超出范围时,Python 会自动进行垃圾回收。它旨在消除 C 和 C ++ 涉及的许多内存管理复杂性。由于指定数据类型的灵活性(或缺乏灵活性),Python 消耗的内存量可能会迅速爆炸。
此外,Python 可能不会注意到的一些错误可能会在运行时弹出,最终使开发过程变慢了很多。
在移动计算领域缺乏竞争力
从台式机到智能手机的巨大转变,很明显,需要更强大的语言来构建用于手机的软件。尽管 Python 在台式机和服务器平台上具有相当大的代表性,但由于缺乏强大的移动计算处理能力,Python 往往会在移动开发方面落伍。
近年来,在这一领域取得了许多进步,但是这些新添加的库甚至与强大的竞争对手(如 Kotlin,Swift 和 Java)并不接近。
其他语言的兴起
最近,诸如 Julia,Rust 和 Swift 等较新的语言突然出现,它们借鉴了 Python,C / C ++ 和 Java 的许多优秀设计概念- Rust 几乎可以保证运行时的内存安全性和并发性,并提供与 WebAssembly 的一流互操作性; Swift 由于支持 LLVM 编译器工具链和 Julia 为 I / O 密集型任务提供异步 I / O,并且速度非常快。
小结
Python 从未被构建为最佳的编程语言。它从未被构建为可以替代 C / C ++ 和 Java 的语言。它被构建为一种通用编程语言,强调了人类可读的,以英语为中心的语法,从而可以快速开发程序和应用程序。
就像一天结束时的所有其他语言一样,Python 是一种工具。有时,它是最好的工具。有时候不是。通常,这“还好”。
那么,Python 作为一种编程语言是否正在消亡?
我几乎不这么认为。
那么,它失去魅力了吗?
啊,也许只是一点点,一点点……
原文来源:
https://towardsdatascience.com/python-is-slowly-losing-its-charm-9ca652726492
------- End -------
推荐阅读 一个非常好用的 Python 魔法库【文末查看上周中奖者】 神器在手,给变量命名从此高大上!
关注「Python 知识大全」,做全栈开发工程师 岁月有你 惜惜相处 回复 【资料】获取高质量学习资料 好文章,我在看❤️