社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

数百种编程语言,我为什么只学Python?

51CTO技术栈 • 8 年前 • 470 次点击  

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


是应用率最高、长期霸占排行榜的常青藤 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 语言拥有诸多的优点,以下几个优点特别显著:

  • 简单易学: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 的执行速度不够快:当然,这也不是一个很严重的问题,一般情况下,我们不会拿 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 的热潮?现阶段,掌握一门开发语言已经成为高级运维工程师的必备技能。


不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试、优化开发人员开发的程序,因为开发人员有的时候很少关注性能的问题。


这些问题就得运维人员来做,一个业务上线了,导致 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 一定是工程师解决问题的一把利剑。


最后给大家推荐 51CTO 学院为您精选的 Python 免费试学课程


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/RXqWS4sVjG
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4261