Python:忽如一夜春风来,千树万树梨花开

我的主人是荷兰人,叫做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有着成熟的社区,前途还是无比光明的,这一点,我毫不怀疑!


相关阅读:

Java : 一个帝国的诞生

Java虚拟机和Python解释器的硬盘夜话

在AI看起来已成为大势的情况下,传统Java后台开发,前景如何?


(完)

码农翻身,用故事讲解技术本质, 更多精彩文章,请移步《码农翻身三年文章精华

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值