网友提问:
大数据时代,Python会是最好的语言吗?
优质回答:
昨天刚好写了篇Python的文章,应该能回答这个问题。具体如下:
为什么要说Python
先说说编程语言,这里有一些梗,程序员之间因为使用不同的编程语言一直都存在着很多鄙视链,比如写汇编的鄙视写 C 的,写 C 的鄙视写 C++的,写C++的鄙视 写 C#,写Java 的鄙视前面所有和C相关的程序员,天天写脚本的程序员又一起鄙视 Java 程序员,写静态语言的和写动态语言的相互鄙视,写前端的和写后端的相互鄙视,Vim 程序员和 Emacs 程序员相互鄙视,然后一起鄙视需要使用 IDE 的程序员。还有一条最劲爆的,所有其他语言的程序员都鄙视 PHP 程序员,因为PHP 程序员说,PHP 是世界上最好的编程语言。
说了这么长长的一条鄙视链,只是为了引出今天的重点——Python。同「PHP 是世界上最好的编程语言」一样举世无双的,我们也有一句心法,是Python之父的名言:人生苦短,我用 Python。
Python功能强大,使用简单,实现一个功能往往只有一种方法。在我刚毕业工作的时候,就接触了Python和Perl两种脚本语言。这两种语言也可以说是非常鲜明的对比,在实现一个功能的时候,Perl 会有十八种实现方法,而且Python可能只有一种。Python开发者的哲学就是“用一种方法,最好是只有一种方法来做一件事”。
在池老师的文章里看到过有程序员这么评价Python:
免费,简洁,生态好,库丰富,操心少;之前刷机器学习的题,用 C# 写了一坨儿。结果人家引个 SciPy 库,三行代码搞定
这个评价我也是高度赞同。Python的生态环境确实很好,让你在开发的时候几乎不用操心太多。
AI时代的宠儿
Python有太多的适合机器学习的库了,而且都可以免费使。比如SciPy 是一个数值计算库,NumPy 是Python 另一个开源的数值计算扩展库,Pandas是基于 NumPy 的数据分析工具,matplotlib 是图形绘制库,最近火热的 Scikit-learn则是开源的机器学习框架。
也正因为这样,在AI时代,Python渐渐地变成了时代的宠儿。不知道如果AI真的这么一直发展下去,久而久之,Python会不会变成Excel这样的工具,人人都会用,事事都可用。
看看最新出炉的兵器排行榜,Python牢牢的占据着第4名。
Python其实不仅在做机器学习上是把好手,还有很多方面都是一流高手。比如有Scrapy这样优秀的做爬虫框架,强大的文本处理功能,Djnago这样出色的Web开发框架,还可以做自动化测试和运维以及数据分析等等。
所以,我认为无论是已经工作了的同学们或者是还在学校的同学们,多多少少都可以学习一些Python。如果是想要投身机器学习人工智能怀抱的,更是可以趁早开始了。
并不是天下无敌,也有自身的不足
Python自身的不足其实也挺多的。
首先语法上自成一派,让很多老手感到不习惯(比如语句结束不需要分号)。
其次Python 的速度很慢,在不同的任务上比C 语言大约慢数十倍到数千倍不等
再者由于全局解释器锁(GIL)的限制,单个Python 程序无法在多核上并发执行;(这个我不知道Python3是什么样的,没有去仔细研究过了,欢迎读者里的大神指点一下)。
不过最让人头疼的是,Python 2 和 Python 3 两个版本长期并行,各成一派,很多模块需要同时维护两个不同的版本,给开发者选择带来了很多不必要的混乱和麻烦。至于为什么Python 2 和 Python 3 会长期共存了数年之久,原因很复杂,我也说不清楚。但目前官方表示对 2 的支持到2020年。可能新入坑的同学会很纠结,Python2 的生态库远远大于Python3,那么应该要学习哪个版本呢?
我的建议是两个版本都学,语法上的差别也不是很大,如果非要选择一个先开始的话,我选Python2。(不要问我为什么,就是这么任性)
图片来自廖雪峰的Python教程
如何学习Python
扯了这么多,最后一部份放点干货,我们聊聊要如何学习Python。就我本人来说,会学Python,完全是机缘巧合,因为刚工作的时候,组里没人对Python特别熟,我是被安排自学研究Python,以备日后需要。学着学着,我慢慢的把开发的重心都转移动Python上面了。
要开始开发,先要安装,这里就不详细说了,说了你也记不住,macOS自带就有,其它系统网上搜一下,一大堆。
有了环境就需要开始学语法了。初学一门新的编程语言的语法时,我会先把赋值、条件判断和循环这三种语句学会了,这时其实基本的操作就都可以做了,然后再去扩展一些语言独特的东西,在Python里,你可以学习Python需的面向对象是怎么做的,学一些map,filter, lambda这样的高阶用法。然后估计有个3,5天的时间,就可以开始开发第一个Python应用程序了。
对于新手,在选择应用程序方向的时候,建议选择一个自己感兴趣的方向,例如对爬虫感兴趣,可以尝试写个Python爬虫去抓取微博或今日头条的内容, 对web应用感兴趣可以开发个人网站,如果有机器学习算法基础,可以用Python来实现你平时的算法,找个数据集来跑跑(这方面我也比较弱,正在恶补学习中,欢迎有兴趣的同学一起来研究)。再或者可以做个推荐系统,算法可以参照我之前的一篇文章(推荐系统入门),可用Python来实现一个小型的推荐系统。(最近自己刚刚实现了一下这个程序,有兴趣的同学需要帮助可以留言)
人生苦短,我用 Python!大家一起加油吧。
欢迎大家关注我,你的关注就是我坚持下去最大的动力。另外大家有什么建议或有什么想了解的,也欢迎留言给我,谢谢。
其他网友回答
现如今,Python 的踪影可以说是无处不在。简洁、开源、灵活是这款工具的最大特点。在计算机世界中,Python 的象征物是蟒蛇,而蟒蛇表征的恰恰是灵活性。这一切都使得 Python 特别适合于大数据,所以数据分析和挖掘的最佳工具非 Python 莫属了。但是 Python 并非擅长一切,比如 Java 更多用于工具开发,Matlab 则用于数值计算及矩阵运算。
目前在数据分析和挖掘算法方面用的最多的编程语言有:Java、C++、C、Python、R 等等。与其他相比,Python 具有以下优点:
Pythond vs. Java
Python更简洁,Java过于庞大复杂,语法很多
Python vs. C C++
Python更容易学习,语法简单易懂,但他们通常扮演不同的角色,Python是一种脚本语言,C和C++通常要和底层硬件打交道
Python vs. R
R 和 Python 一样,简单易上手,相比于 Java、C++、C,投入的时间精力相对少很多。在数据方面,R 和 Python 具有以下共同的优势:
Python 和 R 本身在数据分析和数据挖掘方面都有比较专业和全面的模块,很多常用的功能,比如矩阵运算、向量运算等都有比较高级的用法,所以使用起来产出比大。
这两门语言对于平台方面适用性比较广,Linux、Window都可以使用,并且代码可移植性还算不错。
对于学数理统计的人来说,应该大多用过 MATLAB 以及 mintab 等工具,Python 和 R 比较贴近这些常用的数学工具,使用起来有种亲切感。
但是相对于 R 语言,Python 的优势在于兼顾了效率和性能,而且 Python 的可扩展性很强,你可以用 Python 开发商业化的产品,但用 R 估计不可能,R 语言做研究还行。所以,Python 在机器学习领域的人用的较多。据我所知,做市场调研、计量经济学、统计学的人几乎没有用Python的。
以上。所以Python 目前是大数据时代最好的语言。