Python正在消亡?致命弱点是否会让Python被新语言取代?

news2024/11/17 23:46:31

被业界称为“瑞士军刀”的编程语言,可能会被更适合该任务的其他语言取代吗?

自从1990年代初Python发布以来,它引起了很多热议。当然,编程社区花了至少20年的时间才逐渐注意到它的存在,而当它一旦开始流行起来,它的流行程度就远远超过了C,C#,Java甚至Javascript。

尽管Python在数据科学和机器学习领域以及某些程度上在科学和数学计算领域占据着主导地位,但与诸如Julia,Swift的较新语言相比,它似乎确实有其劣势。

01 是什么使Python如此流行?

Python的迅猛发展的主要推动力之一是它的易学性和使用起来非常强大,这使得面对诸如C/C++之类语言时因陌生的语法而避开编程的人来说非常有吸引力。

该语言从根本上强调了代码的可读性。凭借其简洁明了的语法,它使开发人员无需编写大量的行代码即可表达想法和概念(在C或Java等低级语言中也是这种情况)。Python非常简单,可以与其他编程语言无缝集成(例如将CPU密集型任务卸载到C / C ++),这对多语言开发人员来说是一个额外的好处。

Python多功能性的另一个原因是企业(包括FAANG)以及无数小型企业对其的大量使用。今天,对于你可以想到的任何东西,你都可以找到一个Python软件包,对于科学计算,你可以调用Numpy,对于机器学习,你可以调用Sklearn,对于计算机视觉你可以使用Caer。

02 Python的弱点

很慢,很慢。

显而易见。速度通常被认为是开发人员关注的重点之一,开发人员一直都很关注时间的不可预测性。

Python之所以“变慢”的主要原因之一,实际上可以归结为两方面:

  • Python是解释型语言而非编译型语言,最终导致其执行时间变慢;

  • 以及它是动态类型的(变量的数据类型由Python在执行期间自动推断)。

实际上,这种关于“Python慢”的说法在初学者中起了很大的影响。

是的,慢是一个问题。但也只是片面的问题。

以TensorFlow为例,这是Python提供的机器学习库。这些库实际上是用C ++编写的,并可以在Python中使用,某种程度上构成了围绕C ++实现的Python“包装器”。Numpy甚至在一定程度上也是如此。

03 Python有一个GIL(l)

Python速度缓慢的主要原因之一是GIL(Global Interpreter Lock)的存在,该功能一次只能执行一个线程。虽然这可以提高单线程的性能,但它限制了并行性,在这种并行性中,开发人员必须实现多处理程序而不是多线程程序,以提高速度。

04 不是内存密集型任务的最佳选择

当对象超出范围时,Python会自动将其放入垃圾回收。它旨在消除C和C ++涉及的许多内存管理复杂性。由于指定数据类型的灵活性(或缺乏灵活性),Python消耗的内存量可能会迅速爆炸。

此外,Python可能不会注意到的一些错误可能会在运行时弹出,最终使开发过程变慢了很多。

05 在移动计算中表现不佳

从台式机到智能手机的巨大转变,很明显,需要更强大的语言来构建用于手机的软件。尽管Python在台式机和服务器平台上具有相当大的代表性,但是由于缺乏强大的移动计算处理能力,Python往往会在移动开发方面失去优势。

近年来,在这一领域取得了很大进步,但是这些新添加的库甚至与强大的竞争对手(如Kotlin,Swift和Java)并不接近。

06 其他语言的兴起

最近,Julia,Rust和Swift等较新的语言出现在了人们的视线中,它们借鉴了Python,C / C ++和Java的许多优秀设计概念——Rust在运行时保证了内存安全性和并发性,并提供一流的与WebAssembly的互操作性;Swift对LLVM编译器工具链的支持几乎与C一样快,Julia为异步I / O提供I / O密集型任务,并且速度非常快。

07 结论

Python在设计之初就不是奔着最佳的编程语言取得。它从未试图取代C / C ++和Java,而是被构建为一种通用编程语言,强调人类可读性,其以英语为中心的语法,可以帮助快速开发程序和应用程序。

就像所有其他语言一样,Python是一种工具。有时,它是最好的工具。有时候不是。通常,它“还挺好用”的。

那么,Python作为一种编程语言是否正在消亡?

我几乎不这么认为。

它失去魅力了吗?

嗯,也许只有一点点。一点点。

 关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python课程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

在这里插入图片描述

三、Python实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

四、Python漫画教程

用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。
在这里插入图片描述

在这里插入图片描述

五、互联网企业面试真题

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web入门开发【一】- Web开发介绍

欢迎来到霍大侠的小院,我们来学习Web入门开发的系列课程。 首先我们来了解下这个课程能学到什么? 1、你将可以掌握Web网站的开发全过程。 2、了解基础的HTML,CSS,JavaScript语言。 3、开发自己的第一个网站。 4、认识很多对编…

UML类关系

1、聚合关系(aggregation) 用空心菱形箭头表示,整体和部分有各自的生命周期。部分可以属于多个整体对象! class Student; class Class { private: Student s; public: void set_student(Student s) { this.s s; } }; student() { print(“c…

电脑商城网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 作为一个网上商城系统,就应该做到能提供强大的业务支持功能,系统能实现用户的注册功能、登录 功…

整理各种Vue项目在IE浏览器白屏报错 SCRIPT1002:语法错误

目录 一、关于 sockjs-client 依赖包 二、关于 highlight 依赖包 三、关于 swiper 依赖包 四、IE 不支持 ES6 语法 五、第三方插件引入导致 六、本地环境正常,生产环境仍旧白屏 这篇文章主要介绍了 Vue 项目在 IE 浏览器显示白屏并报错 SCRIPT1002: 语法错误 …

【数字信号处理】卷积和乘法系列3之傅里叶变换对III

“傅里叶”家族 引言 虽然你知道傅里叶级数和变换,但看看它们之间的关系是很有趣的。本节的目的是展示各种基于傅立叶的变换如何相互关联。 要做到这一点,有必要认识到存在一个具有四个成员的傅里叶“家族”,如图 30 所示。有四个是因为除了具有系列与变换选项(行)外,…

转行的35岁程序员们

“大龄程序员去哪儿了”,10月24日程序员节当天,这成为了社交媒体上最火的话题之一。根据澎湃新闻统计,在知乎、豆瓣上关于“大龄程序员”的369个有效提问里,大龄程序员的职场成长问题最受关注,一共有242个,…

给刚入职场的年轻人八条建议

年轻人刚入职场时,总会碰到各种各样的难题,作为过来人,很多新人的难处我也深有体会。想要快速融入职场是没有捷径的,但是如果处理得当,还是可以少走很多弯路,以下就是我总结的给刚入职场的年轻人的八条建议…

JavaDS1-时间复杂度空间复杂度

目录 1.算法效率 1.1.时间效率(时间复杂度)——衡量算法运行速度 1.2.空间效率(空间复杂度)——衡量算法所需额外空间(如今不再特别关注) 2.时间复杂度 2.1.概念 2.2.大O的渐进表示法 2.2.1.O(F(n))…

【约数】魔法数

K-魔法数_2022河南萌新联赛第(六)场:郑州大学 (nowcoder.com) 题意: 思路: 一开始想的是枚举到1e6,统计所有数的约数个数,然后就不知道然后了,甚至想放到同一个数组里面然后lower_…

遇事不决,转行做程序员?先看看转了的人怎么说

遇事不决先“转码”——近几年,这好像成了非程序员考虑转行方向的优先选择。 转码,指放弃原职业或专业,转行成为程序员。通过“转码”这一跳板,有人在互联网行业谋得一份薪水更高的工作,还有人借此申请出国读书工作、…

大龄转行当程序员怎么做?应该选择小众技术,避免与年轻人竞争?

最近,一篇关于一位大龄人士转行,成为程序员的文章引起了关于 HN 的热议。文章作者 Derek M. Jones 是一名从事该行业十多年的软件工程师。最近,他遇到了许多想要转行到软件开发方面的年长求职者。对此,他的建议是:选择…

【源码共读】yocto-queue 一个微型队列数据结构

yocto-queue是一个微型队列的数据结构,根据作者的介绍,如果在你一个数据量很大的数组上,大量的操作Array.push和Array.shift,那么你可以考虑使用yocto-queue来替代Array。 因为Array.shift的时间复杂度是O(n),而Queue…

长除法计算平方根的方法总结与代码实现(C++, Python)

tags: DSA Math C Python 写在前面 之前总结了计算平方根的方法, 但是并没有给出手算方法的解释, 这次专门写一下手算方法. 据说这个方法是中国的数学家创造的, 我也没深入考证过, 总之就是非常经典了, 因为这个长除法算法(英文:Long Division Algorithm)可以计算任意精度的…

《ESP32》Adafruit_GFX、u8g2驱动ssd1306

本示例将使用ESP32驱动ssd1306,将为你介绍SSD1306,接线方式以及如何使用Adafruit_GFX、u8g2两种模式进行开发SSD1306。 本人踩坑了半天,发现Adafruit_SSD1306并不能驱动器LVGL,其并没有实现关键的setAddrWindow和pushColors函数用…

【网络编程】第四章 网络套接字(守护进程+TCP英译汉+TCP通协议讯流程+TCP和UDP对比)

🏆个人主页:企鹅不叫的博客 ​ 🌈专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接:代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

[Java]注解

文章目录⚽ 注解的概述⚽ 常见注解的使用示例🏐 文档相关的注解🏐 在编译时进行格式检查(JDK内置的三个基本注解)🏐 跟踪代码依赖性,实现替代配置文件功能⚽ 自定义注解⚽ JDK中的元注解🏐 Retention🏐 Tar…

【PowerDesign】制作数据流图

目录 文章目录 前言 一、下载软件 二、使用步骤 1.打开面板 2.绘制顶层0层/数据流程图 创建加工 画出数据流向 对格式进行设置 结果展示 2. 1层数据流程图 生成子加工 框图格式设置 结果展示 注意事项 3. 2层数据流程图 总结 前言 本文以图书管理系统举例&…

java开发的环保网站垃圾分类系统源码

本项目是基于springboot开发的小区垃圾分类的监管系统。为了更好的督促小区业主更好的进行垃圾分类和垃圾投放,本系统设计了一套积分奖罚机制,如果业主此次投放垃圾符合分类要求则加10积分,不符合则扣除200积分,积分不够需要进行扫…

东北大学c++实验最后一次

【问题描述】 建立两个磁盘文件f1.txt和f2.txt,编写程序实现以下工作: (1)从文件in.txt输入20个整数,分别存放在两个磁盘文件f1.txt和f2.txt中(每个文件中放10个整数); &#xff…

【java】java集合详解

目录一.集合类型二.集合的不同三.List解析1.ArrayList2.LinkedList3.Vector四.Set解析1.HashSet2.TreeSet3.LinkedHashSet五.Map解析1.HashMap2.TreeMap3.HashTable4.ConcurrentHashMap一.集合类型 集合类型和关系(我画的比较简略,其中有很多继承实现关系都没有画),…