Python的确挺神的~但不是生来就那么神。
Python是在1991年被创造出来的,但真正开始被广泛使用是Python 2.6以后的事情了。从2012年开始到现在,Python的热度持续累积,成为关注度增长最快的语言。
有图有真相:Python如此快的增长,说明了它确实十分神奇
所以说,Python并没有像Golang等语言那么幸运,生来就备受关注;而是因为语言本身的设计特点对生态环境有着极强的适应能力,同时适时抓住了成长机遇,从而厚积薄发。
Python逐渐发展成了一个特别简明友好、容易上手、功能强大的语言,发展过程中,Python抓住了三次飞速发展的机会。
第一个机会,Web与敏捷开发
在受到广泛关注之前,Python更多地是作为简单脚本语言,配合一些系统相关工作而被运用(主要是跟Perl抢地盘)。Python开始受到广泛关注,得益于Google的推动。Google或许不是第一家使用Python的公司,但它是第一家大规模使用Python进行Web相关开发的全球著名公司,从而有力地证明了Python能够很好地完成Web开发相关的许多工作。
而此时互联网正开始向快速开发转型,开发速度对于企业,尤其是初创企业而言至关重要,因此Python简洁便利与高效开发的特点吸引了众多企业和组织,同期衍生出来的社区环境又为Python提供了无数优质到可以进行生产级使用的模块和包;对比彼时PHP的模板式开发,Java的庞大繁杂,Ruby的语法新奇多变,Python为中小型企业的快速开发提供了尤为可能的解决方案,从而使得Python开始小有名气。
第二个机会,科学计算
相较于商业开发,科学计算面向更多的是非专业的编程人员,从这个方向上来说,抛开商业化软件不谈,Python的竞争对手也是前有Fortran,后有R、Julia语言的存在,虽然历史积累不如Fortran,抽象形式不及R,现代化和综合性能不如Julia,但是这些却仍然没有妨碍Python在这个领域里大显身手。
历史积累不如Fortran?没关系!借助C接口把Fortran包包裹起来让Python用就好;
抽象形式不及R?没关系!Python语法简单库还多,学习起来也不难,效率还高一丢丢,更重要的是借助这些特点能直接做产品,比R更具市场亲和力;
现代化不如Julia?没关系!Python社区大,要啥包有啥包。
更让人们惊喜的是,借助Python的各种模块和包,能够十分简单地实现之前需要折腾很久的繁杂工作,诸如访问数据库和表格文件,哪怕是在R语言中,仍旧需要从ODBC里一点点拿出数据;而用Python,以Pandas,一句话就能解决数据的读甚至写。
并且,随着计算金融和大数据的兴起,大量程序员开始投入科学计算,相较于Fortran的陈腐、R的浓厚统计数学意味以及Julia的不发达社区,Python自然而然的成了很多人的首选;而经验丰富的程序员又更进一步推动了Python社区的发展,更多优秀的包和模块得到了迅速推广:
矩阵、符号、科学计算?有NumPy、SymPy和SciPy;
统计分析?有Pandas;
可视化?有matplotlib、seaborn;
……
于是,Python很快便在该领域占据了半壁江山。
第三个机会,深度学习
在较早的很长一段时间里,提到机器学习,人们往往会使用C++、Java等作为主要工具。GPGPU的出现使得计算庞杂的机器学习任务开始由CPU向GPU转变,但研究者直接进行GPU编程,在计算复杂的模型时,不仅需要大量心智来分析算法的设计,还不得不投入大量精力解决显卡计算开发中的工程问题,为研究增添了非常大的难度。
随着时间的积累,更多的开源库出现,使得机器学习中主要算法实现抽象成了一个个模块,研究者才得以从繁杂的工程开发中解放出来。此时,代码成了模块的调用和描述,使用诸如C++或Java这样繁杂的工程化语言不再是必要选择,特别是更通用化的深度学习出现,促使研究者需要一种更加易读、易分析的描述性语言(DSL)来解决问题。
而Python因此前在科学计算领域已有广泛应用,加之它能很容易接入现有的C/C++库,以及良好的可读性,成为不少框架的必然选择,如Theano和Caffe。同时,由于AlphaGo亮眼的表现聚焦了众人的注意力,并随后开源了以Python为接口Tensorflow,使得由AI热潮带来的学习者纷纷奔向了Python和Tensorflow。
之后,越来越多的框架都开始提供Python接口——Python能够容易而清晰地描述模型结构,轻松解决计算中的数据输入(无论从硬盘、数据库、网络中的任何一种)问题,简单地实现可视化,并能轻易地设计为Web服务。甚至连使用Lua的Torch都实现了以Python为接口的演进版本PyTorch。至此,Python几乎已经统治了深度学习的模型设计、训练领域。
需要资料的私信小编(资料)获取全套学习资料