我为什么要学习 Python
阅读文本大概需要 14 分钟。
最近一直有读者在后台问我,K 哥你是如何看待 Python 、Python 前景如何、Python 工作上有哪些方向。今天我就认真写篇文章讲讲自己对于 Python 的一些理解,以及如今 Python 都有哪些方向。全文 5143 个字,本文参考了一些资料,有些内容是来源于网络上,我会在最后标注来源。
1 Python 前世今生
1.1 Python 作者
Python 的作者荷兰人「Guido von Rssum」,在 1982 年从阿姆斯特丹大学(Universiteit van Amsterdam,缩写为 UvA)获得数学和计算机硕士学位。
UvA 大学有多牛逼?2015 年 QS 世界大学排名 55,21 世纪欧洲顶尖大学。从 1632 年成立以来,一共产生过 6 名诺贝尔奖得主,其中诺贝尔物理学家得主 3 名,和平、医学和化学奖得主各一名。
正是这所牛逼的大学,抚育了 Python 的发明者 Guido。有时候看到有人在崇尚学历无用论,想想都觉得可笑。世界上顶级的管理者,商业精英,计算机语言开发者,无不是拥有顶级的学历背景。
1.2 ABC 语言
在 Guido 那个年代,人们流行的编程语言还是 Pascal、C、Bourne Shell。但那时候电脑配置非常的低,写一个大点的 C 语言数组就占满内存。Shell 虽然简洁,但没有数值型的数据类型,不能全面的调动计算机的功能。
Guido 就希望能有个语言可以像 C 和 Shell一样,既能全面调动计算机的功能接口,又可以轻松的编程。当时的 ABC 语言让 Guido 看到了希望,并且他也参与到这门语言的开发中。下面是一段 ABC 语言的代码,这个程序用于统计文本中出现的词的总数。
HOW TO RETURN words document:
PUT {} IN collection
FOR line IN document:
FOR word IN split line:
IF word not.in collection:
INSERT word IN collection
RETURN collection
HOW TO 用于定义一个函数。ABC 语言使用冒号和缩进来表示程序块。行尾没有分号。for 和 if 结构中也没有括号()。赋值采用的是 PUT,而不是更常见的等号。这些改动让 ABC 程序读起来像一段文字。这与 Python 有很多相似的地方。
从代码可以看出,程序是有良好的可读性和易用性,但同时 ABC 有个致命的缺陷,它对于电脑的配置要求非常的高。在那个电脑配置只有 128KB 的 RAM 时代,无疑宣告 ABC 这门语言是不可能流行的起来。
但这次 ABC 语言开发的经历,奠定了之后 Python 优雅,易用的基调。编程语言 Python 的设计风格,有许多源自于 ABC 语言。
1.3 Python 的诞生
时间来到 1989 年,Guido 为了打发圣诞节假期,就开始编写 Python 语言的编译器。大佬假期无聊就写出这么伟大的语言。再想想自己假期都是在做什么。
Python 这个名称,是来自 Guido 所挚爱的电视剧「Monty Python's Flying Circus」。他希望这个新的叫做 Python 的语言,能符合他的理想:创造一种 C 和 shell 之间,功能全面,易学易用,可拓展的语言。
1991 年,第一个 Python 编译器诞生,它是用 C 语言实现,并且能够调用 C 语言的库文件。从一出生,Python 已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
Python 语法很多来自 C,但又受到 ABC 语言的强烈影响。来自 ABC 语言的一些规定直到今天还富有争议,比如强制缩进。但这些语法规定让 Python 容易读。
最初的 Python 完全由 Guido 自己开发,但 Python 得到 Guido 同事的欢迎。很快 Guido 和同事一起组建 Python 的核心团队。随后 Python 将机器层面上的细节隐藏起来,交给编译器处理。这样使得使用 Python 的程序员,可以花更多的时间在程序的逻辑思考上,而不用过度关心具体的实现细节。这一特性让 Python 逐渐流行起来,伟大的语言就此走上高速发展的道路。
1.4 Python 高速发展
随着 Python 逐渐进入正轨,版本更新迭代也越来越快。
1989 年由荷兰人Guido van Rossum于 1989 年发明,第一个公开发行版发行于 1991 年
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础
Python 2.4 - November 30, 2004, 同年目前最流行的 WEB 框架 Django 诞生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
Python 3.0 - December 3, 2008
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
Python 3.6 - December 23, 2016
Python 3.7.0a2 - October 17, 2017
Python 3.7.0b5 - May 31, 2018
从 1991 公开发行版到如今 Python 的 3.7.0b5,Python 已经走过了 27 年。而就在今年的 5 月份 Python 成功登顶编程排行榜,成为最流行的编程语言。
1.5 使用 Python 开发项目
如今随着人工智能和大数据的兴起,Python 这门语言也越来越多人使用。并且在全世界范围内,有很多公司就是利用 Python 进行开发,其中不乏大家所熟知的公司。比如
Google:谷歌在很多项目中用 Python 作为网络应用的后端,如 Google Groups、Gmail、Google Map s等,Google App Engine 支持 Python 作为开发语言。
YouTube: 404 视频分享网站,在某些功能上就是使用到 Python。
Quora:社交问答网站。
知乎:国内最大的问答网站,也是利用 Python 开发。
豆瓣网:图书、唱片、电影等文化产品的资料数据库网站。
Reddit:社交分享网站,最早用 Lisp 开发,在 2005 年转为 Python 。
Dropbox: 文件分享服务。
Django: 鼓励快速开发的 Web 应用夸奖。
EVE: 网络游戏 EVE 大量使用 Python 进行开发。
还有很多的案例,大家可以去 Python 官网上 About > Success Stories 里查看。
2 Python 国内现状
国内对于新技术的接受程度,并没能像国外一样。很多在国外使用非常火爆的技术,但在国内至少要延迟一到两年的时间,才会被各大公司所使用。比如 Kotlin,在 2017 年 5 月 17 日(北京时间 5 月 18 日凌晨)的 Google I/O 2017 Keynote 上, 谷歌宣布,将 Kotlin 语言作为安卓开发的一级编程语言。这之后国外的公司在启动新的 Android 项目都把 Kotlin 做为首选语言,对于以前的旧项目也会利用 Kotlin 进行重构。
而国内却没有任何动静。直到 2018 年国内部分公司开始使用 Kotlin,一些做 Android 开发的朋友,应该有不少被要求学习下这门语言。Kotlin 已经是 Android 开发未来的方向。
现在国内对 Python 的态度就像最初的 Kotlin 一样,大部分人还是只停留在表层,知道机器学习和数据分析要用到 Python。具体要说下 Python 都可以应用哪些方面,大部分人都不知道。但市面上 Python 相关的应用还是有很多,比如在国内比较有名的有豆瓣、知乎、金山的测试框架、搜狐的邮箱。
随着这几年人工智能和大数据的大火,市场上 Python 相关的需求也越来越多。我从拉勾网上找了些 Python 相关工作,1~3 年经验薪资待遇还是非常不错平均在 15K 左右。
各国也纷纷布局自己的 AI 战略,美国有谷歌的「Tensorflow」,国内有百度全力布局 AI,国家教育部也正式发布《人工智能基础(高中版)》,这里面都是首选 Python 做为开发语言。
社会上种种信号早已说明,人工智能是未来发展的方向,而 Python 也只会越来越火爆,对应的需求也会越来越多。
3 Python 开发方向
那么 Python 具体的工作方向都有哪些?这里我给大家列举了一些主流的 Python 开发方向。
3.1 机器学习
机器学习是人工智能的一个分支。人工智能的研究历史有着一条从以「推理」为重点,到以「知识」为重点,再到以「学习」为重点的自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。
机器学习的薪资是非常的高,我随便在拉勾网上找了些相关的岗位,薪资都是在 15K 以上,最高可达到 80K。
但机器学习对应的要求是比较高,尤其对于学历来说至少要研究生。还要求你有一定的数学基础,比如高数、概率论、线性代数等。有能力有学历的人,那你就选择这个方向,绝对不会错。
3.2 数据分析
数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。
这几年随着大数据的火爆,数据分析这个行业也越来越火,薪水也水涨船高。拉勾网的薪水也非常的不错 ,10K 是非常轻松。
3.3 web 开发
web 应用被分类归为分布式应用,一般是客户端—服务器结构,所以我们有一部分的代码运行在客户端,另一部分代码运行在服务器。而在 Python 中有非常多的 web 开发框架,比如 Django、CherryPy、Flask、Pyramid、TurboGear 等等。
这些框架能让你快速开发出一个 web 应用,web 开发在市场上是有非常多的需求。在拉勾网的薪资也是很高,平均 15K。
3.4 爬虫工程师
网络爬虫(又被称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
Python 独特的语言特性,使得它非常适合用来进行网站的爬取。人们一提交 Python 有哪些应用,就会想到爬虫。在拉勾网上爬虫的薪资一样很高,平均 10K。
3.5 测试工程师
最后说个测试工程师。测试工程师,软件质量的把关者,工作起点高,发展空间大。我国的软件测试职业还处于一个发展的阶段,所以测试工程师具有较大发展前景。Python 也可以用来做一些测试。我也在拉勾网上找了测试工程师相应的薪水,平均 10K。
4 选择比努力重要
现在的 Python 市场很像 2014 年的移动开发市场,那时候移动互联网也跟如今的人工智能一样,非常火爆。市场对于移动开发的需求非常的多,那时候你只要会在 Android 上写「hello world」,就可以找到工作。各大培训机构铺天盖地的宣传移动开发。
但随着移动市场这些年的发展,现在对于基础移动开发人员已经趋近饱和。如果你现在是一个刚入编程行业的人员,又刚好选择了移动开发的方向,那对不起,你很有可能找不到工作。
有时候你非常的努力但选错了方向,你的事业发展速度就会非常的缓慢。而有些人选对了方向,稍微做些事情,事业迅速发展。如今选择 Python ,你就已经比大部分人领先。
分享一个真实的事,来自帅张的知识星球,别人通过半年 Python 学习,如今找到一个 12K 的工作。而这很有可能是别人一到两年才能达到的薪资,选择是比努力更加重要。
总结
以上就是我自己对于 Python 的一些理解。未来选择拥抱 Python ,一定能让你收获很多。
自己最近毕业答辩完了,大学的生涯也就此结束。回顾这大学四年的时光,有过迷茫,也有过慌张。前 3 年的大学生活,昏昏而过,每天都不知道要做什么。我大学这四年期间一共挂了 10 门课程,最“优秀”的时候一学期挂了 5 门。可以说是一位不折不扣的学渣。
但随着这些年自己的努力,认知不断的提升,现在已经发生了很大的变化。最开始写 300 字的文章,我要花上一上午的时间。你们不知道,有非常多次为了写文章,熬到了深夜两点。公众号在前期都是日更。我全部的休闲时间都放在了写作上,放弃了非常多。我知道自己已经比别人落后太多,只能通过勤奋来弥补。
但自己很幸运,这一切的努力,终于有了些回报,公众号从最初的几百人到如今已有 1W+ 的读者数。
499,666,1111,5001,10000
这一串数字见证我的成长,未来路还长,Koc 一定会继续努力给大家带来高质量的文章。
Reference
https://linux.cn/article-3906-1.html ( Python 语言的发展简史)
人必有痴,而后有成