作者 谢恩铭 转载请注明出处
公众号「程序员联盟」(微信号:ProgrammerLeague )
原文:http://www.jianshu.com/p/08ca8573e681


编程语言之争从来不曾停止,这篇文章绝对不会去讨论哪个语言是最好的(当然了,除了「PHP 是世界上最好的语言」这句「真理」之外)。

插句题外话,不要听一些人说:「编程语言没有好差之分,只有用起来顺不顺手」。这话其实不正确,编程语言就是有好差之分,有些编程语言就是设计得不好,就是不适合一般的应用,就是无人问津。

我想谈谈最近几个月以来我的感受:

「我深刻地认识到 Python 是当下迫切应该学习的编程语言」。

为什么这么说呢?且听我慢慢「因式分解」:

  1. Python 最近很火,非常火。这和人工智能(AI :Artificial Intelligence)有关。Python 有很多优秀的库,特别适合数***算和科学计算,而人工智能就需要很多计算和一些算法,因此 Python 的很多库比如 Numpy,Pandas 等就有用武之地了。而且很多大公司启动了适合人工智能的库或项目,比如 Google 公司发布的开源机器学习库 TensorFlow,Tesla(特斯拉)的 OpenAI,等等。这些库上层都可以很方便地用 Python 来操作。其中 Google 的 AlphaGo 击败了人类最强围棋(Go)玩家李世石,而 AlphaGo 是基于 Google 的 DeepMind,DeepMind 前不久宣布宣布底层基于 Tensorflow 了。特斯拉的 OpenAI 在单人对抗中击败了人类最强的 Dota 2 影魔选手之一的 Dendi,完整对战视频
OpenAI 和人类选手 Dendi 的 Dota 2 单人对决
  1. Python 非常容易入门。Python 号称「Battery included」,我们知道 battery 是「电池」的意思,included 是「包含」的意思,因此就是说 Python 简单到「已经包含了电池了」,功能都已经包含在语言里了,直接拿来用即可。其语法实在很简单,基本没有编程经验的孩子几天也可以学会。

  2. Python 几乎可以被应用在任何领域。人工智能、科学计算领域自然不用说,各种成熟的库调用起来极为方便;大数据领域也是 Python 大展拳脚之处;云计算领域 Python 可以发挥实力,比如著名的 Dropbox 就是 Python 写的;用 PyGame 可以进行快速游戏开发;GUI 图形界面编程也不在话下,Matplotlib 这个绘图库可以满足你;嵌入式领域,著名的树莓派(Raspberry Pi)开发板的主要开发语言是 Python;Web 应用有 Django 这个 Web 应用框架,可以很快速地开发出绚丽无比的网站;Web 后端 Python 也不甘寂寞,知乎和豆瓣的后台就是 Python 写的;近几年新兴的职业 DevOps (development 和 operations 的组合)一般也用 Python 来写脚本;一些大型项目的构建以及一些小任务的处理,Python 的脚本也能助你快速开发;用 Python 做爬虫程序,可以轻松爬取网络上你想要的内容(当然,请不要干坏事),Python 有很多不错的爬虫库,例如 Scrapy。

  3. 优越的跨平台性能,几乎所有的操作系统都可以跑起来 Python。

  4. Python 既支持面向过程函数式编程也支持面向对象的抽象编程。

  5. 用 Python 语言编写程序让人很愉快,反正我学习的时候感觉写 Python 的程序有一种***。

  6. Python 非常精简。本身的 API 封装得挺好,因此很多功能不需要我们重新造轮子,直接调用即可。再加上那么多成熟的库,用起来不要太开心。同样实现一个功能,用 C 语言,Java 或 C++ 往往要写很多行代码,Python 只需一行或者几行代码帮你搞定。

  7. Python 在 Tiobe 编程语言排行榜的最新一期榜单(2017年 9 月)中已经位列第 5,仅次于 Java,C语言,C++ 和 C#。虽说这个榜单不能涵盖全部,但也是编程界比较权威的榜单了。可以看出 Python 势头正劲。

  8. Python 是解释型语言,因此假如你要做些小测试,或者学习这门语言,将会非常省时间,因为不需要编译,直接解释就可以执行。比如我很喜欢的 Python 的 IDE(集成开发环境),由大名鼎鼎的 Jetbrains 出品的 PyCharm,就让写 Python 程序成了一种享受。

  9. Python 的可扩展性很好,开发者可以用 C 语言或者 C++ 编写 Python 的扩展模块,还能将 Python 嵌入到 C/C++ 程序中。

  10. Python 的源代码写得不错。其源代码一开始是用 C 语言写的,Python 的作者使用中立的面向过程的 C 语言,实现了动态面向对象,使得 Python 具备灵活和优雅的特性。Python 的源代码也是值得学习的。推荐一本书,是中国人写的,叫《Python 源码剖析》,作者 陈儒,豆瓣评分 8.7。

  11. 规范的代码。Python使用强制缩进来保证代码规范性,几乎不需要代码审查。

正因为 Python 这么好,我最近也开始认真学习 Python 了。

我在好多年前也略学过一点 Python,在工作中其实偶尔也会写 Python 脚本,公司的一个检查多种代码格式的脚本就是 Python 写的,我也在维护。

不过我觉得自己的 Python 水平还是很低,因此想要让自己在 Python 上多精进一些,能够掌握 Python 的精髓,更灵活使用。

我之前没怎么好好学 Python 主要也是因为 Python 真的太容易上手了(你说 Python 的发明人怎么能把这门语言设计得这么易用呢,那不是纵容我们去偷懒吗?哈哈,开个玩笑),只需要了解一下基本语法,然后想要什么功能,就写个类,写个方法或有时写几行代码就可以了。

最近几个月我在自学人工智能的知识,机器学习和深度学习都需要用到很多 Python,才觉得有必要重新开始认真学习这门伟大的语言。

学了一段时间,感觉 Python 真的太强大太好用了,爱不释手,目前是我最喜欢的语言。

以前学习 C++ 的时候,感觉真是挺难的,主要是 C++ 比较庞杂,东西太多,概念都能把你绕晕了,而且还要考虑指针和内存等等。很多写 C++ 的人其实并没有很好地掌握其精髓,写出来的程序往往非常丑陋,难以扩展和维护。

但 Python 就很简单,终于可以用节省下来的时间去看看诗和远方了。当然了,要写出优秀的 Python 代码也没有那么容易。

Python的优点也不只我所列的这些,毕竟我也不是什么 Python 高手。

而且,Python 也不是没有缺点,比如动态解释型语言速度相对编译型慢一些(但其实 Python 现在速度已经挺快了),Python 2 和 Python 3 的不兼容,等等。操作系统的编写目前还是以汇编语言,C 语言和 C++ 为主。

Python 还有一个最大的缺点,就是「优点实在太多了」。

所以,省下几局打王者荣耀的时间,来学学 Python 吧,一定大有裨益。

至于学习 Python 的教材,可以看看《Head first Python》这本书,很浅显易懂。慕课网的各种 Python 视频也是入门和提高的好资源。

如果你英语好的话就直接看 Python 官网的 Tutorial(教程)吧:

https://docs.python.org/3/tutorial/index.html

没有比这更权威和保持更新的了。

当然了,到时候你深陷 Python 的「情网」,无法自拔时,请不要来找我「算账」,这锅我可不背。

当然了,这篇文章只介绍了 Python。其实 Google 开源的 Go 语言和 Kotlin 语言也都不错,但比起 Python 势头还是差了点。
我之前也写过一篇关于 Kotlin 的文章:Android遇上Kotlin | Kotlin若只如初见


我是 谢恩铭,在巴黎奋斗的软件工程师。
我创建了程序员联盟的 知识星球,欢迎加入。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」