趣谈编程史第3期-人生苦短,不如Python

Posted fingerboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了趣谈编程史第3期-人生苦短,不如Python相关的知识,希望对你有一定的参考价值。

这是我制作的编程语言科普系列视频的第三期,博客根据视频文案整理而成,提供给有需要的朋友阅读或使用.
视频地址:https://www.bilibili.com/video/av86031488/  如果感兴趣可以观看视频,感谢博友
在编程语言这个竞争激烈 人才辈出的江湖
时常上演勾心斗角 尔虞我诈的狗血故事
各家编程语言的’言粉’ 也时常骂来骂去 尊己卑人
在这个鱼龙混杂的环境里
有这么一号人物
他出身寒门 名不见经传
养在深闺人未识
最初只是在不知名圈子里小有名气
但是因为天生丽质 惹人怜爱
大得人心 收获了一大波社区开发者的好感
凭借自身优秀的条件 又赶上了一个好的时代
再加上群众的万千宠爱于一身
它稳扎稳打 不负众望 丹凤朝阳
一步一步被推上神坛
成了编程语言界的顶级流量
他就是我们本期视频的主人公 杨超越
不好意思
他们就是我们本期的主人公 Python
 
 这期视频我将带你追溯python的诞生和发展历史
了解Python在各个领域尤其是人工智能方面的应用
分析python近年来一跃成为顶级流量的幕后真相
以及对编程小白给出一点点本人不成熟的小建议
这是编程语言科普系列的第三期
重要的事情说三遍 下面的免责宣言是最后一遍
我默认这个视频的观众都是编外人员 
我希望用一种比较有趣下饭的方式能让你快速了解
一些互联网行业相关的专业术语和行业趣闻
涉及到令人头秃的专业知识我会尽量绕过,实在绕不去我就强行解释
编程语言的科普在专业性和趣味性上很难把握平衡
在内容不出现滑铁卢的前提下
我还是会尽量追求趣味性 
各位朋友如果要学习专业的编程知识的还是要寻访名师,拜阅名著
咱这只是小本生意 只卖身不卖艺
 
Python真的是太tm火了 
说这话时  我来不及思考
但思考过了 我还是要这样说
刚才你们进来的时候
有没有察觉到门口有个花枝招展的角色在向你搔首弄姿
(展示广告)
近些年 随着机器学习 人工智能等领域的发展
Python也变得炙手可热 水涨船高
各种Python的培训机构也是像雨后春笋般拔地而起
就这么说吧
第一期 java的科普视频出来以后
就零星有朋友指着Python跟我说 
怎么样 想想办法 干他一炮
我没搭理 但是心里默默的回应一句
下次一定
其实我了解一些Python的历史 
感觉没啥荡气回肠的恩怨情仇
只能说是 朴实无华且枯燥
第二期C语言的视频出来以后 感觉Python像是买了水军
不依不饶 愈演愈烈
但我依然没打算这么早就讲Python
我不那种轻易向观众低头的人
我有我自己的节奏
任你风吹雨打 我自岿然不动
有一个晚上我正在写某语言的文案
写着写着睡着了 梦到被一群蒙面的B友绑架
蒙面人拿枪顶着我的脑袋 让我下期必须讲Python 要不然就撕票
人生自古谁无死
那我们本期就来聊一下这个红遍大江南北的小丫小苹果  
 
Python的创始人名叫Guido van Rossum
因为这个名字冗长又难记
调皮的中国程序员发挥拼音的特长给他起了个特短的名字
龟叔 后面我们也这么叫 
没有任何不敬的意思 respect
故事要从ABC开始说起
ABC不是中国农业银行,也不是美国广播公司
它是由荷兰教学研究组织旗下的CWI负责研发的一种结构化高级语言
 
1982 龟叔从阿姆斯特丹大学毕业进入了该组织
参与ABC语言的研发
对了 龟叔是个荷兰人
ABC语言致力于提高程序语言的可读性和易用性
说白了就是降低编程语言的学习门槛
让更多的非计算机专业的人也能快速上手
上世纪80年代
最流行的语言就是C
C语言功能强大但是实现过程繁琐,学习门槛也不低
而且你必须以机器而不是人的思维方式去编程
如果不是科班出身的程序员估计只能望C兴叹
而与之形成鲜明对比的是Shell
Shell字面意思就是壳,区别于内核
它实际上是一个命令解释器,他接受用户的命令然后送到系统内核去执行
简单理解 如果把系统内核比作汽车发动机,轮胎等装置
Shell就是你的方向盘,离合刹车
Shell允许你使用一些简单的脚本把系统的功能连接在一起
 不是专业程序员也能很快上手
实现一些复杂功能,比如日志定期备份,批量处理文件等
 
虽然ABC语言在当时已经解决了可读性以及易用性的问题
但并没有获得很大的成功
一方面由于运行ABC语言的编译器需要更高配置的电脑
另一方面ABC的设计也有很多遗憾之处 比如扩展性很差
实现新功能的成本很大 
有没有一种语言即能像C一样 无所不能 又能像Shell一样 简洁优雅呢
在龟叔的想象中 就有一个这样前卫的语言
时尚时尚最时尚 编程肯定棒
 
1989年 那是一个lonely chris
龟叔为了打发无聊的圣诞节假期,开始动手编写这个他想象之中的新语言
并且命名为Python
Python有蟒蛇的意思 但是这个Python并不是来源于此
据龟叔本人说这是为了纪念喜剧天才Monty Python
Monty Python是一个英国的喜剧团体,有喜剧界的披头士之称
1969年,Monty Python’s Flying Circus翻译过来也就是巨蟒的飞翔马戏团
第一季在BBC电视台播出 并且迅速获得观众的追捧 龟叔也是忠实观众之一
 
1991年,第一个Python编译器正式诞生
Python借鉴了ABC的很多语法规范,比如强制缩进
它是用C语言实现的 能够调用C语言库
并且具备了类 函数 异常处理以及模块系统等Python核心组件的雏形
关于强制缩进,至今也有很多争议
实话实说 作为一个主要使用java进行开发的的咸鱼程序员 
我第一次接触Python的代码 感觉看起来还蛮爽的
不过这个缩进要正正好好 进多进少了都会报错
这也被坚持自由代码风格的程序员调侃道
Python编程需要常备游标卡尺
 
Python诞生后,得到了龟叔同事的欢迎
他们也都纷纷参与到Python的优化和改造工作中
由于Python最大程度的屏蔽机器底层的细节
让Python解释器去接管
程序员可以专注于业务逻辑,这一点让Python在小圈子开始流行起来
 
1994年,Python1.0正式发布
这个版本加入了lambda, map, filter和reduce等新功能
你不用知道这几个东西是干嘛的 
你只需要知道java在2014年的java8版本中才支持这个新功能就可以了
整整晚了二十年
作为一个主要使用java进行开发的咸鱼程序员
算了 不说了 说多都是泪
在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
B站最大的货源供应商,世界最大的视频网站Youtube
还有Netflix,Reddit,Facebook等等这些鼎鼎大名的公司和机构
也都在网站开发,数据分析等很多地方使用了Python
不仅是商业公司,Python也受到了科技机构以及政府部门的欢迎
像美国中央情报局CIA,其官方网站就是使用Python开发
像美国航天局NASA以及很多科研机构都大量使用Python进行数据分析和运算
这让Python获得了极大的曝光率
 
2008年Pyhton3.0发布,这个版本属于大破大立,
因为Python3.0并不能兼容Python2
这个一定程度上给Python社区和使用者带来了麻烦
因为经过Python2多年的深耕
在Python2上已经积累了很多成熟的解决方案以及相关库
如果你直接选择Python3可能有一些现有的库无法直接调用,只能自己造轮子
那为什么不能兼容呢 
因为Python2有一些让人诟病的历史遗留问题
比如文本字符和二进制数据的二义性问题
,字符编码的问题等
还有一些细节的变动这里我们不详细展开
我主要提一个你应该知道的编码标准,Unicode
我们都知道计算机只能识别二进制,也就是说
当我用微信给你发信息的时候
我输入的汉字或英文会进行一次编码
转换成二进制数据通过网络传输到你的手机上 
在用同样的编码方案反向操作进行解码
最终你手机上显示的 就是我这边输入的内容
我相信你在生活肯定遇到过文档乱码的问题
这都是编码和解码标准不一致导致的 
Uncode号称万国码 是全球通用的编码标准 名副其实的地球语言
在Python3中全面支持了这个编码方案 并且将其指定为默认编码
那你丫为啥不早点支持呢
Unicode规范从1990年开始研发 1994年才正式公布
那时候Python已经面世了 肯定没法去支持一个还不存在的东西
龟叔本人也坚持不去兼容Python2
毕竟长痛不如短痛
兼容会让Python3变得臃肿 而优雅简洁一直是Python立世之本
做开发的朋友肯定深有体会 兼容就是个无底洞
java倒是始终向下兼容 你看看现在胖的 系个鞋带都费劲
 
我之前曾经说过互联网公司总是滞后的
虽然2008年就发布了Python3 但基本没什么人鸟它
Python2.X依然是市场主流 
此时Python2和Python3并存发展,被官方同时维护更新
 
2010年 Python荣获当年TIOBE的年度编程语言 风头一时无两
英姿飒爽雄鸡装  飞上枝头盖凤凰
Python的第二个十年 是野蛮生长的十年
从小圈子到大世界
Python依靠自身简单优雅的特性
以及借助开源和社区数以百万极客的群众力量
不断壮大声势
越来越多的开发者纷纷路人转粉
投入到Python的怀抱
Python当年的迷妹粉也慢慢变成了亲妈粉
目睹着Python从无人问津变成万人敬仰
互联网时代风起云涌 
从2006年开始,随着神经网络,深度学习等技术的出现
重新点燃了一个可能会影响人类命运的高新技术科学 人工智能
此时 大部分人还不知道 
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独得人工智能的恩宠而不是其他语言
我们先回答第一个问题 
首先需要明确一点
人工智能所有核心的算法,都是依赖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无法火到现在这种如日中天的程度
第一 简单优雅
简单意味好学,好学就意味着开发效率更高
那什么是优雅
同样一个功能 C语言可能几百行 java可能几十行 而Python可能几行就搞定了
这就是优雅
试想你要是自己创业开公司 没钱没人没资源 你会选什么语言呢
 
第二 开源免费
在编程语言界开源就是硬通货,企业都是逐利的
钱能多花就少花 能少花就不花 
像数据分析领域如雷贯耳的matlab
想获得正版授权 价格着实不菲 而且版权问题也令人寒心
以后会不会被Python革命 我们骑驴看账本
第三 胶水特性 
Python一度被人们认为是一种胶水语言
它不仅能和C或者C++混编,还能和java,C#搞到一起
标准版本的Python是使用C编译的,称为CPython
此外还有java的实现版本Jython .net的实现版本IronPython
作为一个主要使用java进行开发的咸鱼程序员 
这个操作把我看愣了 你让其他语言还怎么混
这就好比你跟对手峡谷solo
一抬头发现对手后面站着乌兹,faker,the shy
(这不是欺负老实人)
 
第三 可移植性
可移植性一方面和它开源免费有很大关系
另一方面,Python是解释型语言 
不需要编译可以直接从源码中运行程序 
这个依赖于Python强大的解释器
编程语言从执行过程的角度,可以分为编译型和解释型两种 
我打一个不太合适的比喻帮助你理解 
你去餐厅吃饭 假设你点了10个菜 
如果是十个菜全部做好了 一并给你端上桌 这就是编译型 
如果是做好一个菜上一个菜 这就是解释型 
在这个比喻里 你就是CPU 食材就是程序员的代码 菜就是你能识别的机器语言
可移植性主要说的就是跨平台,你就理解成换桌 
你说是十个菜一块上你比较方便换桌还是一个菜一个菜的上比较方便换桌呢 
 第四 社区力量
群众的力量是巨大的,群众的眼光是雪亮的 
Python发展如此迅速 离不开无数社区程序员的添砖加瓦
而海量的第三方功能库 更是社区送给Python的一份大礼
只要会用搜索引擎,恭喜你 你已经是一个合格的Python程序员了
最后一点 天公作美
这个有点玄学的意味,但是我觉得也不容忽视,我举两个例子
ABC语言没有成功很大一部分原因是当时的硬件不争气
上世纪末 也就是Python刚出来那几年 你猜怎么着
个人计算机飞入寻常百姓家 电脑性能大幅提高
人们不再专注于搜刮硬件性能 而是转而关注计算机的易用性
Python带着诚意迎面扑来 可谓是求锤得锤
VB这门语言由于可视化的优势多年来在编外入门以及教育领域风光无限
在编程新手村可谓出尽风头
你猜这么着 微软为了推广.net平台不再维护它了
Python带着诚意扑面而来 可谓是想玩啥来啥
 
作为一个主要使用java进行开发的咸鱼程序员
说到这 坦白讲 我酸了
我看着年事渐高的java 
想起了那天夕阳下的奔跑
耳边回荡着当年意气风发的java
和Python斗地主时的自说自话 
 
你们可能不知道只用20多年做到市场第一是什么概念
我们一般只会用两个字来形容这种人 NB
我经常说一句话 当年c语言能用unix一统操作系统的江湖
我java靠spring全家桶坐上编程语言的第一 不是问题
埋伏他一首 数据分析不能抢  网络爬虫不用抢 他死定了 
反手加个一个lambda表达式 闷声发大财 他也有lambda 但是不用怕
他的lambda赢不了我
反射,泛型,多线程,活跃社区,海量开源,很牛逼这个牌
如果运行速度再快一点 我这个牌将绝杀 可惜快不了
Python3不向下兼容? sb 你不兼容我兼容
php你出牌啊  写爬虫你都不行吗 php你快点啊 别磨磨蹭蹭的 
漂亮
给php倒杯茶吧 php给你倒一杯卡布奇诺 开启你的爬虫秀
就靠简单好学你能秒我? 你能秒杀我,你今天能凭简单能把我java秒了 
我当场 把这个电脑屏幕给吃掉
 
Python以脚本语言起家
最初被设计用来编写自动化脚本
Python的设计从人的视角出发
以人为本 
使得其语法有几分自然语言的风格
这就注定了它的不平凡 
在面世的前十年
Python本来打算以普通人的身份和世人相处
但是换来的确是疏远
并没有获得多大的关注
进入二十一世纪以来
尤其是近十年间
凭借自身优雅简洁易推倒的特质
以及机器学习,人工智能,大数据处理等高新技术的兴起和发展
脚本这个小寺庙 早已容不下Python这尊大佛
Python在越来越多的领域攻城略地 捷报频传
包括但不限于 数据分析,网络爬虫,web开发,机器学习等
十年寒窗无人问 一朝成名天下知
当年的名不见经传的毛头小子
已经成长为脚踏七彩祥云的盖世英雄
Python爆红即像是顺势而为 多年媳妇熬成婆
又像是天选之子 命格无双 
生来就是要牛逼的 
对于Python的未来我抱有很大的期待
作为一个主要使用java进行开发的咸鱼程序员
忆往昔 看今朝 我此起彼伏
我觉得Python在未来极有可能和java并驾齐驱
甚至是后来居上
Python语言从群众中来 到群众中去
随着奇点临近,AI时代的到来
Python必然还会再上一层楼
互联网的风口瞬息万变 
唯一不变的就是变化本身
不管世界怎么变
Python已经于风口浪尖处稳稳站住了脚跟
你要记我的名 走路有风这叫做自信
未来的编程语言必然会有Python的一席之地
人生苦短 我用python
让我们屏息而待

以上是关于趣谈编程史第3期-人生苦短,不如Python的主要内容,如果未能解决你的问题,请参考以下文章

人生苦短,我用python

人生苦短之Python

人生苦短 Python当歌——Python函数式编程01

人生苦短 PYTHON当歌——PYTHON函数式编程03

人生苦短 PYTHON当歌——PYTHON函数式编程02

人生苦短,我用Python(目录)