和大多数程序员同行一样,我的第一母语也是Java。彼时,觉得Java是这个世界上最漂亮的编程语言,会用Java代码写程序是一件非常美妙的事情。
Java能做的事情实在是太多了,以至于我认为它几乎无所不能。在这期间,我也观望过几种除Java以外的编程语言,如C/C++,Objective-C,C#,NodeJS,Scala等,当然也包括我要说的Python。但大多都浅尝辄止,不过是增加了一些与同行茶余饭后的谈资。
编程语言就是一种工具,有的人认为多多益善,技多不压身,有的人则在追求极致的路上越走越远。(多媒体平台)
程序人生就是如此,一段乘法,一段加法,一番顿悟后,接着一段减法,一段除法。扔下的是糟粕,留下的皆精华,任谁也带不走,学不来。
1、Python in AI
在我接触Python之前,我还是一如既往的沉浸在Java的世界里无法自拔。然而让我感到疑惑的是,Java如此强大,为什么一提到人工智能,首先想到的编程语言是Python呢?
Python的第一个优点是开源免费,如果单纯从人工智能研究的角度考虑,MATLAB必须当仁不让。然而,人们不得不考虑其价格因素,由于MATLAB的价格并不亲民,大多数人将视线转向了免费好用,运行也不慢的Python。
Python的第二个优点是简单易学,对于人工智能领域的学者(尤其是非计算机专业的)来说,需要一种易于学习的编程语言,将自己费尽千辛万苦证明成功的公式快速改造成计算机程序,Python无疑是目前最完美的选择。Python语言本身的设计,可以帮助用户避开数量不少的陷阱,无需考虑申明变量、释放内存这些非计算专业学者所认为的“琐事”。
另外,对于人工智能研究所需的各项基础能力,Python可谓是一应俱全——数学运算有NumPy和SciPy,图形绘制有MatplotLib、SeaBorn,结构化数据操作有Pandas,如丝般顺滑……
图1 Python的第三方库
由于近年来Python在人工智能领域发出的光芒实在是太耀眼了,以至于人们出现了一种错觉:人工智能就是Python的全部。
答案是:不。
Python能做的,远比人工智能要多得多!
从最早的爬虫、Web应用开发,到现在的数据分析、自动化运维以及自动化测试,Python都有非常出色的表现。
2、Python in 2017
Python的发展史是一部典型的励志大片。自1989年诞生以来,从名不见经传到跃居编程语言排行榜首位(2017年7月),堪称屌丝逆袭非人类样板。
进入21世纪的第一个十年,是Python的平稳发展期,基本稳住了前十名的地位,那时候,NASA已经在大量使用Python程序了。
在21世纪的第二个十年,Python迎来了爆发式的增长。这一切得益于人工智能的迅猛发展,更确切的说,是中国人工智能的迅猛发展。目前国内拥有近200万名程序员,在全球的占比高达10%,如果这些人关注的是Python的强有力竞争者R语言,那么如今排名第一位的编程语言恐怕就是R语言了。
以下是今年7月份IEEE Spectrum发布的第四届顶级编程语言应用排行榜前20位:
图2 编程语言排行榜
当我看到这份榜单的时候,颇有时势造英雄的感慨。相比Python如此辉煌的成绩单,MATLAB要落寞许多,近几年都是在10多名开外徘徊,在国内长期处于一个不温不火的尴尬状态。
整个2017年,Python的生态圈正在一点点在发生蜕变:
2月份,Python正式宣布要将其源代码迁移至全球最大的同性社交网站:GitHub,暂停了Mercurial的使用,转而投入Git的怀抱;
4月份,AWS Lambda 已经开始支持 Python 3.6,又少了一个用Python 2的理由;
10月份,Ubuntu17.10默认不再安装Python 2.x版本;
11月份,NumPy宣布不再支持Python2.7版本;
12月份,微软正考虑将Python作为Excel的官方脚本语言。
……
在这一年Python狂热的背后,相信很多人会像我一样去思索这辉煌背后的原因。
在我接触Python之后,使用该语言进行实践时,让我最痛苦的是Java到Python的编程思维转换。倒不是因为缺乏编程经验,而是被Java调教出了诸多本能反应。在Python这里,我发现了一个简约而不简单的世界——当我尝试着将一个由Java实现的小功能改造成Python程序时,就代码行数而言,能够缩减20余行。这正是Python编程语言“优雅”,“明确”,“简单”的设计哲学的体现。有人称Python为「Magic Python」,看来不是没有原因的。
There should be one and preferably only one obvious way to do it.
— The Zen of Python, by Tim Peters
最近一则关于Python编程语言进入中小学教材的新闻也让我们感到振奋,我个人将这个举动理解为政府给当下正热的人工智能带来一次恰如其分的助攻。毕竟在国内,Python算是人工智能的第一语言。当然背后还有更多深层次的原因,诸如学科类目竞争性、编程语言的接受度和难易程度之类的问题,在此不再进行详细阐述了。
写到这里,我想起了近些年活跃于一线大城市的「儿童编程」产业,各个培训机构的课程体系大同小异,针对幼儿的编程学习都采用了MIT研发的可视化编程工具:Scratch,而针对青少年学习编程所采用的语言毫无例外都是Python,迎合了当下人工智能的热潮。从这个方面来看,Python进入中小学教材也是有其科学性的。
邓小平同志曾说过:“计算机要从娃娃抓起!”
随着Python编程语言的不断渗透,将会有越来越多能够用Python写程序的中小学生。
设想一下,未来某一天,一个十来岁的小孩子在和我们这些专职程序员聊机器学习、神经网络的话题,那是将怎么样一种感觉?
图3 某机构儿童编程课程体系
3、Python in Future
讲真,Python用蟒蛇作为Logo当初着实让我吓了一跳,在我看来,GO语言的土拨鼠形象似乎会更讨人喜爱。然而当Python日益流行之后,喜欢这条蟒蛇形象的人似乎也越来也多。
在互联网行业,小步快跑的产品迭代节奏是大家有目共睹的,并且这种现状将会持续相当长时间,以「高效开发」著称的Python必将受到青睐。至于长期以来饱受诟病的Python运行速度,随着PyPy解释器的不断优化和硬件性能的提升,也将不再值得顾虑。
在前面的内容中我曾提到,Python在多个领域都能游刃有余,称得上是一门「全栈」编程语言,可以想象未来的3~5年间,PHP的全能地位也将有所不保。我们甚至可以大胆预测,用不了几年,Python将一飞冲天,与Java并肩遨游。
在此借用一篇博文中的一段话:
大概在 2003 或者 2004 年的时候,我买过一本 Python 的书,作者是一位巴西人。他说自己之所以坚定的选择 Python,是因为他小时候经常梦到未来世界将由一条大蟒蛇(蟒蛇的英文为python)统治。
我当时觉得这哥们好可怜,做个梦都能梦到这么恐怖的场景。但今天来看,也许他只是像黑客帝国里的程序员安德森一样,不小心穿越到未来,并且窥探到了世界的真相。
正所谓:「悟已往,知来者」。未来人工智能的时代,定会让Python成为一代霸主。
4、总结
这篇文章主要叙述了我对Python近几年来发展历程的考量和想法,对Python在2017年辉煌成绩的总结和肯定,以及对其未来的预测。对于那些有一定Python编程经验的老司机来说,会有更真切的感受。当然,这些仅仅是个人立场,不代表大众观点,也不应该成为读者选择Python编程语言的一个理由。(多媒体平台)
正所谓:「工欲善其事,必先利其器」,每种编程语言都有优劣之处,善于使用自己手中掌握的工具才是王道。