1989年12月,荷兰,阿姆斯特丹。
圣诞假期开始了。大多数人选择陪伴家人、外出旅行、或者在家休息。
但一个程序员坐在电脑前,开始写代码。
他不是在工作——他在做一个业余项目,打发无聊的假期。
他想设计一门新的编程语言。这门语言应该:
- 简洁优雅,容易阅读
- 功能强大,可以做任何事情
- 适合初学者,也适合专家
他开始敲击键盘。
这个程序员叫吉多·范罗苏姆。他正在创造Python——后来世界上最流行的编程语言之一。
为什么叫Python?#
你可能好奇:为什么这门语言叫Python?和蟒蛇有关吗?
其实,Python的名字来自Monty Python——一个英国喜剧团体。
吉多是Monty Python的粉丝。他觉得编程应该是有趣的,不是严肃枯燥的。用喜剧团体的名字来命名编程语言,正体现了这种精神。
Python的文档和教程里,也经常出现Monty Python的梗。比如,示例代码里的变量名常用spam、eggs——这是Monty Python小品里的梗。
虽然Python的标志是两条蛇,但吉多更喜欢喜剧,而不是爬行动物。
Python的诞生#
吉多当时在荷兰的国家数学与计算机科学研究中心(CWI)工作。
他参与了一个叫ABC的语言项目。ABC的设计目标是:让非程序员也能编程。ABC简洁易学,但功能有限,没有成功。
吉多从ABC学到了很多设计理念。他想创造一门新语言,既保持ABC的简洁,又增加更多功能。
1989年圣诞假期,他开始写Python的解释器。1991年,他发布了Python 0.9.0。
Python最初只是吉多的业余项目。他没想到它会改变世界。
Python的设计哲学#
Python的设计哲学可以用一句话概括:简洁优于复杂,可读性优于简洁。
吉多写过一篇文章《Python之禅》,总结了Python的设计原则:
美丽优于丑陋 明显优于隐晦 简单优于复杂 复杂优于难懂 扁平优于嵌套 稀疏优于稠密 可读性很重要
这些原则指导着Python的设计。Python代码看起来像伪代码——接近自然语言,容易理解。
比如,计算1到100的和:
total = sum(range(1, 101))对比C语言:
int total = 0;
for (int i = 1; i <= 100; i++) {
total += i;
}Python更简洁,更易读。
Python的发展#
Python早期发展缓慢。它只是吉多的业余项目,没有商业支持。
1994年,Python 1.0发布,增加了lambda、map、filter等函数式编程特性。
2000年,Python 2.0发布,增加了列表推导式、垃圾回收等功能。
2008年,Python 3.0发布。 这是一个重大更新,不兼容Python 2。
Python 3修复了许多设计缺陷,但也带来了迁移问题。许多项目不愿意迁移到Python 3,导致Python 2和Python 3长期共存。
直到2020年,Python 2才正式停止支持。
Python的崛起#
Python早期主要用于系统管理和脚本编写。它简单易学,适合快速开发。
但Python真正崛起,是在两个领域:
第一,数据科学。
2010年代,数据科学开始兴起。Python有丰富的数据处理库:
- NumPy:数值计算
- Pandas:数据分析
- Matplotlib:数据可视化
- Scikit-learn:机器学习
这些库让Python成为数据科学家的首选语言。
第二,Web开发。
Python有强大的Web框架:
- Django:全功能框架,适合大型项目
- Flask:轻量框架,灵活可扩展
Instagram、Pinterest、Dropbox等公司使用Python开发后端。
Python与AI#
2010年代后期,深度学习兴起。Python成为AI的主流语言。
关键框架都是Python:
- TensorFlow:Google开发的深度学习框架
- PyTorch:Facebook开发的深度学习框架
- Keras:高级神经网络API
为什么AI选择Python?
第一,简单易学。 AI研究者不一定是编程专家,Python降低了门槛。
第二,丰富的库。 NumPy、Pandas提供了数据处理基础,AI框架可以专注模型。
第三,胶水语言。 Python可以调用C/C++代码,AI框架的底层用C++实现高性能,Python提供易用接口。
今天,如果你想学习AI,Python是必学的语言。
Python的流行#
Python已经成为世界上最流行的编程语言之一。
在TIOBE指数、Stack Overflow调查、GitHub项目数等排名中,Python经常位居前列。
Python流行的原因:
入门简单:语法简洁,适合初学者。很多大学用Python作为编程入门语言。
功能强大:从Web开发到数据科学,从自动化脚本到AI,Python几乎可以做任何事情。
生态丰富:PyPI(Python包索引)有超过40万个第三方库,几乎任何需求都有现成的解决方案。
社区活跃:Python社区友好包容,新手容易获得帮助。
吉多的故事#
吉多长期担任Python的"仁慈独裁者"(BDFL)——他拥有最终决定权,但通常会听取社区意见。
2018年,因为社区对一项语言特性的争议,吉多宣布辞去BDFL角色。他说:“我累了,需要休息。”
Python社区成立了指导委员会,集体决策语言的发展方向。
吉多现在在微软工作,继续参与Python开发。他说:“Python的成功超出了我的想象。我只是想创造一门自己喜欢的语言,没想到它改变了世界。”
Python的局限#
Python不是完美的语言。
性能问题:Python是解释型语言,比编译型语言慢。虽然可以用C扩展加速,但核心仍然是Python。
移动开发:Python在移动端(iOS、Android)支持不好,不适合开发移动应用。
并发编程:Python的全局解释器锁(GIL)限制了多线程性能。
但在大多数场景下,Python的优势远大于劣势。开发效率比运行效率更重要。
下一步:开源运动#
Python是开源软件。任何人都可以查看源代码、修改、分发。
开源运动改变了软件行业。Linux、Apache、Firefox、Python……开源软件无处不在。
明天,我们来讲开源运动的故事——Linux如何挑战微软,开源如何改变世界。
今日知识点#
解释型语言(Interpreted Language) 代码不需要编译,由解释器逐行执行。Python、JavaScript、Ruby都是解释型语言。解释型语言开发效率高,但运行速度比编译型语言慢。
Python之禅(The Zen of Python)
Python的设计哲学,强调简洁、可读、实用。在Python解释器中输入import this可以看到全文。“美丽优于丑陋,简单优于复杂"是核心理念。
胶水语言(Glue Language) 可以把不同语言的代码"粘合"在一起的语言。Python可以调用C/C++库,常用于连接底层高性能代码和上层应用逻辑。
思考题#
- Python的设计哲学强调"可读性很重要”。你觉得代码的可读性和运行效率,哪个更重要?
- Python成为AI时代的主流语言,你觉得是偶然还是必然?
明天预告:开源的力量——Linux如何从一个人的业余项目变成软件世界的基石?
