我想,每个人可能会根据工作要求的必然条件、兴趣爱好的充分条件,做出相应不同的选择。
也有很多工程师在学习一门新的技术时,会担心自己所学的技术是否会越来越流行,尽量去避免学习了一个非常小众和冷门的技术。
这誉早种担忧是可以理解的,毕竟,一门技术使用的人越多,对于早期学习这门技术的工程师来说,就有越多的好处和优势。
与此同时,如果学习了一门冷门的技术,不但英雄无用武之地,而且,在求职市场上也没有什么优势。
要问我的入门编程语言选择,我首选一定是 Python,其具体原因可以引用一位网友的回答,「学完 Python,可以上天」。
Python 流行度
如果大家身处互联网,一定能够切身地感受到 Python 语言的流行程度。Python 语言由于其简单易学、语法优美、应用领域广泛等诸多优点,俘获了大批的粉丝。
但是,拿不出确切的证据,很多开发者也无法说服自己静下心来学习,接下来我们就用数据来说话。
编程语言排行榜
首先,我们了解一下近期编程语言排行榜中,Python 语言排名的变化。TIOBE 每个月发布的编程语言排行榜是编程语言流行趋势的一个指标,每个月更新。
这份排行榜排名基于互联网上有经验的工程师、课程和第三方厂商的数量,使用搜索引擎进行计算而得,一定程度上反映了编程清虚稿语言的热度。
从近三个月的排行看,Python 一直稳定在排行榜的前五名。但编程语言排行榜仅能反答孝应 Python 语言当下的流行程度,并不能回答 Python 是否越来越流行这个问题。
不过,我们可以从 TIOBE 发布的历史数据中找到一些线索。在 2015 年 2 月份发布的 TIOBE 编程语言排行榜中,Python 还排在第 8 名的位置,短短两年半的时间,Python 语言已经蹿升到第 4 名,其上升速度不可谓不快。
Google trends
既然 TIOBE 的编程语言排行榜是根据搜索引擎得到的数据,那么,我们也可以通过搜索引擎得到 Python 的搜索指数,通过搜索指数来查看 Python 语言热度的变化。图1.1 给出了最近 4 年,Python 这个关键词的 Google 搜索指数。
图 1.1 中可以看到,从全球范围来看,Python 语言是越来越流行的,其热度超过了以往任何时候。
从中国的搜索指数来看,Python 语言已经不是越来越流行这么简单了,而是出现了爆发式的增长。2014 年以前,Python 在中国都属于小众语言,从 2014 年开始,Python 在中国越来越火爆。
一个有趣的事实是,在图 1.1 给出的 Python 搜索指数中,Python 在中国的搜索每年都会有一个非常明显的、向下的尖刺。
这个尖刺所在的时间正好与春节的时间吻合,说明春节对所有中国人都是一个重要的节日,在春节期间,很少有人还在钻研技术了。
微信搜索指数
我们再来看一下最新发布的微信搜索指数中,Python 语言的热度如何。图 1.2 给出了Python、Java、PHP 和 Ruby 的微信搜索指数对比图。
由于微信最多支持 4 个关键词进行比较,因此,我们选择了 Java、PHP、Ruby 与 Python 进行比较。
选择 Java 是因为它是一门比 Python 使用更加广泛的编程语言;选择 PHP 是因为它被认为是“世界上最好的”编程语言;选择 Ruby 是因为,它是所有编程语言中,与 Python 定位最接近的编程语言。
从图中可以看出,Python 语言和 Java 语言的微信搜索指数遥遥领先,并且,Python 语言的微信搜索指数比 Java 语言还要略高一点。
基于以上的编程语言排行榜、Google 搜索指数和微信搜索指数这几个不同的数据来源,检视了 Python 语言的流行程度。
现在,我们可以非常明确的得出一个结论——Python 语言越来越流行,而且现在非常火。
为什么 Python 语言会越来越流行
原因诸多,例如:
越来越多的工程师使用 Python 进行大数据处理。
科研工作者开始使用 Python 来进行数据分析。
系统管理员使用 Python 管理 Linux 系统。
开源的云计算平台 OpenStack 使用 Python 语言开发。
很多编程爱好者使用 Python 进行爬虫等。
-
简单易学:Python 语言相对于其他编程语言来说,属于比较容易学习的一门编程语言,它注重的是如何解决问题而不是编程语言的语法和结构。
正是因为 Python 语言简单易学,所以,已经有越来越多的初学者选择 Python 语言作为编程的入门语言。
例如,在浙江省 2017 年高中信息技术改革中,《算法与程序设计》课程将使用 Python 语言替换原有的 VB 语言。
-
语法优美:Python 语言力求代码简洁、优美。在 Python 语言中,采用缩进来标识代码块,通过减少无用的大括号,去除语句末尾的分号等视觉杂讯,使得代码的可读性显著提高。
阅读一段良好的 Python 程序就感觉像是在读英语一样,它使你能够专注于解决问题,而不用太纠结编程语言本身的语法。
-
丰富强大的库:Python 语言号称自带电池(Battery Included),寓意是 Python 语言的类库非常的全面,包含了解决各种问题的类库。无论实现什么功能,都有现成的类库可以使用。
如果一个功能比较特殊,标准库没有提供相应的支持,那么,很大概率也会有相应的开源项目提供了类似的功能。合理使用 Python 的类库和开源项目,能够快速的实现功能,满足业务需求。
-
开发效率高:Python 的各个优点是相辅相成的。例如,Python 语言因为有了丰富强大的类库,所以,Python 的开发效率能够显著提高。相对于 C、C++ 和 Java 等编译语言,Python 开发者的效率提高了数倍。
实现相同的功能,Python 代码的文件往往只有 C、C++ 和 Java 代码的 1/5~1/3。虽然 Python 语言拥有很多吸引人的特性,但是,各大互联网公司广泛使用 Python 语言,很大程度上是因为 Python 语言开发效率高这个特点。
开发效率高的语言,能够更好的满足互联网快速迭代的需求,因此,Python 语言在互联网公司使用非常广泛。
-
应用领域广泛:Python 语言的另一大优点就是应用领域广泛,工程师可以使用 Python 做很多的事情。
例如,Web 开发、网络编程、自动化运维、Linux 系统管理、数据分析、科学计算、人工智能、机器学习等等。
Python 语言介于脚本语言和系统语言之间,我们根据需要,既可以将它当做一门脚本语言来编写脚本,也可以将它当做一个系统语言来编写服务。
-
Python 的执行速度不够快:当然,这也不是一个很严重的问题,一般情况下,我们不会拿 Python 语言与 C/C++ 这样的语言进行直接比较。
在 Python 语言的执行速度上,一方面,网络或磁盘的延迟,会抵消掉部分 Python 本身消耗的时间;另一方面,因为 Python 特别容易和 C 结合起来。
因此,我们可以通过分离一部分需要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用 Python 脚本将这部分应用连接起来,以提高程序的整体效率。
-
Python 的 GIL 锁限制并发:Python 的另一个大问题是,对多处理器支持不好。如果读者接触 Python 时间比较长,那么,一定听说过 GIL 这个词。
GIL 是指 Python 全局解释器锁(Global Interpreter Lock),当 Python 的默认解释器要执行字节码时,都需要先申请这个锁。这意味着,如果试图通过多线程扩展应用程序,将总是被这个全局解释器锁限制。
当然,我们可以使用多进程的架构来提高程序的并发,也可以选择不同的 Python 实现来运行我们的程序。
-
Python 2 与 Python 3 不兼容:如果一个普通的软件或者库,不能够做到后向兼容,那么,它会被用户无情的抛弃了。
在 Python 中,一个槽点是 Python 2 与 Python 3 不兼容。因为 Python 没有向后兼容,给所有的 Python 工程师带来了无数的烦恼。
找一本浅显易懂比较好的教程。无须多种选择,仅精选一本,从头到尾看完。将教程中的案例自己亲手实践一遍。
通过实际项目练手。如果仅是纸上谈兵,可能过目就忘,所以最好是要有真实的项目做。注意,真实项目不一定非要是商业项目,例如自己动手搭建网站,其关键是要核心功能完整。
最好能找到一个已经会 Python 的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。
但是,笔者认为,Python 语言之所以越来越流行,使用越来越广泛,主要还是得益于其自身的诸多优点。对 Python 的爱与恨,可以归集到那些不得不说的优缺点:
显著的优点
Python 语言拥有诸多的优点,以下几个优点特别显著:
不可忽视的缺点
Python 并不是没有缺点的,最主要的缺点有以下几个:
Python 如何上手?
了解了 Python 的整体趋势及优缺点,接下来自然是如何学习 Python?
在此笔者的建议是:
运维要不要追赶 Python 的热潮?
Python 这么热,运维要不要追赶 Python 的热潮?现阶段,掌握一门开发语言已经成为高级运维工程师的必备技能。
不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试、优化开发人员开发的程序,因为开发人员有的时候很少关注性能的问题。
这些问题就得运维人员来做,一个业务上线了,导致 CPU 使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢? 然后就交给开发人员处理了,这样怎么体现你的价值?
其次,不会一门开发语言的运维,你就不能自己写运维平台复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑。
如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了,话说人家 FaceBook 一个运维工程师管 2 万台机器,运维工程师年薪十几万 USD,你以为人家是盖的呢? 哪个不是身怀绝技,开发运维兼备?
Python 可以用来做什么
在我看来,基本上可以不负责任地认为,Python 可以做任何事情。无论是从入门级选手到专业级选手都在做的爬虫,还是 Web 程序开发、桌面程序开发还是科学计算、图像处理,Python 都可以胜任。
或许是因为这种万能属性,周围好更多的小伙伴都开始学习 Python。Python 现在到底有多热呢?我觉得我们可以看以下的这 2 组数据。
Python 排名稳居前五
如上文的 Python 排行,不多说,得益于 Python 在多个领域的应用都在逐渐变热,Python 在 TIOBE 榜上已经是稳居前 5 了。
越来越多的公司在用 Python 做网站
除了大家熟悉的知乎、豆瓣,已经有越来越多的公司开始用 Python 来快速搭建网站产品。相应的,也有越来越多的公司开设了 Python Web 的职位。
根据我们的统计,目前在招的 Python Web 职位,所需技能按优先级中,Python 基础和 Django 的优先级是最高的。
具体的排序,大致可以参考以下的这张图表:
运维为什么要用 Python
Good question!!!为什么不用 PHP,JAVA, C++,Ruby?
这里我只能说,见人见智, 如果你碰巧已经掌握了除 Python 之外的其他语言,那你爱用啥用啥,如果你是一个连 Shell 都还没写明白的新手,想学个语言的话,请用 Python,为什么呢?
首先,PHP 是跟 Python 比的最多的,其实他俩根本就不用比,为什么呢? 两个语言适用性不同,PHP 主要适用于 Web 开发,可以迅速的做出中小型,轻量级的 Web 网站。
但后端嘛,基本还是要借助其它语言,借助什么语言呢?Shell?Python?呵呵。而 Python 呢,是个综合语言,前后端都可以,单拿出来比 Web,也一点不比 PHP 差,但为什么 Web 方向上 PHP 比 Python 要火?
先入为主嘛,PHP 90 年代诞生就是做 Web 的,Python 2000 年后才出现 Web 框架,但论优秀程度上,Python 的 Web 框架基本上出其无左,至少是跟 PHP 比。
搞个运维小平台,用 Java 真心没啥必要,在我看来,Java 就是稳定的中年男人,稳定、成熟、秃顶,而 Python 代表的就是青春,简洁、快、干净、帅!
C++/C,这个嘛,我只能说,如果你会了 Python,又会 C 的话,那你会更吃香,但是不会 C 的话,其实也无大碍。但对新手来讲,不建议把 C 做为第一门语言开始学习,为什么呢?打击自信心…呵呵,你懂的。
Ruby,日本开发的,还不错,风格跟 Python 有点像,因为 Ruby on rails 出了名,国外用的比较多,国内,放心吧!没戏,Python 已经把它的想象空间都占死了。
当然还有新的语言 GO,有些搞运维的看见做开发的人员搞 GO,也想凑热闹,觉得是未来,我想说,别没事跟风,GO 再成功,也不会变成运维开发语言。
一个博士讲过一句话,他说:程序效率高低,80% 都是写程序的人决定了,语言本身就占 20%。
所以下次有人再说 Python 效率低的时候,请让他先回去自己检查下自己的程序多了多少无用的逻辑、循环等等。
这个博士自己用 Python 写的 Web 程序,一台服务器每天能处理上亿请求,一秒并发近两万,什么 Web 框架这么牛 B?别问它是谁,它叫 tornado。
在选择使用哪一门编程语言之前,我还想提醒读者的是——“世界上只有两种编程语言,一种是天天被人吐槽但却被广泛使用的编程语言,一种则是无人问津没有存在感的编程语言”。
Python 语言作为排名第一的动态类型语言,自然有它的道理。如果我们充分了解它的优缺点,在使用的时候,取其精华去其糟粕,那么,Python 一定是工程师解决问题的一把利剑。
--来自wechat公众号《51CTO技术栈》