0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python 并非最好的编程语言,它无法取代 C/C++ 和 Java

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:嵌入式ARM 2020-12-24 17:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

自从 20 世纪 90 年代初发布以来,Python 一直相当火爆,在这二十多年里,它的流行程度远远超过了 C、C#Java 甚至 Javascript。 虽然 Python 在数据科学和机器学习领域占主导地位,甚至是科学和数学计算领域的主角,但与 Julia、Swift 和 Java 等语言相比,它确实有些欠缺。

为什么 Python 如此受欢迎? Python 迅猛发展背后的一个主要驱动力是它学习起来相当容易,使用起来功能强大。对于初学者来说,像 C/C++ 这样有难度的编程语言,不熟悉语法的人都会敬而远之,所以 Python 显得非常有吸引力。 语言的核心是代码可读性,Python 的语法简洁而富有表现力,开发人员无需编写大量代码,便可以表达想法和概念 (C 或 Java 等底层语言的情况也是如此)。它非常地简单, 并可以与其他编程语言无缝集成 (比如将 CPU 密集型任务交付予 C/C++)。用 Python 语言开发会给开发人员带来许多好处。 Python 应用广泛的另一个原因是它被企业大量使用 (包括 FAANG)。今天,对于你能想象到的任何项目,你都可以找到一个相应的 Python 包 ---- 科学计算的有 Numpy,机器学习的有 Sklearn,计算机视觉的有 Caer。

Python 的弱点 它很慢,太慢了。 不用多说,速度通常是开发人员最为关注的焦点之一。不仅是现在,将来的很长一段时间都会如此。 Python “缓慢” 的主要原因,可以归结为以下两点 ---- 首先,Python 是解释性的语言,而不是编译型的语言,这终究会导致执行时间的缓慢;其次,它是一种动态的语言 (变量的数据类型在执行期间由 Python 自动推断)。 初学者经常对 “Python 的确太慢” 的说法产生争议,事实上,的确如此,但也并非完全这样。 例如, Python 的机器学习库 TensorFlow 实际上是用 C++ 编写的,在 Python 中进行调用而已,是在 C++ 的上层实现的一个 Python “封装器”。Numpy 是如此,Caer 也是类似的形式。

Python 有一个 GIL (L) Python 缓慢的主要原因之一是 GIL (Global Interpreter Lock) 的存在 -- 它一次只允许一个线程执行。这虽然有助于提高单线程的性能,但限制了并行性,而开发人员为了提高速度必须实现多线程处理程序。

不是内存密集型任务的最佳选择 当对象超出范围时,Python 会自动进行垃圾收集。其目的是消除 C 和 C++ 在内存管理中涉及的许多复杂性。由于指定的数据类型缺乏灵活性,Python 消耗的内存量可能会迅速爆增。 此外,在运行时,一些 BUG 可能会被 Python 忽略,最终成为延缓开发过程的主要诱因。

在移动计算中表现牵强 随着从台式机到智能手机的迁移,显然,人们需要为手机软件构建更强大的语言。虽然 Python 在计算机和服务器平台上有不错的表现,但由于缺乏强大的移动计算处理能力,在移动开发中它往往会失去优势。 近年来,(Python)在这方面有了很大的进步,但这些新增加的库与他们强大的竞争对手相比,如 Kotlin,Swift 和 Java,还相去甚远。

其他语言的兴起 最近,像 Julia、Rust 和 Swift 这些新出现的语言,借用了 Python、C/C 和 Java 的许多良好设计概念 ——Rust 确保了运行时的内存安全和并行,并提供了与 Web Assembly 的一样的互操作性;由于它支持 LLVM 编译器工具链,Swift 几乎和 C 一样快;Julia 提供了用于 I/O(输入 / 输出)密集任务的异步 I/O,而且速度惊人。

结论 Python 并非最好的编程语言,它无法取代 C/C++ 和 Java。它被打造成一种通用的编程语言,强调可读性、以英语为中心的语法。人们利用它可以快速开发程序和应用程序。 和其他语言一样,Python 只是一种工具。某些应用场景下,它是最好的工具;在另一种场景下,它或许不是。在大多数情况下,它 “挺好用的”。 那么,作为一种编程语言,Python 会消亡吗? 我不这么认为。 它逐渐失去魅力了吗? 啊,也许只是一点点,只是一点点。

责任编辑:xj

原文标题:2020,Python 已死?

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7646

    浏览量

    146220
  • python
    +关注

    关注

    58

    文章

    4889

    浏览量

    90344

原文标题:2020,Python 已死?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C++与lua联合编程

    手工业”。然而,这两种内存管理机制截然不同的语言,如何在一个进程内进行高效的数据交换,一直是企业级开发中的痛点。(看讠果aixuetang。xyz) 从经济学的视角来审视,夏曹俊老师《C++ 脚本编程
    发表于 04-19 16:27

    C++:const 的空间,常量也能占内存?

    ] != BLACK)): return True return False c++语言5g.FsW.dgdfgsg.cnJIWWQc++语言 c++
    发表于 04-16 19:19

    汽车网络安全开发语言选型指南:C/C++/Rust/Java等主流语言对比+Perforce QAC/Klocwork工具支持

    汽车网络安全如何选编程语言CC++、Rust、Java……谁更适合AUTOSAR、ISO/SAE 21434?一文了解8种主流
    的头像 发表于 12-26 11:13 680次阅读
    汽车网络安全开发<b class='flag-5'>语言</b>选型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>/Rust/<b class='flag-5'>Java</b>等主流<b class='flag-5'>语言</b>对比+Perforce QAC/Klocwork工具支持

    C语言C++的区别及联系

    C语言C++到底是什么关系? 首先C++C语言本来就是两种不同的
    发表于 12-24 07:23

    CC++之间的联系

    控制能力,这一点与C语言相似,使得它们在系统编程、嵌入式系统等领域都得到广泛应用。 3、发展历程: C++正是在C
    发表于 12-11 06:51

    C语言C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是一种面向过程的语言强调的是通过函数将任务分解为一系列步骤进行执行。
    发表于 12-11 06:23

    如何调试和编程CW32F030C8T7?支持哪些调试工具和编程语言

    了解如何调试和编程CW32F030C8T7是开发过程中的重要环节。支持哪些调试工具(如JTAG、串口调试等)和编程语言(如
    发表于 12-05 06:48

    为什么单片机还在用C语言编程

    说起单片机我们就会想到C语言,单片机为什么还在用C语言编程?现在有很多很好用的高级语言,如VC、
    发表于 11-28 07:37

    C语言编程技巧

    设计,分层开发代码,便于理解和维护。 ‌8、避免使用GOTO语句‌:尽管GOTO语句在某些情况下仍然有用,但现代编程更倾向于使用函数和循环控制结构,以提高代码的可读性和维护性。 ‌9、利用C语言的灵活性
    发表于 11-27 06:46

    2025年最佳的嵌入式编程语言有哪些呢?

    语言有哪些呢?今天我们将讨论这些语言CC++、Rust、Python和生成式AI提示;以及它们在当今的现代系统中的使用方式。资料来源:T
    的头像 发表于 11-14 10:27 1828次阅读
    2025年最佳的嵌入式<b class='flag-5'>编程</b><b class='flag-5'>语言</b>有哪些呢?

    C语言和单片机C语言有什么差异

    有些扩展,及一些特殊写法如C51扩展的 data xdata bit sbit一类的,还有一些中断程序写法 void int() interrput 1一类的。 2、C是一门高级语言,
    发表于 11-14 07:55

    一文了解Mojo编程语言

    Mojo 是一种由 Modular AI 公司开发的编程语言,旨在将 Python 的易用性与 C 语言的高性能相结合,特别适合人工智能(A
    发表于 11-07 05:59

    技能+1!如何在树莓派上使用C++控制GPIO?

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GP
    的头像 发表于 08-06 15:33 4537次阅读
    技能+1!如何在树莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    C++Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言
    的头像 发表于 07-24 15:32 1145次阅读
    <b class='flag-5'>C++</b> 与 <b class='flag-5'>Python</b>:树莓派上哪种<b class='flag-5'>语言</b>更优?

    主流的 MCU 开发语言为什么是 C 而不是 C++

    在单片机的地界儿里,C语言稳坐中军帐,C++想分杯羹?难喽。咱电子工程师天天跟那针尖大的内存空间较劲,C++那些花里胡哨的玩意儿,在这儿真玩不转。先说内存这道坎儿。您当stm32f4的
    的头像 发表于 05-21 10:33 1241次阅读
    主流的 MCU 开发<b class='flag-5'>语言</b>为什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?