最近迫切应学的编程语言

作者: 程序员联盟 | 来源:发表于2017-09-11 01:10 被阅读6179次

作者 谢恩铭 转载请注明出处
公众号「程序员联盟」(微信号: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若只如初见


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

相关文章

网友评论

  • CodeAllen:也是看了你的文章开始学python了,先入手了本入门书籍,跟C语言语法好像啊
    程序员联盟:@炫色Allen Python 使用 C 写的
  • 叶琛_:正准备自学python~ 这篇文章更好地激发了我的兴趣:smile:
    程序员联盟:@叶琛_ Python用起来那怎是一个爽字了得
  • loycoder:一直不清楚Python能做什么,看了这个才清楚。谢谢分享
    程序员联盟:@loycoder 谢谢
  • 焰火青春:什么是前端后端啊?
    做web程序是不是前端?
    后端呢?
    CodeAllen:Java一般是做后端
  • 土豪码农:作为一个前端人员,想要学一门后端,初步了解了一下python,感觉语法真的屌炸天
  • 爪爪熊:很无敌
  • 胖腚猴:三个月了,开始学了下基础语法,后来一段时间去学linux了,再接着前一个礼拜学django,到现在为何我想放弃,是的,入门到放弃,用django 做一个电商网站,做的我有点怀疑人生了,那种挫败感让我很没动力,沮丧。。。求学习方法,求解脱
    小翔扁小丁:@胖腚猴 一定要坚持住,兄弟😀
    小翔扁小丁:@胖腚猴 加油,开始是挺难的,但是往后学着学着就会发现,后面其实还是很难😀
    程序员联盟:加我微信:frogoscar
  • TortoiseY:正在学,已经1周了,基础还没看完,,我看东西记不住,比如函数之类的,题主有没有推荐的一些小程序做一下唉,,,随便说说,,,😊😊😊
  • zhangsan5421:不知道Python能不能做成学生数据管理系统。例如,成绩,学籍管理系统。
    程序员联盟:@zhangsan5421 加我 微信:frogoscar
    zhangsan5421:现在在学习Python,能给我简单讲讲实现的大概思路吗?
    程序员联盟:@zhangsan5421 当然可以
  • db4f02307e3c:Django是前端框架???喵喵喵???
    程序员联盟:Django 是 Web 应用框架,已改。谢谢
  • FindCrt:Python就是那种写起来就很爽的语言,特别是写多了c系语言之后
    程序员联盟:@Find1991 飞起
  • LinxsCoding:2和3一起学~我也在学
    LinxsCoding: @程序员联盟 哈哈与其纠结学哪个~还不如都学了
    程序员联盟:@LinxsCoding 去吧,少年
  • 小小Q吖:这个编程语言可以干嘛?
    程序员联盟:文章里写了啊
  • 小镭Ra:不如说:
    编程语言确实有好差之分,只是很少有人能说清楚差在哪,绝大部分人只是用不顺手(不理解、不深入)或是找不到需要的类库(其实只是为了用类库)。
  • VVik:大婶!如何提高无障碍快速阅读国外文档?因为我看到了一句,如果英语好的话,直接看官网:joy: 有想看这个冲动……
    VVik:@程序员联盟 :+1:
    程序员联盟:@VVik 如果一劳永逸的话,肯定是提高英语水平了,可以看我的文章 [对于程序员, 为什么英语比数学更重要? 如何学习](http://www.jianshu.com/p/0194b98df6bc);如果不想学英语,可以用Google翻译,虽然翻译不是很准确,但大概有那么个意思,google翻译用了人工智能
  • xuetucc:爬虫阶段
  • Hello_kid:我现在在学3.6版本的python
    程序员联盟:@Ruiz678 Good,是应该学 3
  • 414697ada450:楼主。貌似BeautifulSoup不是用来爬虫的,是解析网页内容的,比正则表达式简单些,scrapy是一个爬虫架构
    程序员联盟:谢谢指正。已改
  • 真实_e5af:正在爬虫阶段
    程序员联盟:@真实_e5af 加油,待你爬遍天下,共图「大业」:stuck_out_tongue_closed_eyes:
  • 沙丁鱼从天而降Sardine:有安装包没
    程序员联盟:@沙丁鱼从天而降Sardine Python 官网:https://www.python.org/downloads/
  • 0238aef63df5:老大,能推荐学python2还是3吗
    程序员联盟:@鞠宇宁 其实语法很类似。不过你还是用 Python 3 学习吧,毕竟更大势所趋。
  • bdaf8754f75e:有基础视屏推荐吗?谢谢
    程序员联盟:@hemengcheng Python入门 http://www.imooc.com/learn/177
  • 杰奏鬼画符:学习python两个月了,先是入门,然后爬虫,现在正在学数据分析,Numpy,pandas
    程序员联盟:@Paul_4a7c 完全有可能的
    Paul_4a7c: @杰奏鬼画符 两个月就学了这么多东西了?

本文标题:最近迫切应学的编程语言

本文链接:https://www.haomeiwen.com/subject/hslxsxtx.html