写在前面

  这篇博文主要介绍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的一席之地
 

趣谈编程史第3期-大器晚成的新晋流量Python发展史的更多相关文章

  1. 趣谈编程史第2期-这个世界缺少对C语言的敬畏,你不了解的C语言科普

    这是我制作的编程语言科普系列视频的第二期,博客根据视频文案整理而成,提供给有需要的朋友阅读或使用. 视频地址:https://www.bilibili.com/video/av83627932/    ...

  2. 趣谈、浅析CRLF和LF

    作为程序员,在处理文件和输入输出的时候经常要跟CRLF和LF打交道.可能大家多少知道一些,但总是记不清楚,我也是这样的,因此写下这篇博文,作为记录. 首先,明确他们的意思:CR(回车),LF(换行). ...

  3. 《趣谈 Linux 操作系统》学习笔记(一):为什么要学 Linux 及学习路径

    前言:学习的课程来自极客时间的专栏<趣谈 Linux 操作系统>,作者用形象化的比喻和丰富的图片让课程变得比较易懂,为了避免知识看过就忘,打算通过写学习笔记的形式记录自己的学习过程. Li ...

  4. [转]ASP.NET应用程序生命周期趣谈(五) IIS7瞎说

    Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希 ...

  5. [转]ASP.NET应用程序生命周期趣谈(三) HttpModule

    在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpM ...

  6. 趣谈生成函数 =v=

    趣谈生成函数 =v= 今天luyouqi在洛谷随机跳题rand出来一道生成函数板子题,然后我给做了(雾 发现小伙伴们还不会生成函数,于是我试着写这篇生成函数简介.(其实我也不怎么会生成函数这么高级的东 ...

  7. 深挖计算机基础:趣谈Linux操作系统学习笔记

    参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...

  8. 各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言)

    各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言) 总结 a.一个语言或者一个东西能火是和这种语言进入某一子行业的契机有关.也就是说这个语言有没有解决社会急需的问题. ...

  9. Python - 和我聊Python节目最新一期介绍 - 257期:使用超级电脑,Python,射电天文学知识来探索银河系

    今天,给大家简单介绍和我聊Python的最新一期节目,第257期:使用超级电脑,Python,射电天文学知识来探索银河系. 听着标题就觉得高大上,是的,我也是这么认为的.这次请的嘉宾来头很大,来自国际 ...

随机推荐

  1. Servlet&JSP复习笔记 04

    1.状态管理 因为HTTP协议是无状态协议,但很多时候需要将客户端和服务端的多次请求当做一个来对待.将多次交互中设计的数据进行保存. 状态:数据 管理:对数据的维护 2.Cookie 客户端向服务器发 ...

  2. 微软不将《帝国时代》终极版上架Steam的原因到底是什么?

    毋庸置疑的是,<帝国时代>绝对是一款经典游戏.作为一款RTS名作,在过去的20年时间中<帝国时代>销量超过2000万部.数以千万计的玩家都沉溺于这款游戏中,<帝国时代&g ...

  3. 网站爬取-案例四:知乎抓取(COOKIE登录抓取个人中心)(第二卷)

    接着上卷来分析,作为开发人员我们都知道,登录是一个想指定URL发送POST请求的过程,所以我们需要找到请求的URL,以及字段,先用一个错误账号和密码做一下尝试,如果是正确的话会直接跳转到别的页面,这样 ...

  4. ef codefirst VS里修改数据表结构后更新到数据库

    2.根据已建立table的数据库建立ADO.NET数据模型在修改表后进入 工具->nuget包管理器->程序包管理器控制台 输入  enable-migrations   后vs会添加一个 ...

  5. C#输入输出及类型转换,变量,常量。

    //输出 Console.WriteLine("大哇塞"); 自动回车的. Console.Write("Hello world");  不带回车的 注意: 1 ...

  6. [LC] 485. Max Consecutive Ones

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...

  7. spring5.0.7.RELEASE配置jackson2.9.5

    概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. 1.环境: jdk版本:jdk1.8spring版本:5.0.7.RELEASE jackso ...

  8. ArrayList查找和添加元素问题

    问题描述: 如上图所示,如果依靠迭代器在List中查找元素并添加元素,会报错:java.util.ConcurrentModificationException原因是在添加元素后,List本身发生了变 ...

  9. 2015-09-14-C++基础

    声明与定义 声音与定义的区别在于,声明没有给变量分配空间,而定义则给变量分配了空间:定义也是声明. extern int i; // 声明但未定义 int i ; //声明且定义 extern dou ...

  10. <JZOJ5910>duliu

    愤怒 考场想到正解 然后觉得我的“正解”和正解差不多 一样的效果 被忽略的与正解的不同也想到了 然而 我懒得再写 于是快乐10分 气坏了 #include<cstdio> #include ...