美文网首页
想要入行人工智能,为什么Python是首选语言?

想要入行人工智能,为什么Python是首选语言?

作者: 37f08a1d07fb | 来源:发表于2018-09-10 17:43 被阅读19次

    在人类发展史上,从来没有任何一项技术及其应用能像计算机网络一样发展如此迅速。对人们的工作、生活、消费和交往方式影响如此巨大,并且随着信息化的网络社会的到来,人类传统的生产方式、生活方式和生存状态都发生着翻天覆地的变化。

    而计算机的运行离不开程序,编写程序就要需要用到计算机语言。我们今天说说常用的计算机语言中的Python。

    网上说Python是一个不务正业的人发明的:“是”也”不是“。

    “ 是 ”是因为:Python是Guido van Rossum创立的, 1989年圣诞节,他在阿姆斯特丹很无聊,决定开发一种新的脚本解释语言,之所以选择Python(大蟒蛇)作为程序的名字,是因为他是一个大蟒蛇飞行马戏团的爱好者。他的爱好很广泛,看起来像无所事事的。

    “ 不是 ”是因为:在Python开发之前,他也是ABC语言的设计者,最终ABC没有获得成功,Guido认为是因为ABC没有开源, 所以在Python上就特别重视开源和与其它语言的结合。

    Python 是一种解释性脚本语言,不是像c++/java那样的高级语言,需要编译成字节码之后才能运行,它可以边运行边解释。而它的设计也坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。

    而且随着人工智能的兴起,近几年Python的热度更是逐渐上涨,众多AI从业者都会首选Python,下面我们看两组数据:

    根据数据平台 Kaggle发布的2017年机器学习及数据科学调查报告,在工具语言使用方面,Python是数据科学家和人工智能从业者使用最多的语言(见下图)。

    IEEE综览(IEEE Spectrum)发布的2017最受欢迎编程语言列表中,Python同样位列第一(见下图)。

    为什么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则是脚本语言的双子星。

    Python和Perl在设计层面有一个非常大的区别:

    Python力求让不同的人在撰写同样功能实现的代码时,所用的表达形式尽量一致;

    而Perl则是故意追求表达的千姿百态,让同一个人在不同地方写同样功能时所用具体形式都不同。

    从哲学层面讲,Perl的追求更加自由主义,更利于释放人类的多样化天性。然而,Perl写的程序——那叫一个乱七八糟!

    如果不是想成为代码诗人,或者语言大师,只是想用尽量简单直接的方法,把事情做了,首选语言确实是Python。

    原因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 parameters

    classifier = LogisticRegression()

    # train model

    classifier.fit(train_set, target)

    # do test

    y_hat = classifier.predict(test_set)

    # print out test results

    print y_hat

    支持图表

    Python还有许多图标方面的支持库。用来生成dashboard上的各种图形表格,是非常简单的事情。

    比如使用Plotly图形库,下面这些炫彩的图形,就随便用啦:

    原因3:规模效应

    语言简单易学,支持库丰富强大,这两大支柱从早期就奠定了Python的江湖地位。

    根据以高收入国家Stack Overflow问题阅读量为基础的主要编程语言趋势统计,可以看出,近年来,Python已然力压Java和Javascript,成为目前发达国家增长最快的编程语言(见下图)。

    由图可见,2012年之后,对于Python相关问题的浏览量迅速增长,从时间上看,这一趋势正好和近几年人工智能的发展重合。

    总结:

    技术的普及推广就像滚雪球,早期的积累相对缓慢,一旦过了临界点,就是大爆发。中国已进入人工智能迅速发展的时代,而当下热门的Python被认为是现阶段人工智能技术的首选编程语言。

    如今,Python在AI领域的老大地位已经奠定。

    若要学AI,舍Python其谁?

    ​欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ    群:   755431660

    相关文章

      网友评论

          本文标题:想要入行人工智能,为什么Python是首选语言?

          本文链接:https://www.haomeiwen.com/subject/jztegftx.html