我的主人是荷兰人,叫做Guido Van Rossum, 这是个不大容易念的名字,估计很多人现在也不知道怎么去发音。 球迷老刘看到Van ,总是想起范·巴斯滕。
上个世纪80年代,我的主人在CWI公司,经常“折腾”一个叫做Amoeba的分布式操作系统, 在这个OS上他想用脚本语言写点儿程序,做点儿系统管理的工作。主人首先想到了Shell,简单易用,可惜的是它难以调用Amoeba独有的系统API。
有人建议他用C语言来做,说是贴近硬件,性能高, 但主人认为这只是一点系统管理,“微不足道”的编程,用C是典型的杀鸡用牛刀!
之前主人曾经帮助开发过ABC语言, 能不能把它改造一下,拿过来使用呢? 也不行,这个语言太难于扩展了!
左冲右突之后,只剩下一条路了: 自己创造一个编程语言!
Python创世纪
1989年的圣诞假期,主人有大把的休闲时间,决定尝试一下。
既然想要实现的是一个容易使用的脚本语言,那肯定得有一个解释器,这难不住他,人家可是做过ABC这个语言开发的,实现一门语言的经验极为丰富。
当然,主人的野心绝不仅仅是Amoeba平台,一定得让他可以运行在各个OS上面,一定得跨平台。
class, 继承,核心数据结构(string ,dict,list),异常处理......相继被引入,主人还从Modula-3那里借鉴了module的概念。
这期间主人做了一个艰难的决定: 用缩进对齐来代替大括号!代码语句不对齐,就给你报错!
我不知道主人的脑子里是怎么想的, 对于这个决定,你到底是喜欢呢?还是喜欢呢?还是喜欢呢!
到了命名的时候, 主人是英国著名剧团Monty Python的忠实粉丝,所以他就把我正式命名为Python!
奥,差点忘了,我的主人还做了一个非常富有远见的决定:可以用C/C++写模块来扩展Python,你可以把那些性能要求高的模块,按照Python扩展的要求用C/C++写好,编译成.dll或者.so,就可以在Python中调用了。
这个决定引领着Python到处攻城拔地,20多年后在一个特别热门的领域获得了爆炸性的发展,此处先按下不表。
发展
1991年2月, Python 0.9.0 正式发布。
我首先受到了主人同事们的欢迎,他们使用我编写各种各样的程序,不断地提建议,改进。
我想我是遇到了好时候,90年代个人电脑开始进入家庭,性能越来越强劲,程序员们再也不需要榨干每一个字节的内存,每一毫秒的CPU了。 由于我简单易用,很自然,很多人开始使用我来进行编程。
主人建立了maillist, 使用我来编程的用户都可以通过邮件交流。 主人心胸开阔,接受来自不同领域的用户对Python的改进,如果你提交的代码进入了标准库,那可是极大的荣耀。
由于主人有至高无上的裁决权,从这个时候开始,他被称为“终身的仁慈的独裁者”。
这个称号将一直保留到2018年。
Java
1994年,我升级到了1.0 版本。 这个版本里包括了函数式编程的特性,例如lambda, map,filter,reduce等。
想想Java 一直等到第8个版本才引入函数式编程,都20年以后了,实在是太落伍啊,哈哈。
提到Java,我就来气,这小子1996年才发布第一个正式版本,凭什么混得比我好?!
他是“Write once ,run anywhere ”, 难道我不是吗?
他有虚拟机,我也有虚拟机啊!
我的语法比他简洁得多,一行抵他10行!
后来我也想通了,可能最大的区别就是他有个好爸爸 (Sun 公司)吧。
这小子确实是运气好, 当时的桌面开发几乎被微软所统治, 他确另辟蹊径(被逼无奈?),成功地开辟了新的领地: 服务器端开发。 他们几个大公司,Sun , IBM, Oracle 等还搞了一个什么J2EE的标准,要规范企业应用开发市场,忽悠,就忽悠去吧。
(参见:《Java : 一个帝国的诞生》)
不过我也听人说,他的虚拟机确实不错,效率高,性能强悍。 什么hotspot能把字节码编译成本地代码,还是挺厉害的。
不过我的主人也不是吃素的,他发起了一个活动叫做Computer Programming for Everybody(CP4E)的活动,想让每个人都学一点儿编程的知识, 于是我就顺理成章地被作为一门易学易用的语言给推广了。
但是相比于企业界的大忽悠们,CP4E明显地要矮一截。 J2EE忽悠了不少企业和程序员,那些公司也赚得盆满钵满, 等到大家意识到这是一个大坑时, 我觉得Java这小子可能要完蛋了。
可是没想到又出来一个叫Spring的轻量级框架,大家欢天喜地地转移阵地了,真让人无语。
Killer Application
什么是Killer Application? Ruby on Rails就是典型!
Ruby 这小子10多年来一直默默无闻,2004年随着Ruby on Rails的横空出世,突然间红得发紫,无数程序员趋之若鹜。
用现在时髦的话来说,那就是“爆款”!
Java 有Spring,Hibernate, myBatis , JavaScript早些年有jQuery,后来前后端分离后,又出现了Angular, Vue, React争奇斗艳。
我曾经问过主人:“我们有Killer Application吗?”
主人说:“早些年有个叫Zope的框架,还是挺热门的,现在Web开发,不是有Django, Flask吗?”
“可是和Ruby on Rails这样的网红比起来,还是不够吸引眼球啊!”
主人教育我说:“我不喜欢Killer Application,因为那会让多数人或者社区将精力集中于一个地方。Python是一个应用广泛的语言,基于Python已经产生了很多好用的Web框架,比如Django等。但是Python不需要Killer Application,至少目前是这样,而且我相信随着Python社区的发展,会有很多Killer Applications自然出现。我喜欢多样化的应用。”
好吧,也许主人是对的,但是如果有个Killer Application, 肯定能吸引更多的程序员啊。
忽如一夜春风来,千树万树梨花开
老天会偏爱那些坚持的同学, 随着时间的发展, 主人的策略开始奏效,我那简单易学、简洁快速的优势开始发威,在各个领域四处开花。
创业者可以使用我快速地搭建产品原型,让产品迅速上线。
搞研究的科学家们经常用我写点儿小程序,他们为什么不用C, 不用Java, 麻烦啊,那些小程序经常是一次性的,验证结束了,就可以丢弃, 用我可以快速地写出来,代码还少,调试起来也方便。
现在系统越来越庞大,运维越来越重要,很多运维的工具都是使用我来开发的, 不要忘了,这可是Python诞生的初心啊。 Java 那啰嗦的语法肯定是不行了。
还有不知道从哪一年兴起的爬虫程序,疯狂地从网上爬数据做分析,程序员发现,用我来编写爬虫,简直是太合适不过了, 运行速度慢?瓶颈不在我这里,是在网络IO!
......
人生苦短,我用Python,成了一个响亮的口号。
我高兴地Java说:“别看你号称称建立了一个帝国,在你帝国的每个领域,几乎都有我Python的影子。”
Java 就来揭我的伤疤:“你还是使用引用计数做垃圾回收啊!出现循环引用咋办呢?”
到2000年, Python 2.0发布的时候,这个问题终于被解决掉了。 可是这小子又来使坏:“你的那一把大锁GIL什么时候干掉啊?”
唉,这一点我向主人抱怨过多次了,主人也表示为难:“当时为了支持用C语言开发扩展库,我弄了个GILL, 让那些扩展库都不必考虑线程安全问题,很容易被集成进来。现在看来,真是一把双刃剑,改起来很难了!”
(参见: 《Java虚拟机和Python解释器的硬盘夜话》)
爆发
好运来了,挡都挡不住,Google的AlphaGo给全世界做了人工智能的“洗脑”以后,我的好日子就真的到来了。
还记不记得主人做出的那个英明的决定: 可以用C/C++等语言来编写模块扩展Python ?
那些人工智能的开发包为了性能,基本上都是C/C++写的,现在封装一下,让程序员通过简洁的Python来调用,岂不是绝配?
人工智能越炒越热,我也随着火爆起来,热度嗖嗖蹿升。曾经入侵过后端开发,大数据,手机端开发的Java这一次没有办法,只有看着我一骑绝尘了。
不过我也有点儿小担心,是不是热得过头了? 这人工智能,机器学习到底落地了多少解决方案?现在的很多聊天助手我怎么觉得有点儿弱智呢? 那些号称经过机器学习的,识别率很高的语音输入法怎么难以准确识别老刘那英文专业词汇呢? 真正的强人工智能, 科学家们描绘的美好场景什么能实现呢?
还有,大家要小心,有些无良的培训机构,号称是机器学习的课程,实际上就是学习Python而已,机器学习还是需要很强的数学基础的,各位可要瞪大眼睛啊!
未来
不可否认,有个“好爸爸”是很重要的,微软支持自己的C#, Oracle/IBM 等大企业支持Java,Facebook用PHP, 而我似乎一直在民间像野草一样生长。
后来我也找到了一个大靠山: Google。
我的主人也加入了Google, 据说他去Google面试的时候简历上只写了一句话: 我创造了Python。
在Google 期间, 主人花了一半的时间来开发Python语言,他还是那个仁慈的独裁者。
2012底,他离开了Google, 并于次年1月进入DropBox, 我也不清楚具体原因,好像是他想去一个小一点的公司工作吧。
2018年7月,当了近30年的“独裁者”以后,主人觉得累了,尤其是心累。
一个非常有争议的Python改进提案(即 PEP 572 ) 成了压倒骆驼的最后一根稻草,主人接受提案之后,有些人去了像 Twitter 这样的社交媒体并说出了一些真正伤害主人的话语。
主人决定“退位”, 他没有指定继承人,只是要求核心团队思考后续的管理模式,选举下一任“独裁者”。
震惊之余,我也在思考我的未来, 主人只是“退位”,并没有退出,仍然是一个核心开发人员,再说Python有着成熟的社区,前途还是无比光明的,这一点,我毫不怀疑!