Python 的技术优势是什么?—— 以 Monty Python 命名

好吧,这其实并不是一个技术优势。它的确看起来是一个在 Python 世界里令人惊讶的保存很好的秘密,我希望提前分享。尽管在 Python 的书籍和图标上有各种爬行动物。但实际上 Python 是以英国的喜剧团体 Monty Python 命名的。他们是 20 世纪 70 年代 BBC 喜剧系列剧集 Monty Python’s Flying Circus 和 一些随后的标准长度的电影(包括 Monty Python and the Holy Grail)的制作者,这些作品在当前仍广为流行。Python 的原作者和许多软件开发者一样是 Monty Python 的粉丝(的确,在这两个领域似乎有某种对称性。。。)。 这个剧集对 Python 的遗留影响不可避免地给 Python 的代码示例添加了幽默感。比如,传统的通用变量名 “foo” 和 “bar” 变成了在 Python 世界中的 “spam” 和 “egg” 。偶尔出现的 “Brian”,“ni” 和 “Shrubberry” 同样要得益于他们的同名事物。这种影响甚至扩大到了整个 Python 社区。Python 会议上的一些事件经常被宣传为 “The Spanish inquisition”(剧集中的一个小品)。如果你熟悉这个剧集,对所有这些就会感很开心,但如果不熟悉,就没有那么开心。你不需要熟悉 Monty Python 的作品来理解引用它的一些例子(包括许多你将在本书里面看到的),但至少你知道他们的起源。(嘿,我已经警告过你了。) 本文章首发在 LearnKu.com 网站上。

上一篇下一篇

Markdown 文本

纠错改进

Python 是如何与 语言 X 比较的?

最后,将 Python 放在你已经知道的背景下,人们有时将 Python 和其他语言如 Peal,Tcl 和 Java 进行比较。这一节。总结了这种比较的一些共识。我想提前声明我不喜欢通过贬低对手来赢得胜利 —— 这样做不长久,而且并不是我的目标。更重要的是,这并不是一个零和游戏 —— 大多数程序员在他们的职业生涯中都会使用多种语言。然而,编程工具提供了值得考虑的选择和妥协。毕竟如果 Python 不提供超出替代品的东西,那么它不会一开始就一直被使用。 我们之前已经谈论过性能的妥协,所以这里我们将关注功能。虽然其他语言也是值得知晓和使用的有用工具,但许多人发现 Python:
  • Tcl 更强大。对 “大规模编程的” 的强大支持使得它适合开发更大的系统,并且它的应用程序工具库也更广。
  • Pearl 更可读。Python 语法清晰,设计简单一致。这让 Python 更可重用和可维护,并且减少了程序的 bug。
  • 使用起来比 Java C# 更简单。Python 是一门脚本语言,但 Java 和 C# 都从更大的 OOP 系统语言如 C++ 继承了许多的复杂性和语法。
  • 使用起来比 C++ 更简单。Python 的代码比完成同样工作的 C++ 更简单,通常是它大小的 1/3 到 1/5。然而作为一门脚本语言, Python 可以发挥多种不同的作用。
  • C 更简单和 高层次。与底层的硬件架构脱离,使得代码更简单,构造地更好,比 C (C++ 的 祖先)更容易理解。
  • VB 更强大、通用、跨平台。Python 是一个功能更丰富的语言,应用得更广泛,并且它的开源特性也意味着不会被一个单独的公司所控制。
  • PHP 更可读和更通用。 Python 也可以是用来构建网站,但是它也能应用到几乎其他每一个计算机领域,从机器人到电视,动画和游戏。
  • Javascript 更强大和通用。Python 有一个更大的工具集,并且不是和 web 开发紧密地绑定。它也适用于科学建模、仪器测量等。
  • Ruby 更可读和著名。Python 语法更整洁,特别是在重要的代码中,并且它的 OOP 对用户和不需要使用 OOP 的项目来说是完全可选的。
  • Lua 更自然且关注的更广。 Python 更大的功能集和更广泛的库支持让它的范围比 Lua(一门类似 Tcl 的 内嵌的 “胶水” 语言)更广。
  • 没有 SmalltalkLisp prolog 那么罕见。 Python 有像这些语言的动态特性,也有开发者和可定制系统终端用户都可以理解的传统语法。
特别是对不限于扫描文本文件和可能在未来被其他人(或者是被你自己)阅读的程序而言,许多人发现 Python 比当今其他可用的脚本或编程语言更能够满足需要。而且,除非你的应用需要最好的性能,Python 通常也是一个对系统开发语言如 C,C++, Java 可行的替代方案:Python 代码通常能够达到同样的效果,但是编写、调试、维护都会更简单。 当然。你的作者从 1992 年就一直是一个正式的 Python 布道者,所以你们就自己看着办吧(其他语言的倡导者的意见可能会非常不同)。然而上面这些确实反映了许多花费时间去探索 Python 提供功能的开发者普遍经验。

本章总结

本书的 “炒作” 部分到此结束。在这一章里我们已经探索了人们 为他们的编程任务选择 Python 的一些原因。已经看到了它是如何应用的和学习了今天谁正在使用它的一个代表性例子。然而我的目标是讲授 Python,而不是销售它。判断语言的最好方式是在实践中看它的工作效果。所以本书的剩余部分将主要关注本章绕过的语言细节。 接下来的两章将会开始对语言的技术介绍。其中,将探索运行 Python 程序的方式,了解 Python 的字节码执行模型,介绍模块文件的基础以保存代码。目标是给你足够的信息去运行书中剩余部分的代码和练习。直到第 4 章,你都不会真正开始编程,但要确保在进一步学习前理解 Python 启动脚本过程的细节。

测试你的知识:测验

在本书的这个版本中,我们将在每一章结束时,就本章中介绍的学习内容做一个快速的开卷测验,以帮助你复习关键的概念。这些测验的答案在问题后面马上出现。 一旦你独自尝试完成了这些问题,我们鼓励你去查看答案,因为他们有时会提供有用的上下文。 除了这些章节末尾的测验,你还可以在本书的每部分的结尾看到实验练习。它们是被设计来帮助你独立编写 Python 代码的。目前这是你的第一个测验。祝你好运,并确保需要的时候,回来参考本章的内容。
  1. 人们选择使用 Python 的 6 个主要原因是什么?
  2. 列出当前使用 Python 的 4 个著名公司或组织。
  3. 为什么你可能不想在一个应用中使用 Python?
  4. 你可以用 Python 来做什么?
  5. Python 的 <font style="color:rgb(133, 128, 128);background-color:rgb(249, 250, 250);">import this</font> 语句的有什么特殊含义?
  6. 为什么在书里和网上的那么多 Python 的例子当中都出现了单词 “spam” ?
  7. 你最喜欢的颜色是什么?
本文章首发在 LearnKu.com 网站上。

上一篇下一篇

Markdown 文本

纠错改进


测试你的知识:答案

你做得怎么样?这里是我想出来的答案,虽然,对一些测试问题可能有多个解决方案。即使你确信你的答案是正确的,但我还是鼓励你看一下我的答案以获取额外的上下文信息。如果有任何你不理解的地方,请参见本章的内容来获取细节。
  1. 软件质量,开发者效率,程序可移植性,支持的库,组件集成,和简单的享受。在这些好处当中,质量和效率主题似乎是人们选择使用 Python 的主要原因。
  2. Google, 工业光魔, CCP games,Jet Propulsion Labs,Maya,ESRI 还有其他许多。几乎做软件开发的所有组织都在某种方式上使用了 Python,不管是为长期的战略产品开发或短期的战术任务比如测试和系统管理。
  3. Python 的主要缺点是性能。它不如完全编译的语言如 C 和 C++ 那么快。但另一方面,它对大多数应用都是足够快的。并且通常 Python 代码在任何情况下都是以接近 C 的速度运行,因为它在解释器里面调用了内链接的 C 代码。如果速度是至关重要的,还可以对应用中需要大量计算的地方使用编译好的扩展。
  4. 你可以使用 Python 做几乎任何你可以用电脑完成的事情,从网站开发和游戏,到机器人和宇宙飞船控制。
  5. 这是在一个脚注里面提到的:<font style="color:rgb(133, 128, 128);background-color:rgb(249, 250, 250);">import this</font> 触发了 Python 中的一个复活节彩蛋。它显示了语言底层下的一些 Python 设计的哲学。你将在下一章中学习如何运行这个语句。
  6. “Spam” 是 Monty Python 这个幽默短剧中的一个引用。在那里面,一个自助餐厅里面努力点菜的人们的声音被一个唱着关于 spam(一种午餐肉罐头)的维京人合唱团的声音所淹没。噢,它还是 Python 脚本中一个常用的变量名。。。
  7. 蓝色。不,是黄色!(参见前一个答案。)

Python 是工程,不是艺术

当 Python 在上世纪 90 年代初第一次出现在软件领域的时候,他的支持者和另一个流行的脚本语言 Perl 的支持者之间产生了一个现在看来是有些经典的冲突。我个人认为这个争论是没有意义和不必要的。开发者足够聪明,可以得到他们自己的结论。然而,这仍然是我在培训道路上被问到的常见的主题之一,并且它也强调了人们选择使用 Python 的主要原因之一;在这里似乎说几句比较合适。 简单地说:可以在 Python 中做在 Perl 中完成的任何事。但是在完成后还可以读懂自己的代码。也就是 —— 他们的领域大部分是重叠的,但 Python 更关注生成可读的代码。对许多人来说, Python 增强的可读性转变为更好的代码复用性和可维护性,这使得 Python 成为一个更好的编程选择,它不会被写了之后就扔掉。而 Perl 代码容易写,但会很难读。考虑到大多数软件的寿命都会比它的初始创作时间要长得多,许多人将 Python 视为更有效的工具。 详细一点说:这反映了两门语言设计者的背景。Python 来源于一个训练有素的数学家,他似乎很自然地就开发了一门有高度一致性和逻辑性的独立语言。而 Perl 是由一个语言学家创建的,他创建了一个更接近于自然语言的编程工具,带上下文敏感性和极大的可变性。如著名的 Perl 箴言声明的,总是有多于一种方法去做这件事。考虑到这种思维方式,Perl 语言和它的用户社区在历史上都一直鼓励在写代码的时候完全自由地表达。一个人的 Perl 代码能够和另一个人有极大的不同。事实上。写独特且难理解的代码通常是 Perl 用户之中的自豪的来源。 但任何有大规模代码维护经验的人都可以证明,自由地表达对艺术是非常好的,但对工程是很糟糕的。在工程上,我们需要一个最小化的功能集和可预测性,在工程上自由地表达能导致维护的噩梦。因为不止一个 Perl 用户已经向我倾诉:太多的自由的结果通常是从头开始重写代码比修改它还容易得多,这明显不是很理想。 考虑一下这个例子:当人们创作一幅油画或雕塑时,很大程度上是为了自己,并没有考虑另外一个人随后改变他们作品的可能性。这是艺术和工程的一个关键不同。但当人们写软件的时候,他们不会为自己写。事实上,他们甚至不是主要为了电脑写。准确地说,好的程序员知道代码是为了下一个为了维护和重用而必须阅读代码的人写的。如果那个人不理解代码,那这个代码在实用的开发场景中就几乎是没有用的。换句话说,编程不需要聪明和晦涩 —— 关键在于如何清晰地让你的程序传达其目的。 许多人发现关注可读性是 Python 和其他脚本语言区分最明显的地方。因为 Python 的语法模型几乎强制创建可读代码,Python 的程序使得他们更适合于完整的软件开发循环。并且因为 Python 强调如有限交互、代码一致性、功能一致性,它更直接地促使代码在初次编写后能够长期使用。 从长远看,Python 关注自身代码的质量,提高了程序员的效率和满意度。 当然, Python 成员也能够极有创意。就像我们将看到的,语言确实对某些任务提供了多个解决方案 —— 今天有时甚至比他需要的还多,这是一个我们在这本书里面也会直接面对的问题。事实上,这个侧边栏也可以被视为一个警示故事。质量被证明是一个脆弱的状态,像依赖技术那样依赖。Python 历史上在很多方面一直鼓励好的工程(习惯),这是其他脚本语言不曾做的,但最终的质量还是取决于你。 至少,这是许多已经采用 Python 的人当中的一些普遍共识。通过学习 Python 提供了哪些东西,你应该自己去判断这些说法。为了帮助你开始,让我们进入下一章节。 本文章首发在 LearnKu.com 网站上。

上一篇下一篇

Markdown 文本

纠错改进