文章插图
Windows 3.0
由于计算机性能的提高,软件的世界也开始随之改变 。硬件足以满足许多个人电脑的需要 。硬件厂商甚至渴望高需求软件的出现,以带动硬件的更新换代 。C++和java相继流行 。C++和Java提供了面向对象的编程范式,以及丰富的对象库 。在牺牲了一定的性能的代价下,C++和Java大大提高了程序的产量 。语言的易用性被提到一个新的高度 。我们还记得,ABC失败的一个重要原因是硬件的性能限制 。从这方面说,Python要比ABC幸运许多 。
另一个悄然发生的改变是Internet 。1990年代还是个人电脑的时代,windows和Intel挟PC以令天下,盛极一时 。尽管Internet为主体的信息革命尚未到来,但许多程序员以及资深计算机用户已经在频繁使用Internet进行交流 (包括email和newsgroup) 。Internet让信息交流成本大大下降 。一种新的软件开发模式开始流行:开源 (open source) 。程序员利用业余时间进行软件开发,并开放源代码 。1991年,Linus在comp.os.minix新闻组上发布了Linux内核源代码,吸引大批hacker的加入 。Linux和GNU相互合作,最终构成了一个充满活力的开源平台 。
硬件性能不是瓶颈,Python又容易使用,所以许多人开始转向Python 。Guido维护了一个maillist,Python用户就通过邮件进行交流 。Python用户来自许多领域,有不同的背景,对Python也有不同的需求 。Python相当的开放,又容易拓展,所以当用户不满足于现有功能,很容易对Python进行拓展或改造 。随后,这些用户将改动发给Guido,并由Guido决定是否将新的特征加入到Python或者标准库中 。如果代码能被纳入Python自身或者标准库,这将极大的荣誉 。Python自身也因此变得更好 。
(Guido不得不作出许多决定,这也是他被称为Benevolent Dictator For Life的原因)
Python被称为“Battery Included”,是说它以及其标准库的功能强大 。这些是整个社区的贡献 。Python的开发者来自不同领域,他们将不同领域的优点带给Python 。比如Python标准库中的正则表达(regular expression)是参考Perl,而lambda, map, filter, reduce函数参考Lisp 。Python本身的一些功能以及大部分的标准库来自于社区 。Python的社区不断扩大,进而拥有了自己的newsgroup,网站(python.org),以及基金 (Python Software Foundation) 。从Python 2.0开始,Python也从maillist的开发方式,转为完全开源的开发方式 。社区气氛已经形成,工作被整个社区分担,Python也获得了更加高速的发展 。
(由于Guido享有绝对的仲裁权,所以在Python早期maillist的开发时代,不少爱好者相当担心Guido的生命 。他们甚至作出假设:如果Guido挂了的话,Python会怎样 。见If Guido was hit by a bus)
到今天,Python的框架已经确立 。Python语言以对象为核心组织代码(Everything is object),支持多种编程范式(multi-paradigm),采用动态类型(dynamic typing),自动进行内存回收(garbage collection) 。Python支持解释运行(interpret),并能调用C库进行拓展 。Python有强大的标准库 (battery included) 。由于标准库的体系已经稳定,所以Python的生态系统开始拓展到第三方包 。这些包,如Django, web.py, wxpython, numpy, matplotlib,PIL,将Python升级成了物种丰富的热带雨林 。
今天Python已经进入到3.0的时代 。由于Python 3.0向后不兼容,所以从2.0到3.0的过渡并不容易 。另一方面,Python的性能依然值得改进,Python的运算性能低于C++和Java(见Google的讨论) 。Python依然是一个在发展中的语言 。我期待看到Python的未来 。
Python启示录
Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言 (TIOBE语言排行第八,Google的第三大开发语言,Dropbox的基础语言,豆瓣的服务器语言) 。这个世界并不缺乏优秀的语言,但Python的发展史作为一个代表,带给我许多启示 。
- 每天学Python-Python的实例属性与类属性的学习及使用
- Python制作Excel图表之Reference详讲
- Python并发编程怎样选择多线程多进程多协程
- 9 Python人工智能入门:Python语法之字符串操作
- 《Python学习笔记》001.计算机基础
- Java架构-MongoDB基础入门到高级进阶-MongoDB与关系型数据库对比
- 三阶魔方超详细入门教程,保证学会4:复原第二层
- 瑜伽初入门教学视频,真正适合瑜伽初学者学习的瑜伽基础教学课程_百度...
- photoshop新手入门视频教程,可下载的
- 炒股入门与技巧