|
| 1 | +>Then God said: "Let there be light"; and there was light. And God saw that the light was good; and God separated the light from the darkness. |
| 2 | +
|
| 3 | +#唠叨一些关于Python的事情 |
| 4 | + |
| 5 | +如同学习任何一种自然语言比如英语、或者其它编程语言比如汇编(这个我喜欢,可惜多年之后,已经好久没有用过了)一样,总要说一说有关这种语言的事情,有的可能就是八卦,越八卦的越容易传播。当然,以下的所有说法中,难免充满了自恋,因为你看不到说Python的坏话。这也好理解,如果要挑缺点是比较容易的事情,但是找优点,不管是对人还是对其它事务,都是困难的。这也许是人的劣根之所在吧,喜欢挑别人的刺儿,从而彰显自己在那方面高于对方。特别是在我们这个麻将文化充斥的神奇地方,更多了。 |
| 6 | + |
| 7 | +废话少说点(已经不少了),进入有关python的话题。 |
| 8 | + |
| 9 | +##Python的昨天今天和明天 |
| 10 | + |
| 11 | +这个题目有点大了,似乎回顾过去、考察现在、张望未来,都是那些掌握方向的大人物(司机吗?)做的。那就让我们每个人都成为大人物吧。因为如果不回顾一下历史,似乎无法满足学习者的好奇心;如果不考察一下现在,学习者不放心(担心学了之后没有什么用途);如果不张望一下未来,怎么能吸引(也算是一种忽悠吧)学习者或者未来的开发者呢? |
| 12 | + |
| 13 | +##Python的历史 |
| 14 | + |
| 15 | +Python的创始人为吉多·范罗苏姆(Guido van Rossum)。关于这个人开发这种语言的过程,很多资料里面都要记录下面的故事: |
| 16 | + |
| 17 | +>>1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是一个蒙提·派森的飞行马戏团的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并取得了非常好的效果,完美结合了C和其他一些语言。 |
| 18 | +
|
| 19 | +这个故事我是从维基百科里面直接复制过来的,很多讲python历史的资料里面,也都转载这段。但是,在我来看,这段故事有点忽悠人的味道。其实,上面这段中提到的,吉多为了打发时间而决定开发python的说法,来自他自己的这样一段自述: |
| 20 | + |
| 21 | +>>Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office (a government-run research lab in Amsterdam) would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).(原文地址:https://www.python.org/doc/essays/foreword/) |
| 22 | +
|
| 23 | +首先,必须承认,这个哥们儿是一个牛人,非常牛的人。此处献上我的崇拜。 |
| 24 | + |
| 25 | +其次,做为刚刚开始学习python的朋友,可千万别认为python就是一个随随便便就做出来的东西,就是一个牛人一冲动搞出来的东西。人家也是站在巨人的肩膀上的。 |
| 26 | + |
| 27 | +第三,牛人在成功之后,往往把奋斗的过程描绘的比较简单,或者是谦虚?或者是让人听起来他更牛?反正,我们看最后结果的时候,很难感受过程中的酸甜苦辣。 |
| 28 | + |
| 29 | +不管怎么样,牛人在那时刻开始创立了python,而且,他更牛的在于具有现代化的思维:开放。通过Python社区,吸引来自世界各地的开发者,参与python的建设。在这里,请读者一定要联想到Linux和它的创始人芬兰人林纳斯·托瓦兹。两者都秉承“开放”思想,得到了来自世界各地开发者和应用者的欢呼和尊敬。也请大家再联想到另外一个在另外领域秉承开放思想的人——邓小平先生,他让一个封闭的破旧老水车有了更新。 |
| 30 | + |
| 31 | +请列位多所有倡导“开放”的牛人们表示敬意,是他们让这个世界更美好了。他们以行动诠释了热力学第二定律——“熵增原理”。 |
| 32 | + |
| 33 | +##Python的现在 |
| 34 | + |
| 35 | +有一次与某软件公司一个号称是CTO的人谈话,他问我用什么语言开发,我说用Python,估计是我的英语发音不好吧(我这回真的谦虚了一把),他居然听成了Pascal(也是一种高级语言,现在很少用了,曾经是比较流行的教学语言)。呜呼,Python是小众吗?不是,是那家伙眼界不开阔!接触过不少号称CTO的,多数是有几年经验的程序员,并没有以国际视野来看待技术,当然,大牛的CTO还是不少的。总之,不要被外表忽悠了,“不看广告,看疗效”。 |
| 36 | + |
| 37 | +首先看一张最近一期的编程语言排行 |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | +python在这个榜单中第8,也许看官心理在想:为什么我不去学那个排第一呢?如果您是一个零基础的学习者,我以多年的工作和教学经验正告:还是从入门比较容易的开始吧,python是这样的。等以后,完全可以拓展到其它语言。或许你又问了,php和vb是不是可以呢?他们排名比python靠前。回答是:当然可以。但是,学习一种入门的语言,要多方考虑,或许以后你就不想学别的,想用这个包打天下了,那就只有python。并且,还得看下面的信息: |
| 42 | + |
| 43 | +>>根据Dice.com一项网上对20000名IT专业人士进行调查的结果 : |
| 44 | +>>java类平均工资:91060美元; |
| 45 | +>>python类平均工资:90208美元; |
| 46 | +
|
| 47 | +不错,python程序员平均来讲,比java平均工资低,但看看差距,再看看两者的入门门槛,就知道,学习python绝对是一个性价比非常高的投资啦。 |
| 48 | + |
| 49 | +Python就是这样,默默地拓展着它的领域。 |
| 50 | + |
| 51 | +##Python的未来 |
| 52 | + |
| 53 | +未来,要靠列为来做了,你学好了,用好了,未来它就光明了。它的未来在你手里。 |
| 54 | + |
| 55 | +##Python的特点 |
| 56 | + |
| 57 | +很多高级语言都宣称自己是简单的、入门容易的,并且具有普适性的。真正做到这些的,不忽悠的,只有Python。有朋友做了一件衬衫,上面写着“生命有限,我用Python”,这说明什么?它有着简单、开发速度快,节省时间和精力的特点。因为它是开放的,有很多可爱的开发者(为开放社区做贡献的开发者,是最可爱的人),将常用的功能做好了,放在网上,谁都可以拿过来使用。这就是Python,这就是开放。 |
| 58 | + |
| 59 | +抄一段严格的描述,来自维基百科: |
| 60 | + |
| 61 | +>>Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符,因此Python也支持泛型设计。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。 |
| 62 | +
|
| 63 | +>>虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发项目例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shell script、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。 |
| 64 | +
|
| 65 | +>>Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004年,Python已在Google内部使用,Google召募许多Python高手,但在这之前就已决定使用Python。他们的目的是尽量使用Python,在不得已时改用C++;在操控硬件的场合使用C++,在快速开发时候使用Python。” |
| 66 | +
|
| 67 | +可能里面有一些术语还不是很理解,没关系,只要明白:Python是一种很牛的语言,应用简单,功能强大,google都在使用。这就足够了,足够让你下决心学习了。 |
| 68 | + |
| 69 | +##python哲学 |
| 70 | + |
| 71 | +Python之所以与众不同,还在于它强调一种哲学理念,用黑字表示强调吧: |
| 72 | + |
| 73 | +**Python的设计哲学是“优雅”、“明确”、“简单”。** |
| 74 | + |
| 75 | +Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。 |
| 76 | + |
| 77 | +##The Zen of Python |
| 78 | + |
| 79 | + Beautiful is better than ugly. |
| 80 | + Explicit is better than implicit. |
| 81 | + Simple is better than complex. |
| 82 | + Complex is better than complicated. |
| 83 | + Flat is better than nested. |
| 84 | + Sparse is better than dense. |
| 85 | + Readability counts. |
| 86 | + Special cases aren't special enough to break the rules. |
| 87 | + Although practicality beats purity. |
| 88 | + Errors should never pass silently. |
| 89 | + Unless explicitly silenced. |
| 90 | + In the face of ambiguity, refuse the temptation to guess. |
| 91 | + There should be one-- and preferably only one --obvious way to do it. |
| 92 | + Although that way may not be obvious at first unless you're Dutch. |
| 93 | + Now is better than never. |
| 94 | + Although never is often better than *right* now. |
| 95 | + If the implementation is hard to explain, it's a bad idea. |
| 96 | + If the implementation is easy to explain, it may be a good idea. |
| 97 | + Namespaces are one honking great idea -- let's do more of those! |
| 98 | + |
| 99 | +上面的诗来自[Python官方](http://legacy.python.org/dev/peps/pep-0020/),已经把前面唠叨的东西做了精美的概括。有中译本,[看这里](https://wiki.python.org/moin/PythonZenChineseTranslate),本文摘抄一种中文翻译: |
| 100 | + |
| 101 | + 优美胜于丑陋,明晰胜于隐晦 |
| 102 | + 简单胜于复杂,复杂胜于繁芜 |
| 103 | + 扁平胜于嵌套,稀疏胜于密集 |
| 104 | + 可读性很重要。 |
| 105 | + 虽然实用性比纯粹性更重要, |
| 106 | + 但特例并不足以把规则破坏掉。 |
| 107 | + |
| 108 | + 错误状态永远不要忽略, |
| 109 | + 除非你明确地保持沉默, |
| 110 | + 直面多义,永不臆断。 |
| 111 | + |
| 112 | + 最佳的途径只有一条,然而他并非显而易见————谁叫你不是荷兰人? |
| 113 | + |
| 114 | + 置之不理或许会比慌忙应对要好, |
| 115 | + 然而现在动手远比束手无策更好。 |
| 116 | + |
| 117 | + 难以解读的实现不会是个好主意, |
| 118 | + 容易解读的或许才是。 |
| 119 | + |
| 120 | + 名字空间就是个顶呱呱好的主意。 |
| 121 | + |
| 122 | + 让我们想出更多的好主意! |
| 123 | + |
| 124 | +##准备 |
| 125 | + |
| 126 | +已经描述了python的美好,开始学啦,做好如下准备: |
| 127 | + |
| 128 | +- 电脑,必须的。不管是什么操作系统。 |
| 129 | +- 上网,必须的。没有为什么。 |
| 130 | + |
| 131 | +除了这些,还有一条,非常非常重要,写在最后:**这是自己的兴趣。** |
| 132 | + |
| 133 | + |
0 commit comments