自从 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,还相去甚远。

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

责任编辑:xj

原文标题:2020,Python 已死?

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

python可以替代java吗_Python 并非最好的编程语言,它无法取代 C/C++ 和 Java相关推荐

  1. python跟java 效率_Python注重可读性和效率:与Java、PHP以及 C++语言对比谁受欢迎?...

    [java培训]Python是一门更注重可读性和效率的语言,尤其是相较于Java.PHP以及C++这样的语言,它的这两个优势让其在开发者中大受欢迎.实际上这要看你怎么看待它,生命线长本身就是件好事,说 ...

  2. python跟java 效率_Python与Java:哪个更好,如何选择?

    Python与Java新手应该选哪个?应该是当今讨论最为热门的话题了. 在过去的几年中,Python的普及速度令人惊叹,Java的王者地位也常年不衰.目前两者的竞争愈发激烈,怎么选择成为了许多初学者萦 ...

  3. java与python的区别和作用_python与java用途区别有哪些

    展开全部 区别2113: 1.Python比Java简单,学习成本低,开发效率高.5261 2.Java运行效率高于Python,尤其是纯4102Python开发的程序,效率极低1653. 3.Jav ...

  4. python跟java 效率_Python和Java该如何选择?老男孩Python人工智能

    编程是很多人都想要掌握的技术,但是在行业之中编程语言有很多种,每个人的爱好,想要从事领域不同,自然选择也是不同,比较常见的编程语言就是Python和Java,那么对于这两种语言选择哪个好? 老男孩教育 ...

  5. python怎么封装供java调用_python调用第三方java包实例

    先看结果: 对于python与java的互调,我一开始是用的py4j,但是后来发现在使用方法的时候,不知道如何在python中导入jar包,然后网上的资料也比较少.后来想不出来办法,又看到有Jpype ...

  6. js和python前景比较好_Python,Java和JavaScript这3个编程语言未来哪个更有前景?

    编程语言未来哪个更有前景?哪个会被淘汰?这些都是初入IT行业的小白比较关心的问题.今天就借此机会,来谈谈:Python,Java和JavaScript这三门语言,到底哪个更具发展前景? 谈论这个问题之 ...

  7. python javascript区别_Python,Java和JavaScript这3个编程语言未来哪个更有前景?

    编程语言未来哪个更有前景?哪个会被淘汰?这些都是初入IT行业的小白比较关心的问题.今天就借此机会,来谈谈:Python,Java和JavaScript这三门语言,到底哪个更具发展前景? 谈论这个问题之 ...

  8. python和jsp哪个好学_Python,Java和JavaScript,学哪个编程语言好就业?

    编程语言未来哪个更有前景?哪个会被淘汰?这些都是初入IT行业的小白比较关心的问题.今天就借此机会,来谈谈:Python,Java和JavaScript这三门语言,到底哪个更具发展前景? 谈论这个问题之 ...

  9. python基础教程博客_Python基础教程_Python入门知识

    Python基础教程频道为编程初学者提供入门前的所有基础知识,必须要掌握的一些PYTHON基础语法语句,基本的数据类型. 让大家可以更快速.更容易理解的的方式掌握Python编程所需要的基础知识,灵活 ...

  10. python主函数的作用_python中main函数的用法

    原博文 2020-03-27 20:25 − **什么场景下会有main函数?** 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行. **ma ...

最新文章

  1. 张首晟生前重磅演讲:要用第一性原理的思维方式来理解今天的世界
  2. python培训中心-吴中区Python培训中心
  3. python基础小白题5
  4. mysql 字符串类型 分区_MySQL分区类型
  5. 【计算机组成原理】程序中断与DMA
  6. 最小栈设计并实现一个minstack类_栈相关
  7. pytorch教程之nn.Sequential类详解——使用Sequential类来自定义顺序连接模型
  8. 2.13.PHP7.1 狐教程-【PHP 类】
  9. 煲机:让耳机的声音更动听!
  10. 管家机器人先生txt_《管家机器人先生》主角墨青如玉最新章节章节目录
  11. 大数据“超能力”:数据安全和隐私该如何保障?
  12. 云计算复习知识总结(很有用,全是干货)
  13. Android chrome默认设置Autoplay policy
  14. HTML学习的一些笔记
  15. java里面出生日期_java出生日期格式
  16. unzip解压缩linux文件时出现error [Testing.zip]: start of central directory not found;zipfile corrupt——7z
  17. 适用各大电商平台的商品主图设计模板!
  18. 2016第16本:随机漫步的傻瓜
  19. 1.在表格中操作时间,对时间格式转化,2.自定义规则验证身份证号
  20. python | 统计频次

热门文章

  1. zendframework Form表单美化
  2. tomcat启动超时(timeout)解决方法
  3. C语言基础知识(期末喽)
  4. Linux中利用NFS实现飞鸽传书
  5. 一些常用路由协议默认的AD值
  6. php和mysql的概述_MySQL_理解MySQL变量和条件,一、概述  变量在存 - phpStudy
  7. FRR BGP协议分析15 -- 路由策略
  8. linux内核分析及应用 -- Linux 网络层数据流分析(上)
  9. C++简介(3)--引用和指针
  10. Centos 启动盘制作与安装以及遇到的问题