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实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技