Py学习  »  Python

为什么Python赢了,别的语言都干嘛去了?

脚本之家 • 4 年前 • 511 次点击  


  脚本之家

你与百万开发者在一起


本文经授权转自公众号 码农翻身(ID:coderising)
如若转载请联系原公众号

人工智能时代,为什么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本人又忽视了社区和类库的发展。 



2



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


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


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


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


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



3



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


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


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


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


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


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


参考资料: 

http://hugunin.net/story_of_jython.htmlhttp://hugunin.net/papers/hugunin95numpy.html https://en.wikipedia.org/wiki/Jim_Huguninhttps://www.revolvy.com/page/Jim-Hugunin https://en.wikipedia.org/wiki/NumPy   

https://www.quora.com/Why-didnt-Ruby-become-popular-for-data-science-like-Python-did

- END -



更多精彩


在公众号后台对话框输入以下关键词

查看更多优质内容!


女朋友 | 大数据 | 运维 | 书单 | 算法

大数据 | JavaScript | Python | 黑客

AI | 人工智能 | 5G | 区块链

机器学习 | 数学 | 送书

●  鲁大师原来真的姓鲁

●  脚本之家粉丝福利,请查看!

●  人人都欠微软一个正版?

● 致敬经典:Linux/UNIX必读书单推荐给你

 鲁大师原来真的姓鲁

● 终于有人把 Nginx 说清楚了,图文详解!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53543
 
511 次点击