python语言为何不受待见_为什么Python赢了,别的语言都干嘛去了?

2023-10-11 23:30
文章标签 python 语言 干嘛 待见

本文主要是介绍python语言为何不受待见_为什么Python赢了,别的语言都干嘛去了?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

e93446f6d61eb80227cce8834a8873b3.png

人工智能时代,为什么Python大放异彩,别的语言都干嘛去了?

为什么不是使用者众多的Java?也许是Java啰里啰唆,不如Python那么简洁?

为什么不是Ruby? 和Python一样简洁,但是更加优雅。

为什么不是微软大力支持的C#?

为什么不是C++? 嗯, 其实很多AI核心库如TensorFlow就是C++写的, Python更像个“壳”,但是别的语言怎么没有成为“壳”呢?

先把这个疑问放下,看一个故事。

1

上个世纪90年代,一个叫Jim Hugunin的小伙子在俄勒冈州阿什兰市的一个公园里玩杂耍,这时候他遇到了施乐PARC的科学家Pavel Curtis, Pavel告诉Jim,有一门叫做Python的语言,非常的酷,用Python编程就像用自然语言一样,Python就像是可执行的伪代码,当程序员想快速地分享想法时,使用Python最合适不过了。

这些话应该在Jim的脑海中扎下了根。

1995年,当Jim Hugunin 正在麻省理工学院和他的硕士论文“搏斗”时,他广泛地使用了Matlab,因为在那篇论文中,他需要对实验结果进行数据分析,和理论值比较。

Matlab在数据分析领域表现非常棒,但是一旦超出这个领域,就糟糕透顶。为了克服Matlab的缺点,Jim将C语言,Python和Matlab拼凑在一起,终于完成了论文。

Jim 受够了Matlab,完成论文后,他就开始写一个Python的扩展,以便像Matlab那样自然地支持数据分析,同时又不牺牲Python作为一个通用编程语言的强大的功能。

这个Python扩展就是Numeric ,也就是大名鼎鼎的NumPy的前身。

NumPy,以及后来发展起来的SciPy、Matplotlab等, 共同构成了AI时代做应用编程的基础。

Jim在当时为什么选择了Python,而不是其他语言来开发数据分析的扩展呢? 这是一种巧合吗?

首要的原因就是喜欢,“Python编程就像用自然语言一样”。

其次当时可以选择的语言也不多,C,C++这种“复杂”的语言肯定不合适, Java, JavaScript才刚刚诞生,Perl擅长的是字符串处理,Ruby是日本人发明的,估计影响力还在日本国内,Matz本人又忽视了社区和类库的发展。

a293ed362591c72436f519837ff7c5b8.png

2

可是,NumPy是Python的扩展,难道别的语言如Ruby,Java就不能也写个类似的类库,和Python竞争吗?

NumPy, SciPy被开发出来的时候,普通的做应用开发的程序员很少使用,它的主要用户是大学的研究人员、学者和数据科学家,这些人并不是专业的开发人员,他们也不想成为专业的开发人员,他们只要能利用工具解决问题就行了。

由于Python简洁易懂,并且有NumPy这样的类库,在数据分析和科学计算领域,积累起了大量的Python代码。

假设你是一个研究生,你进实验室的时候,你的师兄丢给你几万行没有注释的代码,是使用Python的NumPy/SciPy做数值分析, 虽然你很讨厌Python的语法,但是你会用你最喜欢的语言如Java/Ruby来重写它们吗?大概率不会吧。

先发优势让Python锁定了数据科学领域的开发,当AI爆发的时候,Python扶摇直上,就吃尽了红利,垄断了市场,别的语言难以和它竞争。

9736f5a0ac683c98f1adbdc64b0c134a.png

3

总结一下,Python的简洁易懂再加上早期在数据科学领域的先发优势,让它在AI时代获胜,有偶然也有必然。

最后再来提一下Jim Hugunin,他完成了Python扩展Numeric , 把维护的工作交给了其他人,挥一挥衣袖,不带走一片云彩。

在对Numeric做性能测试的时候,Jim比较了Python和其他很多语言, 他震惊地发现Java在一些简单的数值运算上居然和C语言一样快!于是他开始了一项工作,把Python移植到JVM, 这就是Jython。

后来他也加入了施乐PARC,在那里他又参与设计了著名的AOP库AspectJ, 掀起了面向切面编程的热潮。

2004加入微软后,他又把Python移植到了.NET平台,即IronPython。

这四项工作,完成任意一项,都足以在软件发展史上写下自己的名字,而Jim居然都完成了,真乃奇人也!

这篇关于python语言为何不受待见_为什么Python赢了,别的语言都干嘛去了?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/191633

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e