如果让你从数百种的编程语言中选择一个入门语言?你会选择哪一个?

是应用率最高、长期霸占排行榜的常青藤 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. Linux下数百种Windows软件的免费替代品列表

    Linux下数百种 Windows 软件的免费替代品列表 程序所执行任务的描述 Windows Linux 1) 网络连接 网页浏览器 微软 IE,网景 Netscape / Mozilla, Ope ...

  2. 代码发芽网:无需插件支持Blog代码高亮,支持近百种编程语言

        写博客时,没有代码高亮?     发邮件时,代码格式很乱?     有好代码,保存后很难找? 代码发芽网:     无需插件支持Blog代码高亮     支持近百种编程语言     多种配色主 ...

  3. python语言怎么学-Py列为黑客应该学的四种编程语言之一 新手该怎么学

    在开始前先简单和大家说一说:Python是什么.呢? 也许最初设计Python这种语言的人都没有想到今天Python会在工业和科研上获得如此广泛的使用.著名的自由软件作者Eric Raymond在他的 ...

  4. python是一种动态语言这意味着_Python如何能成为全球最受欢迎的编程语言?该不该学Python?...

    全文共3304字,预计学习时长10分钟 图源:(Python logo courtesy of https 有一种语言在过去十年受喜爱度一路飙升,成为最受欢迎的一种编程语言,它是谁? 千呼万唤始出来, ...

  5. 编程入门python语言是多大孩子学的-入门编程语言,让你想学Python的几个优点!...

    关注我让代码变得有趣 对于新手小白想入门编程语言来说python是一款非常合适的语言.python是一个高层次的脚本语言,它具有很强的可读性.同时它还是解释型,交互式.面相对象的语言.非常适合初学者入 ...

  6. python的for语句是否只有一种写法_跟老齐学Python之for循环语句

    废话少说,上干活. for的基本操作 for是用来循环的,是从某个对象那里依次将元素读取出来.看下面的例子,将已经学习过的数据对象用for循环一下,看看哪些能够使用,哪些不能使用.同时也是复习一下过往 ...

  7. 微课|中学生可以这样学Python(例11.2):tkinter猜数游戏(1)

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第11章  综合案例设计与分析 例11.2  tkinter版猜数游戏 京东购买链接:https: ...

  8. 微课|中学生可以这样学Python(例11.2):tkinter猜数游戏(2)

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第11章  综合案例设计与分析 例11.2  tkinter版猜数游戏 京东购买链接:https: ...

  9. 微课|中学生可以这样学Python(例11.2):tkinter猜数游戏(3)

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第11章  综合案例设计与分析 例11.2  tkinter版猜数游戏 京东购买链接:https: ...

最新文章

  1. python爬虫需要调用什么模块_python爬虫需要调用什么模块
  2. ninject 的 实现 的 理解
  3. linux shell 学习
  4. jQuery动态设置输出窗口的高度
  5. 全面涵盖传统方法和深度学习方法:3D人脸识别的十年发展及未来趋势
  6. mysql导入数据表越来越慢,快速解决mysql导数据时,格式不对、导入慢、丢数据的问题...
  7. 【FZU - 2039】Pets(二分图匹配,水题)
  8. c语言生成迷宫算法,[原创]递归随机迷宫生成算法详解
  9. java读取http文件内容_使用HTTP读取文件的第一部分
  10. Java无线数据增值业务概述
  11. java swing 提示信息,java swing工具提示与不同的消息
  12. 如何在Global.asax文件中实现定时采集新闻
  13. Excel高级使用技巧汇总
  14. 各种分类算法优缺点比较
  15. 基于KNN的离群点检测算法的Matlab版实现
  16. “挖坑填坑”理解快速排序
  17. 超百万人用它生成3D头像,这项技术刚刚中选了SIGGRAPH Asia 2022
  18. 什么是项目管理,如何做好项目管理?
  19. 最全的Office 2003图标集合
  20. Web自动化【7】——python 使用QQ邮箱发送邮件,端口号25,465,578,的区别,及错误码535,530的解决办法

热门文章

  1. Linux shell笔记5 基本文本处理
  2. Qt快速绘制像素点的处理方法
  3. C++自定应线程安全数据结构(1)
  4. Flutter进阶—质感设计之标签栏
  5. 中国特技飞机市场趋势报告、技术动态创新及市场预测
  6. 电阻带行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. vue前端框架面试问题汇总,附答案
  8. Vue+Webpack使用规范
  9. 200 多个 npm 包被攻击,Azure 开发者请注意
  10. 一枚比特币变换一台车,特斯拉与比特币还要绑定多久?