在编程领域。Python语言已经被吹得神乎其神。很多人已经产生了一种错觉:仿佛当今编程世界,唯Python莫属,其它语言皆为渣渣。
就连地产大佬潘石屹也发微博为Python背书,不愧两者都姓“潘”。媒体也经常爆料小学生学Python的例子,搞的再不学Python就被世界OUT了一样。
一、Python为什么这么火?
Python这门语言其实1982年就已经诞生了。诞生的初衷就是成为一种功能全面,易学易用,可拓展的语言。之所以到现在才火起来。其实也是时代所造就的。
编程语言的发展经历了几个时代:机器码时代。汇编语言时代,面向过程的语言时代、面向对象的语言时代
在机器码和汇编语言时代,要想写出一个程序,需要用0和1给计算机下达命令,或者语言掌握复杂的汇编指令,还需要学习计算机的底层原理,甚至那时候计算机的内存都是以kb为单位的,一个大的数组就能占满内存,编程的时候还需要考虑内存的溢出这些问题。这种方式编程效率低,而且费脑子,所以那个时候的程序员是一个非常专业的工种,门槛极高。
随着计算机硬件性能的提升,出现了以C语言为代表的面向过程语言。C语言可以用编程语句编写程序,在编译执行时再由编译器转为汇编语言给计算机执行。这样更符合人的思考逻辑,而且免去了记忆大量汇编语句的烦恼。
但是C语言这种面向过程的编程语言就算一个最简单的排序算法都要自己亲手实现。而随着计算机科学发展的成熟,出现了java等面向对象的语言,将常用的算法封装,用的时候直接调用,让编程大大简化。我们现在用的很多大型程序的后台就是用java写的。但是,java因为需要考虑系统的安全性和效率,对程序员还是做了不少的规范,虽然相对于汇编和C语言已经大大提高了写代码的效率,但是依然加上了很多限制。
但python不一样,他出现的初衷就是快速实现各种功能,是最放飞自我的语言。再加上设计了很好的包的调用机制。可以说在写程序的过程中怎么简单怎么来。所以能够快速实现自己的想法,再加上包管理机制做的非常好,可以随时从网上下载开源的Python包来复用他人的能力。
牺牲程序运行效率换区编程效率为什么现在会有市场呢?一是计算机性能越来越高,大多数人普通的小程序还没有到榨干计算机性能的时候,二是新一波人工智能潮来临,人工智能需要快速调参验证。就像做数学题之前需要打草稿一样,大家需要一门可以快速实现自己算法思路的草稿,再敏捷调整,Python完美地符合了这些要求。三是各路大神们迅速基于python开发了成熟的机器学习包供大家调用,迅速构建了整个生态。基于以上,python的流行也是大势所趋。
二、Python真的有这么神吗?
Python虽然简单易用、功能强大,但确实被捧得太高了,它和其他编程语言一样,本质上就是一个工具。工具的意思是:你可以用它来更好地放大你的能力,而不是有了这个工具你就拥有了相应的能力。同样的一根笔,毕加索拿在手里就可以画出世界名画,而你拿在手里可能就只能歪歪扭扭写几个字;同样的一架钢琴,放在贝多芬面前可以弹奏出世界名曲,放在你面前只能弹弹棉花。
这个工具的特点有两个:
1、相对其他语言来说编程时没有那么多的限制,所以入门比较容易,是非专业人士与计算机交流最便捷的方式。
2、几乎各个领域都有现成的包,可以快速复用他人代码。
然而缺点也很明显:正因为对于编写人员比较友好,计算机就要花更多的算力去解析、编译程序,所以运行效率注定不会太高。
既然是工具,就是为了解决问题而服务的,如果你工作生活中并不能用到它,那他对你来说就没什么用,没必要浪费时间去学,非要让游泳冠军去练长跑那不就是在浪费时间吗?
三、Python能用来干什么?
目前来说,Python的主要用途有以下几个:
1、机器学习/深度学习。前面已经说过,这也是Python的主要应用领域,值得一提的是,Python更像是对模型打草稿的工具,很多工业界需要落地的机器学习模型,还是需要用c++或者java重新实现一遍的。而且虽然Python是人工智能的必备语言,但是绝不是把大量精力投入到这门语言的学习。机器学习的基础知识才是你未来最核心的竞争力。
2、爬虫。现在Python已经封装好了非常完善的爬虫包,只需要调用这些函数就可以了,所以这条技术路线的天花板也是显而易见的。Python爬虫只是帮助你更方便地从互联网获取数据,有了爬下来的数据之后,他们有什么意义,是否能够产生业务价值才是一个公司真正关心的事情。所以这条路最终的归属还是要转到数据分析或者机器学习。
3、后端开发。国内大一点的互联网企业,只有知乎和豆瓣两个后端完全用Python开发的。其他大厂大多数都是用Java来开发后端的,最多是嵌入一些Python的脚本来辅助。所以市场上招聘Python开发程序员的岗位并没有Java程序员多,再加上目前学的人还多,所以Python后端开发程序员找工作难度远远大于Java后端程序员。
4、软件测试。简单来说就是程序员开发好程序,你来通过不同角度检查程序有没有毛病。因为Python可以模拟人鼠标键盘的各种操作,而且也可以快速生成随机数据,所以是极好的自动化测试工具。不过这个工作难度也不是很高,天花板较低。
5、编写自动化脚本。这个方面涉及的东西就很多了,如果Python应用得当,会显著提高你的工作效率。比如自动化处理excel报表(相当于实现很多excel的函数功能,但是比excel函数更灵活)、开发一些有趣的小程序、小插件等。知乎上搜索“Python可以用来干什么”,往往会看到各路大神给出的各种小应用。但是这方面的应用一般给公司产出不了很多明显的价值,更多是极客们的自娱自乐,企业级项目还是用java用得居多。
四、是否需要学习Python
明确了这个工具能做什么,是否需要学习Python,也许你心里已经有了答案:
如果你有数学/统计学或者其他工科背景。没有编程经验,而又有意向进入人工智能领域,那么学Pyhon来放大你的数学能力是完全没有问题的。
如果你是个需要经常处理excel的表哥表姐,而且有些需求用excel的函数还没有办法实现,可以考虑用Python提高你的数据处理效率。
如果你是个非常有创意的人,借助于Python的力量,你可以将自己的创意变成程序在计算机上实现,放在市场上看看,运气好了,说不定就诞生个价值千万的项目呢。
如果你是刚进入计算机专业的学生,还是建议主要学java(当然也可以先用Python来入门),一方面,精通java之后,python顺带就学会了。另一方面,要想真正成为一名合格的程序员,还需要学算法,数据结构,计算机系统等知识,很多相关领域经典书籍都是用java或者c写的,用相同的语言便于照着书上自己实践。先打好基础,以后转型机器学习也会方便很多。
如果你已经是一名专业的后端开发程序员,而且也没有随大流转行人工智能领域的意思,只需要在空闲时间去看看Python的特性,说不定对自己的开发有所帮助。
如果你特别好奇编程这个神奇的世界。或者是python这门神奇的语言,也可以没事的时候去学习一下,说不定会开拓一个神奇的世界。
如果你没有以上这些需求,就算python吹得再神,对你也是没有用的。即使它是把屠龙宝刀,你拿着他去切菜也完全不如找一把普通的菜刀好使。
最后,编程语言只是一门工具,它不代表你的能力,只代表你选择的方向,而方向的选择恰恰并没有绝对的对和错。