是应用率最高、长期霸占排行榜的常青藤 Java?是易于上手,难以精通的 C?还是在游戏和工具领域仍占主流地位的 C++?亦或是占据 Windows 桌面应用程序半壁江山的 C#?……

我想,每个人可能会根据工作要求的必然条件、兴趣爱好的充分条件,做出相应不同的选择。也有很多工程师在学习一门新的技术时,都会担心自己所学的技术是否会越来越流行,尽量去避免学习了一个非常小众和冷门的技术。这种担忧是可以理解的,毕竟,一门技术使用的人越多,对于早期学习这门技术的工程师来说,就有越多的好处和优势。与此同时,如果学习了一门冷门的技术,不但英雄无用武之地,而且,在求职市场上也没有什么优势。要问我的入门编程语言选择,我首选一定是 Python,其具体原因可以引用一位网友的回答,「学完 Python,可以上天」。

 
图片来源于网络

Python 流行度

如果大家身处互联网,一定能够切身地感受到 Python 语言的流行程度。Python 语言由于其简单易学、语法优美、应用领域广泛等诸多优点,俘获了大批的粉丝。但是,拿不出确切的证据,很多开发者也无法说服自己静下心来学习。接下来我们就用数据来说话。

编程语言排行榜

首先,我们了解一下近期编程语言排行榜中,Python 语言排名的变化。TIOBE 每个月发布的编程语言排行榜是编程语言流行趋势的一个指标,每个月更新。这份排行榜排名基于互联网上有经验的工程师、课程和第三方厂商的数量,使用搜索引擎进行计算而得,一定程度上反应了编程语言的热度。

 
2017年9月TIOBE编程语言排行榜  
2017年10月TIOBE编程语言排行榜  
2017年11月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 的 Google 搜索指数

图1.1中可以看到,从全球范围来看,Python 语言是越来越流行的,其热度超过了以往任何时候。从中国的搜索指数来看,Python 语言已经不是越来越流行这么简单了,而是出现了爆发式的增长。2014 年以前,Python 在中国都属于小众语言,从 2014 年开始,Python 在中国越来越火爆。一个有趣的事实是,在图 1.1 给出的 Python 搜索指数中,Python 在中国的搜索每年都会有一个非常明显的、向下的尖刺。这个尖刺所在的时间正好与春节的时间吻合,说明春节对所有中国人都是一个重要的节日,在春节期间,很少有人还在专研技术了。

微信搜索指数

我们再来看一下最新发布的微信搜索指数中,Python 语言的热度如何。图 1.2 给出了Python、Java、PHP 和 Ruby 的微信搜索指数对比图。

 
图 1.2 Python的微信搜索指数

由于微信最多支持 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 语言拥有诸多的优点,这其中,以下几个优点特别显著:

  1. 简单易学: Python 语言相对于其他编程语言来说,属于比较容易学习的一门编程语言,它注重的是如何解决问题而不是编程语言的语法和结构。正是因为 Python 语言简单易学,所以,已经有越来越多的初学者选择 Python 语言作为编程的入门语言。例如,在浙江省 2017 年高中信息技术改革中,《算法与程序设计》课程将使用 Python 语言替换原有的 VB 语言。

  2. 语法优美: Python 语言力求代码简洁、优美。在 Python 语言中,采用缩进来标识代码块,通过减少无用的大括号,去除语句末尾的分号等视觉杂讯,使得代码的可读性显著提高。阅读一段良好的 Python 程序就感觉像是在读英语一样,它使你能够专注于解决问题,而不用太纠结编程语言本身的语法。

  3. 丰富强大的库: Python 语言号称自带电池(Battery Included),寓意是 Python 语言的类库非常的全面,包含了解决各种问题的类库。无论实现什么功能,都有现成的类库可以使用。如果一个功能比较特殊,标准库没有提供相应的支持,那么,很大概率也会有相应的开源项目提供了类似的功能。合理使用 Python 的类库和开源项目,能够快速的实现功能,满足业务需求。

  4. 开发效率高: Python 的各个优点是相辅相成的。例如,Python 语言因为有了丰富强大的类库,所以,Python 的开发效率能够显著提高。相对于 C、C++ 和 Java 等编译语言,Python 开发者的效率提高了数倍。实现相同的功能,Python 代码的文件往往只有 C、C++ 和 Java 代码的 1/5~1/3。虽然 Python 语言拥有很多吸引人的特性,但是,各大互联网公司广泛使用 Python 语言,很大程度上是因为 Python 语言开发效率高这个特点。开发效率高的语言,能够更好的满足互联网快速迭代的需求,因此,Python 语言在互联网公司使用非常广泛。

  5. 应用领域广泛: Python 语言的另一大优点就是应用领域广泛,工程师可以使用 Python 做很多的事情。例如,Web 开发、网络编程、自动化运维、Linux 系统管理、数据分析、科学计算、人工智能、机器学习等等。Python 语言介于脚本语言和系统语言之间,我们根据需要,既可以将它当做一门脚本语言来编写脚本,也可以将它当做一个系统语言来编写服务。

不可忽视的缺点

毫无疑问,Python 确实有用很多的优点,每一个优点看起来都非常吸引人。但是,Python 并不是没有缺点的,最主要的缺点有以下几个:

  1. Python 的执行速度不够快。当然,这也不是一个很严重的问题,一般情况下,我们不会拿 Python 语言与 C/C++ 这样的语言进行直接比较。在 Python 语言的执行速度上,一方面,网络或磁盘的延迟,会抵消掉部分 Python 本身消耗的时间;另一方面,因为 Python 特别容易和 C 结合起来,因此,我们可以通过分离一部分需要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用 Python 脚本将这部分应用连接起来,以提高程序的整体效率。
  2. Python 的 GIL 锁限制并发: Python 的另一个大问题是,对多处理器支持不好。如果读者接触 Python 时间比较长,那么,一定听说过 GIL 这个词。GIL 是指 Python 全局解释器锁(Global Interpreter Lock),当 Python 的默认解释器要执行字节码时,都需要先申请这个锁。这意味着,如果试图通过多线程扩展应用程序,将总是被这个全局解释器锁限制。当然,我们可以使用多进程的架构来提高程序的并发,也可以选择不同的 Python 实现来运行我们的程序。
  3. Python 2 与 Python 3 不兼容: 如果一个普通的软件或者库,不能够做到后向兼容,那么,它会被用户无情的抛弃了。在 Python 中,一个槽点是 Python 2 与 Python 3 不兼容。因为 Python 没有向后兼容,给所有的 Python 工程师带来了无数的烦恼。

如何上手?

了解了 Python 的整体趋势及优缺点,接下来自然是如何学习 Python?在此笔者的建议是:

  • 找一本浅显易懂比较好的教程,无须多种选择,仅精选一本,从头到尾看完。将教程中的案例自己亲手实践一遍。
  • 通过实际项目练手。如果仅是纸上谈兵,可能过目就忘,所以最好是要有真实的项目做。注意,真实项目不一定非要是商业项目,例如自己动手搭建网站,其关键是要核心功能完整。
  • 最好能找到一个已经会 Python 的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。

以下,本文也整理了一些有关 Python 学习及指导资料:

  1. 不少开发者纠结 Python 的入门究竟该从 2.x 还是 3.x 开始学起?毕竟 Python 2.x 与 3.x 不兼容。 所以我们该如何抉择?又该如何快速着手呢?详情可查看「疯狂上涨的 Python,开发者应从 2.x 还是 3.x 着手?」。

  2. Python 编程的核心知识有哪些?是否有比较通俗易懂的经验分享?详情可查看「一文总结学习 Python 的 14 张思维导图」。

  3. 技巧篇:「编写高质量Python代码的5个优化技巧」

  4. Python 的案例分享:

    • 「一小时入门 Python 3 网络爬虫」
    • 「从 500 万条的微博语料对鹿晗、关晓彤微博的热门评论进行情感分析」
    • 「国庆去哪里人最多?用 Python 抓取的热力图告诉你!」
    • 「用不到 50 行的 Python 代码构建最小的区块链」

最后,在选择使用哪一门编程语言之前,我还想提醒读者的是——“世界上只有两种编程语言,一种是天天被人吐槽但却被广泛使用的编程语言,一种则是无人问津没有存在感的编程语言”。Python 语言作为排名第一的动态类型语言,自然有它的道理。如果我们充分了解它的优缺点,在使用的时候,取其精华去其糟粕,那么,Python 一定是工程师解决问题的一把利剑。

而你为什么学 Python 呢?欢迎在下方留言,分享你的独特见解,也希望能为程序员界的后起之秀一些编程语言抉择的方向。

作者:赖明星,资深云平台开发工程师、数据库内核开发工程师和高级运维工程师,现就职于腾讯CDG(企业发展事业群),曾就职于网易,网易云数据库MySQL云平台、MongoDB云平台的核心开发人员,网易大规模MySQL系统运维的负责人,独立完成MySQL存储引擎的TNT自动化研发和测试。出版作品《Python Linux系统管理与自动化运维》。

整理:苏宓。

为何学Python(转)相关推荐

  1. 老齐学python的django 源代码_《跟老齐学Python:Django实战》真正的手把手“带”您学习...

    全书通过不断升级改造的方式,带着读者完成了一个"极其"简单的实战项目.这里说简单是相对于那些"大牛"而言.如果您是大牛,齐老师会建议您使用谷歌或者读官方英文文档 ...

  2. python queue 调试_学Python不是盲目的,是有做过功课认真去了解的

    有多少伙伴是因为一句'人生苦短,我用Python'萌生想法学Python的!我跟大家更新过很多Python学习教程普及过多次的Python相关知识,不过大家还是还得计划一下Python学习路线!Pyt ...

  3. 想转行学python过来人提醒大家几点

    因为目前python非常火,应用也非常广泛,是目前最火的行业之一,竞争很大,工资很高,未来发展也极好. 首先告诉你,零基础学习python难度还是有的,python的专业程度本身就不简单,学习这事本来 ...

  4. 从零开始学 Python 之运算符

    从零开始学 Python 之运算符 前言 大家好,这里是「痴海」从零开始学习 Python 系列教程.此文首发于「痴海」公众号,欢迎大家去关注.学习一门语言最好的办法,就是教懂别人.在这公众号,我会从 ...

  5. 学Python培训有什么用

    ​ Python在近几年的发展非常迅速,在互联网行业Python的薪资也越来越高,不少人开始准备学习Python技术,那么到底学Python培训有什么用呢?来看看下面的详细介绍. 学Python培训有 ...

  6. 学Python有哪些优势

    Python在人工智能领域应用是比较广泛的,近几年,越来越多的人对Python技术比较感兴趣,想要学习,那么具体学Python有哪些优势呢?我们来看看下面的详细介绍就知道了. 学Python有哪些优势 ...

  7. 学python培训到底能干嘛

    Python是在人工智能领域发挥着很重要的作用的,现在依旧有很多人对Python这项技术不是很了解,学Python培训到底能干嘛?下面小编来为大家做下详细的介绍. python其实并不难学,对于初学者 ...

  8. 学Python的好处有哪些?

    Python是一种比较简单的编程语言技术,想要快速进入到IT行业,Python是非常好的选择,为什么这么说呢?下面小编就为大家详细的介绍一下学Python的好处有哪些? ​ 学Python的好处有哪些 ...

  9. 零基础学python培训需要学习多久?

    Python是一种入门比较简单的编程语言,但是如果是零基础学员,学习起来还是需要时间的,那么零基础学python培训需要学习多久呢?我们来看看小编的详细介绍吧. 零基础学python培训需要学习多久? ...

  10. 我用python10年后,我发现学python必看这三本书!

    非常喜欢python 我非常喜欢python,在前面5年里,它一直是我热衷使用并不断研究的语言,迄今为止,python都非常友好并且易于学习! 它几乎可以做任何事,从简单的脚本创建.web,到数据可视 ...

最新文章

  1. 【ArcGIS遇上Python】Python实现点转栅格(PointToRaster)
  2. 使用Spring Integration Java DSL与Rabbit MQ集成
  3. uboot启动第二阶段——start_armboot
  4. 你活了多久----快用Python计算一下日期
  5. 寻找必败态——一类博弈问题的快速解法
  6. 找不到文件或程序集名称“DreamweaverCtrls”的解决方法
  7. 厉害了!他是 Facebook 开国元老,30 分钟解决 Instagram 服务器挂机难题
  8. [转载] 利用python制作简单计算器
  9. [USACO 09FEB]Fair Shuttle
  10. MiniProfiler工具介绍
  11. 010 Editor
  12. python3数据科学入门与实战技巧_Python3数据科学入门与实战
  13. 创建mysql表sql语句_mysql创建表的sql语句
  14. 使用PowerShell查看Windows 补丁记录并写入数据库
  15. 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA)
  16. uniapp 网易云音乐app项目总结
  17. Linux的基本知识和基础操作
  18. 4.5 拉普拉斯定理
  19. EJB初探(二)为什么需要EJB
  20. 双向链表(java语言实现)

热门文章

  1. 掌握这个学习方法,让3d建模 不再从入门到放弃
  2. Windows 下 Gambit 启动脚本
  3. Interview之NLP:人工智能领域求职岗位—自然语言处理NLP算法工程师职位的简介、薪资介绍、知识结构之详细攻略
  4. android接入阿里百川商务SDK
  5. Java项目:(小程序)幼儿园报名系统(java+weixin-java-mp+spring+spring mvc+mybatis+layui+微信小程序)
  6. python爬取天天基金网所有基金数据
  7. 算法的“有毒泡泡”,当真可以戒掉吗?
  8. Oracle 数据库的备份与恢复
  9. python Scrapy Selenium PhantomJS 爬取微博图片
  10. CLRS 5.2指示器随机变量