趣谈编程史第3期-大器晚成的新晋流量Python发展史

写在前面

  这篇博文主要介绍javaScript的发展史,根据作者在B站发布的同名视频的文案整理修改而成,对视频感兴趣的博友可访问https://www.bilibili.com/video/av86031488/

Python的诞生背景

  Python的创始人名叫Guido van Rossum,因为这个名字冗长又难记,调皮的中国程序员发挥拼音的特长给他起了个特短的名字,龟叔. 
  故事要从ABC开始说起,ABC不是中国农业银行,也不是美国广播公司,它是由荷兰教学研究组织旗下的CWI负责研发的一种结构化高级语言.
  1982年,龟叔从阿姆斯特丹大学毕业进入了该组织,参与ABC语言的研发,ABC语言致力于提高程序语言的可读性和易用性,说白了就是降低编程语言的学习门槛,让更多的非计算机专业的人也能快速上手.
  上世纪80年代,最流行的语言就是C,C语言功能强大但是实现过程繁琐,学习门槛也不低,而且你必须以机器而不是人的思维方式去编程,如果不是科班出身的程序员估计只能望C兴叹,而与之形成鲜明对比的是Shell,Shell字面意思就是壳,区别于内核,它实际上是一个命令解释器,他接受用户的命令然后送到系统内核去执行,简单理解, 如果把系统内核比作汽车发动机,轮胎等装置,Shell就是你的方向盘,离合刹车,Shell允许你使用一些简单的脚本把系统的功能连接在一起, 不是专业程序员也能很快上手,实现一些复杂功能,比如日志定期备份,批量处理文件等,虽然ABC语言在当时已经解决了可读性以及易用性的问题,但并没有获得很大的成功,一方面由于运行ABC语言的编译器需要更高配置的电脑,另一方面ABC的设计也有很多遗憾之处 比如扩展性很差,实现新功能的成本很大 ,有没有一种语言即能像C一样 无所不能,又能像Shell一样 简洁优雅呢?在龟叔的想象中,就有一个这样前卫的语言,时尚时尚最时尚,编程肯定棒.

初出茅庐(Python第一个十年)

  1989年,龟叔为了打发无聊的圣诞节假期,开始动手编写这个他想象之中的新语言,并且命名为Python,Python有蟒蛇的意思 但是这个Python并不是来源于此,据龟叔本人说这是为了纪念喜剧天才Monty Python,Monty Python是一个英国的喜剧团体,有喜剧界的披头士之称,1969年,Monty Python’s Flying Circus翻译过来也就是巨蟒的飞翔马戏团,第一季在BBC电视台播出,并且迅速获得观众的追捧,龟叔也是忠实观众之一.
  1991年,第一个Python编译器正式诞生,Python借鉴了ABC的很多语法规范,比如强制缩进,它是用C语言实现的,能够调用C语言库,并且具备了类 函数 异常处理以及模块系统等Python核心组件的雏形.
  Python诞生后,得到了龟叔同事的欢迎,他们也都纷纷参与到Python的优化和改造工作中,由于Python最大程度的屏蔽机器底层的细节,让Python解释器去接管,程序员可以专注于业务逻辑,这一点让Python在小圈子开始流行起来.
  1994年,Python1.0正式发布,这个版本加入了lambda, map, filter和reduce等新功能.
  在Python诞生的第一个十年,属于Python韬光养晦的十年,这段时期,Python还没有真正走进大众的视野 ,属于小众语言,但在小圈子里Python已经小有名气.

野蛮生长(Python第二个十年)

  2000年Python2.0发布,Python2.0加入了内存回收机制,算是基本确定了现代Python语言框架的基础,这时候Python还只是主要用来写一些自动化脚本,但是眼光独到的社区开发者对Python的期待就远不止如此,你这个实力,不去更大的舞台上扬名立万 ,岂能窝在脚本领域上做了一个胶水语言.
  2004年,Python的web框架Django诞生,这是一个Web解决方案的全家桶 功能强大全面,包含了几乎所有WEB开发所需要的相关组件和功能,Django的面世极大的推动了Python在Web开发领域开疆拓土.
  2005年,龟叔进入谷歌任职,江湖传言,龟叔面试谷歌 简历上只有一行字I wrote Python,当然这事大概率就是个绯闻,感觉这种传奇程序员也不需要简历吧,这里我们多提一下谷歌公司,这个从1998年成立以搜索引擎起家的软件公司,如今已经成长为全球最伟大的互联网公司之一,谷歌从成立初期就是Python的忠实粉丝,谷歌搜索引擎的第一个版本 服务端代码是用Python完成的,包括后来的谷歌地图 谷歌爬虫 谷歌广告等等都大量使用了Python,龟叔入职谷歌后,谷歌特许龟叔把自己一半的时间都用来维护和改进Python,从这个方面来看,谷歌和Python算是互相成就.
  除了谷歌,还有大量公司在非常早期就使用了Python进行开发,这对Python的推广至关重要,像乔治卢卡斯为了拍星球大战创建的工业光魔特效公司,公司旗下的CGI部门就大量使用了Python,像美国最大的图片分享网站,Instagram,世界最大的视频网站Youtube,还有Netflix,Reddit等等这些鼎鼎大名的公司和机构,也都在网站开发,数据分析等很多地方使用了Python,不仅是商业公司,Python也受到了科技机构以及政府部门的欢迎,像美国中央情报局CIA,其官方网站就是使用Python开发,像美国航天局NASA以及很多科研机构都大量使用Python进行数据分析和运算,这让Python获得了极大的曝光率.
  2008年,Pyhton3.0发布,这个版本属于大破大立,因为Python3.0并不能兼容Python2,这个一定程度上给Python社区和使用者带来了麻烦,因为经过Python2多年的深耕,在Python2上已经积累了很多成熟的解决方案以及相关库,如果你直接选择Python3可能有一些现有的库无法直接调用,只能自己造轮子,那为什么不能兼容呢 ,因为Python2有一些让人诟病的历史遗留问题,比如文本字符和二进制数据的二义性问题,,字符编码的问题等.
  互联网公司总是滞后的,虽然2008年就发布了Python3 但基本没什么人鸟它,Python2.X依然是市场主流 ,此时Python2和Python3并存发展,被官方同时维护更新.
  2010年,Python荣获当年TIOBE的年度编程语言 风头一时无两.
  Python的第二个十年,是野蛮生长的十年,从小圈子到大世界,Python依靠自身简单优雅的特性,以及借助开源和社区数以百万极客的群众力量,不断壮大声势,越来越多的开发者纷纷路人转粉,投入到Python的怀抱,Python当年的迷妹粉也慢慢变成了亲妈粉,目睹着Python从无人问津变成万人敬仰,互联网时代风起云涌 ,从2006年开始,随着神经网络,深度学习等技术的出现,重新点燃了一个可能会影响人类命运的高新技术科学,人工智能,此时,大部分人还不知道 ,Python的封神之路才刚刚开始.

走上神坛(Python的第三个十年)

  2008年Python3.0发布到2019年 ,除了偶尔的拖更 ,Python差不多以每年一个小版本的速度稳健发育,截止这个视频发布 ,Python最新版本已经来到了Python3.8,根据官方在2019年统计的2018年的使用情况,Python3的占用率已经达到了84%,Python2正在慢慢退出历史舞台,并且官方也已经宣布将在2020年停止维护.
  接下来我们重点梳理一下人工智能和Python的关系,AI这个词最近几年被炒得火热,在国内,这个词被广大普通人熟悉,我感觉是开始于一个引发了全民狂欢的科技新闻,2016到2017年 谷歌开发的围棋AI程序AlphaGo,接连击败欧洲冠军樊麾,韩国九段棋手李世石,而后又赢了世界冠军柯洁 登顶地球之巅,此时距离深蓝计算机在国际象棋中横扫人类选手刚好二十年,几个月后 AlphaGo的升级版化名AlphaGo Zero卷土重来,仅经过3天的自我训练就击败了击败了李世石的AlphaGo Lee,经过40天的训练,又轻描淡写的击败了击败了柯洁的AlphaGo Master,没有一点点防备,也没有一丝顾虑,围棋这个被认为是人类智慧遮羞布的领域,就这么猝不及防的就被机器按在地上狠狠地摩擦,这个彻底引发了舆论的狂欢,人们纷纷奔走相告 AI时代来临了.
   上面讲的算是人工智能在游戏竞技领域的应用,人工智能的应用场景还有很多,比如计算机视觉 语音识别 无人驾驶 自然语言理解 个性化推荐等等.

Python和人工智能

  那么问题来了 ,Python和人工智能是什么关系 ,为什么是Python独得人工智能的恩宠而不是其他语言.
  我们先回答第一个问题,首先需要明确一点,人工智能所有核心的算法,都是依赖C或者C++完成的,这些算法跑起来非常复杂,属于计算密集型的任务,,需要榨干硬件的每一分性能,而Python本身的性能只能说是可惜 ,Java的性能一直被人诟病 它比java还要更下一层楼,,如果一个人黑Python,肯定是朝性能这个点狠揍,Python在人工智能,深度学习等领域扮演的更多是一个工具人的角色,也就是发挥一个前端或者说”花瓶”的作用,Python虽然不快但是它易学易用人易推倒 ,你只需要拿Python做做可视化,调一下AI接口,写写展示层的逻辑就完事了,现在的人工智能还处于人工智障的阶段,快速搭建一个可以调试和迭代的原型比啥都重要,而且一些专门搞科研和算法的牛人精力都不在编程语言上,用Python就能以最低的学习成本快速上手,它不香吗.
  那问题又来了,简单的语言也不只有你Python一家 ,Java学习成本也不高 ,即使拿脚本语言来说事 ,Lua也同样简洁优雅 凭啥不配有姓名,这个问题就要结合历史来看了 ,只能说Python前期优势太大,尤其是和AI息息相关的数据分析领,Python更是深耕多年,早早占据了先机,像一些广受欢迎的数据分析框架,NumPy,Pandas等都是出自Python的手笔.
  你以为这就完了吗,我上面提到了谷歌和facebook对Python的钟爱,而这两家公司都是走在人工智能前沿的先锋,而谷歌发布的深度学习框架TensorFlow,FaceBook推出的机器学习库PyTorch,都是将Python放在了扛把子的位置.
  你以为这就完了吗,不仅如此 ,Python在学术圈和科研圈的渗透力度也远非其他语言所能相提并论,放着简单易学库有多的Python不学,难道去学C++吗,博士也是人 柿子也净挑软的捏.
  你以为这就完了吗,还有更狠的,连政府都出面背书以及协助推广,奥巴马政府和特朗普政府都投入了巨量的真金白银来推广计算机教育,在国内长期霸占的中小学计算机入门语言的VB也随着微软的退出而逐渐失宠,那他们用啥语言替换VB呢,Python.

Python自身的几大优势

  说一千道一万,外部的原因那都是浮云,打铁还需自身硬,没有金刚钻也干不了这个瓷器活,我总结了Python的几大优势,以下几个原因缺少一个,我都认为Python无法火到现在这种如日中天的程度.

简单优雅

简单意味好学,好学就意味着开发效率更高,,那什么是优雅,同样一个功能 ,C语言可能几百行,java可能几十行,而Python可能几行就搞定了,这就是优雅,试想你要是自己创业开公司,没钱没人没资源,你会选什么语言呢?

开源免费

在编程语言界开源就是硬通货,企业都是逐利的,钱能多花就少花 能少花就不花 ,像数据分析领域如雷贯耳的matlab,想获得正版授权 价格着实不菲 而且版权问题也令人寒心,以后会不会被Python革命,我们骑驴看账本

胶水特性 

  Python一度被人们认为是一种胶水语言,它不仅能和C或者C++混编,还能和java,C#搞到一起,标准版本的Python是使用C编译的,称为CPython,此外还有java的实现版本Jython ,.net的实现版本IronPython.

可移植性

  可移植性一方面和它开源免费有很大关系,另一方面,Python是解释型语言 ,不需要编译可以直接从源码中运行程序 ,这个依赖于Python强大的解释器,编程语言从执行过程的角度,可以分为编译型和解释型两种 ,我打一个不太合适的比喻帮助你理解 ,你去餐厅吃饭,假设你点了10个菜 ,如果是十个菜全部做好了,一并给你端上桌,这就是编译型 ,如果是做好一个菜上一个菜,这就是解释型 ,在这个比喻里 你就是CPU 食材就是程序员的代码 菜就是你能识别的机器语言,可移植性主要说的就是跨平台,你就理解成换桌 ,你说是十个菜一块上你比较方便换桌还是一个菜一个菜的上比较方便换桌呢 

社区力量

  群众的力量是巨大的,群众的眼光是雪亮的,Python发展如此迅速 离不开无数社区程序员的添砖加瓦,而海量的第三方功能库 更是社区送给Python的一份大礼,只要会用搜索引擎,恭喜你,你已经是一个合格的Python程序员了.

天公作美

  这个有点玄学的意味,但是我觉得也不容忽视,我举两个例子.
  ABC语言没有成功很大一部分原因是当时的硬件不争气,上世纪末,也就是Python刚出来那几年 你猜怎么着,个人计算机飞入寻常百姓家,电脑性能大幅提高,人们不再专注于搜刮硬件性能 而是转而关注计算机的易用性,Python带着诚意迎面扑来 可谓是求锤得锤.
  VB这门语言由于可视化的优势多年来在编外入门以及教育领域风光无限,在编程新手村可谓出尽风头,你猜这么着 微软为了推广.net平台不再维护它了,Python带着诚意扑面而来 可谓是想玩啥来啥.

总结和展望

  Python以脚本语言起家,最初被设计用来编写自动化脚本,Python的设计从人的视角出发,以人为本 ,使得其语法有几分自然语言的风格,这就注定了它的不平凡. 
  在面世的前十,Python本来打算以普通人的身份和世人相处,但是换来的确是疏远,并没有获得多大的关注.
  进入二十一世纪以来,尤其是近十年间,凭借自身优雅简洁易推倒的特质,以及机器学习,人工智能,大数据处理等高新技术的兴起和发展,脚本这个小寺庙 早已容不下Python这尊大佛,Python在越来越多的领域攻城略地 捷报频传,包括但不限于 数据分析,网络爬虫,web开发,机器学习等,十年寒窗无人问 一朝成名天下知,当年的名不见经传的毛头小子,已经成长为脚踏七彩祥云的盖世英雄.
  Python爆红即像是顺势而为 多年媳妇熬成婆,又像是天选之子 命格无双 ,生来就是要牛逼的 ,对于Python的未来我抱有很大的期待,作为一个主要使用java进行开发的咸鱼程序员,忆往昔 看今朝 我此起彼伏,我觉得Python在未来极有可能和java并驾齐驱,甚至是后来居上.
  Python语言从群众中来 到群众中去,随着奇点临近,AI时代的到来,Python必然还会再上一层楼,互联网的风口瞬息万变 ,唯一不变的就是变化本身,不管世界怎么变,Python已经于风口浪尖处稳稳站住了脚跟,未来的编程语言必然会有Python的一席之地
 
posted @ 2020-03-10 14:14  冬至饮雪  阅读(...)  评论(...编辑  收藏