在所有编程语言里,Python并不算萌新,从1991年发布第一个版本,至今已经快30年了。
最近几年,随着人工智能概念的火爆,Python迅速升温,成为众多AI从业者的首选语言。
根据数据平台 Kaggle发布的2017年机器学习及数据科学调查报告,在工具语言使用方面,Python是数据科学家和人工智能从业者使用最多的语言(见下图)。
IEEE综览(IEEE Spectrum)发布的2017最受欢迎编程语言列表中,Python同样位列第一(见下图)。
为什么?
原因1:Python是一种说人话的语言
所谓“说人话”,是指这种语言:
开发者不需要关注底层
语法简单直观
表达形式一致
我们先来看几个代码的例子:
C 语言Hello World 代码:
int main(){printf(''Hello, World!''); return 0;}
Java 语言Hello World 代码:
public class HelloWorld { public static void main(String[] args){System.out.println(''Hello World!'');}}
Python 语言Hello World代码:
print(''Hello World!'')
仅仅是一个Hello World程序,就能看出区别了,是不是?
编译 VS 解释
当然,仅仅是一个Hello World的话,C和Java的代码也多不了几行。
可是不要忘了,C和Java的代码要运行,都必须先经过编译的环节。
对于C语言来说,在不同的操作系统上使用什么样的编译器,也是一个需要斟酌的问题。一旦代码被copy到新的机器,运行环境和之前不同,还需要重新编译,而那台机器上有没有编译器还是一个问题,安装上编译器后,也许和之前最初的编译器有所区别,还得修改源代码来满足编译环境的需求……
我到底做错了什么?我只是想运行一个别人写的程序而已[泪目]
而Python则不用编译,直接运行。而且都可以不用写文件,一条条语句可以直接作为命令行运行。不要太方便咯。
语言语法
和Python比,Java的语法更“啰嗦”。
从上面的例子已经可以看出,创建一个链表,Java还需要声明和逐个插入节点,而Python则可一行代码完成从链表创建到插入节点及赋值的全部操作。
这还只是一个例子。在真正的使用中就会发现,对于很多非常简单基础的操作,Java非让你很别扭地写好几行,Python直接一句搞定。
这样的结果就是,Python写起来省事,读起来也方便。可读性远超Java。
表达风格
在10年或者更久远之前,Python经常被用来和Perl相提并论。毕竟在那个时候,C是系统级语言,Java是面向对象语言,而Python & Perl则是脚本语言的双子星。
原因2:强大的AI支持库
矩阵运算
NumPy由数据科学家Travis Oliphant创作,支持维度数组与矩阵运算。结合Python内置的math和random库,堪称AI数据神器!有了它们,就可以放心大胆玩矩阵了!
大家知道,不管是Machine Learning,还是Deep Learning,模型、算法、网络结构都可以用现成的,但数据是要自己负责I/O并传递给算法的。
而各种算法,实际上处理的都是矩阵和向量。
使用NumPy,矩阵的转置、求逆、求和、叉乘、点乘……都可以轻松地用一行代码搞定,行、列可以轻易抽取,矩阵分解也不过是几行代码的问题。
而且,NumPy在实现层对矩阵运算做了大量的并行化处理,通过数学运算的精巧,而不是让用户自己写多线程程序,来提升程序效率。
有了Python这种:语法简洁明了、风格统一;不需要关注底层实现;连矩阵元素都可以像在纸上写公式一样;写完公式还能自动计算出结果的编程语言,开发者就可以把工作重心放在模型和算法上了。
ML模型
用Python实现大多数经典模型,几十上百行代码就够了。
当然,对于普通用户,也可以连算法都不用管,只是调用Scikit-Learn的接口就可以了。
比如,训练和使用一个logistic Regression模型,只需要下面几行代码就可以了:
# import the LogisticRegression from sklearn.linear_model import LogisticRegression# Use default parametersclassifier = LogisticRegression()# train modelclassifier.fit(train_set, target)# do testy_hat = classifier.predict(test_set)# print out test resultsprint y_hat
原因3:规模效应
语言简单易学,支持库丰富强大,这两大支柱从早期就奠定了Python的江湖地位。
根据以高收入国家Stack Overflow问题阅读量为基础的主要编程语言趋势统计,可以看出,近年来,Python已然力压Java和Javascript,成为目前发达国家增长最快的编程语言(见下图)。
由图可见,2012年之后,对于Python相关问题的浏览量迅速增长,从时间上看,这一趋势正好和近几年人工智能的发展重合。
技术的普及推广就像滚雪球,早期的积累相对缓慢,一旦过了临界点,就是大爆发。
别的不说,就说现在tensorflow,caffe之类的深度学习框架,主体都是用Python来实现,提供的原生接口也是Python。
如今,Python在AI领域的老大地位已经奠定。
作者:M耀文
链接:https://www.jianshu.com/p/1312b5a7ef1e
共同学习,写下你的评论
评论加载中...
作者其他优质文章