Python为什么这么火?聆听Python之父诠释Python的精神和文化

最近EETOP先后发过几篇关于Python的相关文章:

用Python给头像戴圣诞帽

Python实例代码:ADC拟合、频谱计算

用Python设计芯片

基于Python的数字信号处理初步

11 行 Python 代码实现神经网络

(关注EETOP,后台输入:python 可查看)

由于Python更多的是面向软件行业的,好像与EETOP关系不太大,所以有网友善意的开玩笑,说EETOP应该改成CSTOP更好。

其实从上面列出的这些文章来看,Python也正在渗入到硬件设计行业,因此建议EETOP网友有机会可以多关注,多了解。

好了,废话不说了,请看今天分享的正文(来源:yak芽课):

聆听Python之父诠释Python的精神和文化

Python之父-Guido van Rossum

Guido van Rossum是Python编程语言的创始人,生于荷兰哈勒姆。现居美国,曾就职于Google公司。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发无聊的圣诞假期,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他迷上了英国肥皂剧《Monty Python飞行马戏团》在Python社区,吉多·范罗苏姆被人们认为是“仁慈的独裁者”(BDFL),意思是他仍然关注Python的开发进程,并在必要的时刻做出决定。

Guido van Rossum

2005年12月,吉多·范罗苏姆加入Google。他用Python语言为Google写了面向网页的代码浏览工具Mondrian,之后又开发了Rietveld。在那里他把一半的时间用来维护Python的开发。2012年12月7日,Dropbox宣布吉多·范罗苏姆加入Dropbox公司。

Guido van Rossum在2016年荷兰“King’s Day”的时候,被驻洛杉矶的荷兰大使馆邀请做一次演讲,观众是荷兰和美国的企业家。以下是演讲的内容。部分内容是自传,部分内容是关于编程的重要性,部分是关于Python的大思想。

Python: 社区创造的编程语言

我是一个nerd, 一个geek。我26岁大学毕业,45岁结婚。如今我60岁了。

我不是乔布斯, 也不是扎克伯格,但是在35岁的时候创造了一门编程语言。这门语言真的很不可思议。

我们的团队开始创造一门新的编程语言。我们希望可以取代Basic。Basic在微电脑例如苹果二代中使用,是业余程序员的选择。我们的团队看来,Basic将最终被取代。

我们最初创造了ABC,但是最终舍弃了ABC。ABC之所以失败的原因在于在那个时候没有互联网,在开发者和使用之间没有反馈的闭环。ABC最终是单行道的街道。

五年之后,我拾取了之前的经验,在ABC之前的反馈环做改进。互联网,小而慢,却让这成为可能。过去25年,互联网和开源的运动,确实改变了所有。我相信,这些发展对于我程序语言的成功的贡献远超过我的编程技巧和经验。

我将这门语言命名为Python。对于我来说,这是为了纪念喜剧天才Monty Python。

我这里想说一下编程语言对于程序员来说意味着什么。尤其是一个程序员需要向一个外行人解释什么是编程的时候。他们说:编程是告诉计算机做什么。你好奇的是,如果仅仅是如此的话,为什么当他们之间谈论的时候,会如此热情高昂呢?

现实来说,编程语言是程序员表达和交流思想的工具,观众是其他的程序员而不是电脑。在程序中所表达的思想会达到终端用户,尽管他们从没阅读甚至知道编程,但是确实是受益并且并影响着。

想象下Google和Facebook这样无比成功的公司取得的难以置信的成功。他们核心的理念-关于电脑能够为人类做些什么。而这些核心的理念是用程序语言来表达的。最好用来表达这个理念的程序语言是最能获得用户的。尽管Google和Facebook公司的理念不尽相同,但是这两个公司最偏爱的程序语言确实截然相反的。这正是我想说的。

真实的故事: Google公司的第一个版本是用Python写下的。原因在于:Python是Larry Page和Sergey Brin关于如何索引网页和组织搜索结果的思想的正确语言。那么Python有何不同呢?和其他程序语言相比,是如何脱颖而出的呢?

我有许多答案。一些是技术层面上的,一些是从使用的具体技巧和经验,一些仅仅是关于在正确的时间和正确的地点。但最最重要的是Paython是在互联网上发展的语言,完全开源,由一群志愿者组成的社区开发,但是这个社区不是业余,绝对是专业的。他们充满热情,也拥有绝对的原创权。

他们就是科学大楼地下室里那群极客们。我很开心能成为这个社区中的一员。我也很开心能够在每天的工作中感受到如何需要社区(我是Dropbox公司的工程师)。

因为可以感受到社区,我感受到自己是真实存在的。我想其他社区的成员也会和我有着同样的感受。这样的感受是会传染的,如今整个世界都存在着社区的成员。

Python 社区由数以百万的极客们组成,他们持续使用Python,并且喜爱使用着。 一些活跃的成员还经常组织Python会议,就是大家所熟知的PyCons。会议在纳米比亚,伊朗,伊拉克,甚至俄亥俄州举行。

我最喜欢的故事:一年前,我花20分钟的时间在伊拉克南部巴比伦大学的教室和工作人员的电话会议上回答有关Python的问题。由于组织这个活动的一个领导者的努力,在巴比伦大学现在可以使用Python编程语言。想到这次的经历,我都很激动。我从没想过我会触摸如此遥远的生命,与我自己的生活截然不同。

一个由社区创建的编程语言促进了全世界用户的幸福。 明年(2017年)我可以参加古巴的PyCon!

Python的生命力-Python的深度和广度

最近我注意到了一个趋势:我开始用更多的时间来进行面对面的深入交流,编码时间也更少。 虽然我后悔,但是我真的很享受前者的过程。

我本周特别喜欢的两次与用户交谈的对话都是和非常快乐的Python用户,当然他们不可能有更多的不同。对我来说,这是对Python持久的深度和广度的证实:它远远超出了你所能想象的单一技巧语言。

我的第一个访问者是纽约州石溪大学(Stony Brook University)计算机科学教授Annie Liu 在一个持续了将近三个小时的互动对话中(她还有更多的话要说:-),她向我解释了她的研究的要点,就是使用集合理解写下小型的Python程序,来执行基本算法。然后优化用一种自动化的方法把它剔除出来,她总结为三个:迭代,增量和实现。 当她的学术同事嘲笑她选择像Python这样的非理论性语言时,可是她的学生们喜欢它,而且她获得了不需要高级LaTeX技能的值得出版的结果,也没有用像SETL这样的死亡语言写作。

她叙述的另一个轶事,但不知何故,我忘记了,直到她提醒我。 是关于Python的缩进使用的起源。这件轶事发生在Python创建之前很久。在一家酒店的IFIP工作组会议上,一天晚上,代表们不能同意用于代码块的最佳分隔符。

在桌子上是古老的BEGIN ... END,newcomers{...},还有一些古怪的东西,如IF ... FI和缩进。 无奈之下有人说这个决定必须由一个非程序员做出。唯一一个人显然是罗伯特·杜瓦尔的妻子,当时她和丈夫一起去。 尽管时间已经很晚了,她却从她的旅馆里被叫下来,要求她作出独立的选择。 她立即决定,以纯粹的缩进结构是赢家。

现在,我可能已经把细节弄错了,但显然Lambert Meertens在场,他继续设计Python的前身ABC,尽管当时他把它叫做B (斜体意味着B不是语言,但包含语言名称的变量的名称)。 在他的版本中,只有兰伯特·米尔滕斯(Lambert Meertens)和罗伯特·杜瓦(Robert Dewar),罗伯特·德瓦尔(Robert Dewar)的妻子因为想睡觉而选择了缩进。无论哪种方式,这是一个迷人而强大的故事。

当然,Annie也提出一些要求。这里简要如下:

Quantifiers 量词。 她真的很渴望ABC(及其“EACH x IN xs HAS pred”)中的“ Some x IN xs HAS pred”符号被使用,它表面上类似于Python的any()和all()函数,但增加了语义使得x在测试成功时被执行的范围中可用。

声明类型(尽管我认为她会对Python 3的函数注释感到满意,可能会增加Django和App Engine模型类中的属性声明。)

模式匹配,一个Erlang。我一直在不时地把这些东西剔除, 很难找到真正具有闪光点的语法,但它似乎是一个有用的功能。

这和我第二天的来访者形成鲜明的对比。通过一位前同事,我认识了创业公司Dropbox创始人兼首席执行官德鲁•休斯顿(Drew Houston)。 Dropbox目前拥有2500万用户,在Amazon S3上存储PB级的数据,德鲁是一个随和的麻省理工学院毕业生,他同样很喜欢讨论定制内存分配器,风险投资的世界,以及如何保持工程师的快乐。

Python在Dropbox创业成功中有着重要的作用。 在Windows,Mac和Linux(!)上运行的Dropbox客户端是用Python编写的。 这是可移植性的关键:除UI之外的所有内容都是跨平台的。 (用户界面在Mac上使用Python-ObjC桥接,在其他平台上使用wxPython)性能从来就不是一个问题 - 理解少量关键部分是用C语言编写的,包括用于某个特定内存的自定义内存分配器其分配模式涉及分配100,000个这样的对象的类型,然后释放除了几个之外的所有对象。 在您开始使用Dropbox发行版并了解其工作原理之前,请注意不要包含源代码,并且字节码会被混淆。德鲁不是傻子。他还嘲笑那些正在使用Java的可怜的竞争对手

重点关注两件事情:满足Python用户和编码。 这就是生活!

Python 编程哲学

在使用编程语言的时候,你最好有幽默感

1. 美观先行

2. 直接明了

3. 大道至简

4. 可以复杂,但要能够理解,不繁琐

5. 平整,最好不用嵌套

6. 稀疏不密集

7. 责任感很重要

8. 特殊案例也不可以特殊到打破规则

9. 实用胜于简洁

10. 错误不可无声无息

11. 不可模棱两可

12. 只有一个明显的方式方法,虽然开始并不明显

13. 现在胜过从不

14. 如果执行很难解释,那这不是一个好的执行。

15. 命名空间是个绝好的主意,让我们多利用它。 -------Tim Peters

尽管这样的“散文体”规则看起来像个笑话,但是真的说明了一些Pathon本质的原则,关于Python的本质已经被正式在PEP20上面说明。见链接

http://www.python.org/dev/peps/pep-0020/

以上说了这么多,也没有直接说出python为什么会这么火?

小编最近也在接触和使用python,感觉到有以下几点,欢迎大家留言补充:

编程简单明了,非常容易上手

对于新手和初学者来说,Python是非常容易学习和使用的。事实上,它是最容易学习的编程语言之一。部分原因是因为它简化了的语法,更贴近于自然语言,这样你就可以编写Python代码并更快地执行。

比如小编的孩子还在上小学,开发了一款无人遥控船,就是采用Python来做的,在大人的指导下上手很快,如果采用C语言,那可想而知,现在还在语言学习中。

有庞大的外围库来支持,比如科学计算、人工智能等都有成熟高效的库。

Python虽然是解释型语言,大家会觉得效率低,但是很多需要大量计算的复杂运算都是通过库来完成的,Python只是完成调用,所以所谓的效率并不能阻碍Python的流行。

有庞大的爱好者的强力支持

Python拥有一个健康活跃且能提供有力支持的社区如果你学习过编程,你一定会发现有的编程语言因缺乏文档和开发人员支持,很不容易上手使用。而Python并没有这些问题,它已经存在了很长时间并在这段时间中积累了大量的文档、指南、教程等等。此外,Python的开发者社区拥有难以置信的活跃。这意味着当有人需要在任何情况下得到帮助或支持时,他们都会得到及时的响应。

本文来自企鹅号 - EETOP媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

不拼颜值的编程世界你靠什么上位?

随着功能需求的逐步升级,编程语言的更新换代也变得越来越频繁,近年来编程语言的种类更是已经突破了600大关。在前浪不断被拍在沙滩上的编程语言世界里,斑斑却发现每一...

8810
来自专栏battcn

为学习优化

“一分耕耘、一分收获”。你在学习上付出的越多,你的回报就越多,虽然不成正比,但也差不多。

10340
来自专栏程序员互动联盟

【编程牛人】C++之父

本贾尼·斯特劳斯特卢普 1982年,美国AT&T公司贝尔实验室的Bjarne Stroustrup博士在c语言的基础上引入并扩充了面向对象的概念,发明了—种新的...

41860
来自专栏ACM算法日常

想去硅谷、BAT工作?算法面试通关攻略在这里

一整套视频还是很有价值的,我这几天也看了最新的几集,对于新手比较友好,对于有一定经验的可能觉得简单。

29820
来自专栏C/C++基础

浅论C++的复杂性

C++语言已经有了30多年的历史。作为一门影响广泛的编程语言,它所受到的关注和争论恐怕是任何一门其他的语言所不能比拟的。十几年前,Java等新生语言的出现曾导致...

13220
来自专栏java一日一条

不拼颜值的编程世界你靠什么上位?

随着功能需求的逐步升级,编程语言的更新换代也变得越来越频繁,近年来编程语言的种类更是已经突破了600大关。在前浪不断被拍在沙滩上的编程语言世界里,斑斑却发现每一...

8520
来自专栏工科狗和生物喵

【计算机本科补全计划】构建之法读书笔记

正文之前 首先,说句实话:真的写得好,让我情不自禁就给我的学长推荐了,读完绪论我就有预感,我会放下我手头读的如痴如醉的《C++ Primer》,转而把这本构建之...

370100
来自专栏程序员互动联盟

作为大三的学生,需要为找工作做点什么准备?

疑惑一 数据结构很难嘛? 很多小伙伴在微信后台问,数据结构为啥学起来这么难,数据结构其实就是在c语言的基础上对数据进行抽象的处理,其实就是在基础语言的基础上进一...

34280
来自专栏杨建荣的学习笔记

大话UML中类之间的关系 (r4笔记第83天)

关于uml的内容在大学的时候学习过,感觉是花拳绣腿的一些知识,想用但是限于自己的认知和经验,实在是很难运用,到了工作的时候,感觉不需要这些工作也照样能做得很出色...

33780
来自专栏前端儿

2015腾讯暑期实习生 Web前端开发 面试经历

试题上一般都会涉及:操作系统、数据库、计算机网络、C/C++、编译原理、概率论、算法、更甚的还出现js、ios ...

17210

扫码关注云+社区

领取腾讯云代金券