InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

Python 正在慢慢失去魅力?

  • 2020-10-21
  • 本文字数:1515 字

    阅读完需:约 5 分钟

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


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-10-21 09:302582
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 251.8 次阅读, 收获喜欢 1283 次。

关注

评论

发布
暂无评论
发现更多内容

声网发布教育新品:灵动课堂全球覆盖学生超400万,互动白板首创H5课件

声网

人工智能 代码

2.《重学JAVA》--初探JAVA

杨鹏Geek

「Java 25周年」 28天写作 12月日更

新知识的地图绘制

Nydia

随笔—写作

圣迪

linux重要的目录之proc和dev目录

入门小站

Linux

创业研发团队的组织建设-人才培养

wood

创业 人才培养 28天写作

【LeetCode】亲密字符串Java题解

Albert

算法 LeetCode 12月日更

云原生:K8s控制器汇总(附视频教程+PDF)

息之

k8s Node Deployment statefulset cronjob

不懂这五项权力,做什么项目经理

Ian哥

项目管理 28天写作 五项权力

复制流动改变世界

mtfelix

28天写作

请清晰沟通选题-从策略层面定义技术演讲

将军-技术演讲力教练

MySQL探秘(三):InnoDB的内存结构和特性

程序员历小冰

MySQL 28天写作 12月日更

Linux常用命令-如何操作文件?

Java个体户

Linux

Golang Gin 框架之中间件(六)

liuzhen007

28天写作 12月日更

圣迪

趣谈“链路追踪组件” Skywalking 和 PinPoint

悟空聊架构

链路追踪 Skywalking 28天写作 悟空聊架构 12月日更

Python Qt GUI设计:QPrinter打印图片类(基础篇—21)

不脱发的程序猿

Python PyQt GUI设计

[Pulsar] JWT认证的原理

Zike Yang

Apache Pulsar 12月日更

架构训练营模块一作业

沈益飞

「架构实战营」

mongodb出现重复id怎么办?

喵叔

28天写作 12月日更

《深入理解JVM虚拟机》第三章 垃圾收集器与内存分配策略

Joseph295

一图看懂软件缺陷检查涉及的内容

Tom(⊙o⊙)

软件安全 静态代码检查

现实扭曲力场引论

Justin

群体心理学 28天写作 玄学

单例模式

卢卡多多

单例模式 28天写作 12月日更

爸爸想对儿子说的话

Tiger

28天写作

在线蚂蚁文,菊花文生成工具

入门小站

工具

架构实战营 - 毕业设计

en

#架构实战营

Android C++系列:Linux守护进程

轻口味

c++ android 28天写作 12月日更

33 K8S之访问控制

穿过生命散发芬芳

k8s 28天写作 12月日更

Prometheus Exporter (十五)PostgreSQL Server Exporter

耳东@Erdong

Prometheus postgres 28天写作 exporter 12月日更

架构实战营 - 毕业总结

en

#架构实战营

  • 扫码添加小助手
    领取最新资料包
Python正在慢慢失去魅力?_语言 & 开发_Jason Dsouza_InfoQ精选文章