时间:2016-10-22来源:本站原创作者:佚名
如果要学一门编程语言,就学这个吧

文/意见狗威廉

作为一个专业修(漂亮妹子的)电脑的,本狗很多时候被问到推荐一门易学好用又能装逼的计算机语言,于是今天我就来小小得罪你们一下——

这门语言必须就是Python啊!(欢迎来战)

作为现在美国顶尖大学计算机专业最受欢迎的入门语言,再加之其简单易用,含有很多科学计算的开发包,正好搭上了现在机器学习的东风。Python之所以这么火,是有它的道理的。

然而本狗今天推荐它的主要理由却是这个:

我相信,大多数时下为了想要在目前火热的IT领域找一份工作而开始学习Python的人,都没有看过这个东西——ThZnofPython(Python禅道)。略懂Python的人只需要在命令行里输入importthis,就能看到由Python领域著名的领军人物之一——TimPtrs写下的这一段阐述了Python禅道的文字,简洁精要,却又略显晦涩。

本狗非常非常喜欢这段文字,于是想将浅显的理解翻译如下,分享给大家:

优美胜于丑陋(Python以编写优美的代码为目标)

简明胜于隐晦(代码应该是简洁明了,而不是复杂难懂的)

简单胜于复杂(如果能有简单的方法实现,就不应该使用复杂的方法)

复杂胜于繁复(如果必须要以复杂的方式呈现,需要尽量简化而不使其繁复凌乱)

扁平胜于嵌套(优美的代码模块需要清晰,繁复的联系要尽量少)

稀疏胜于紧凑(或许写的是代码应该稀疏,有条理方便阅读,而不是一行解决)

可读性很重要

任何特殊状况都不应该打破上述规则

即使实用性重于(理论)的纯粹性(代码是用来解决实际问题的,纯粹的理论只存在于设计,有很多需要单独处理的边界情况)

错误却不能在不被知晓的情况下包容(任何错误都需要被知晓)

除非你允许它这样被包容(在被知晓的情况下如何处理是设计者的责任)

当存在多种可能,放弃猜测

在这里永远只有一种,而且是唯一一种明显的解决方案(奥卡姆剃刀的体现:如无必要,勿增实体)

虽然这并不容易,因为你不是Python之父(这个Dutch荷兰人指Guido,Python的创造者)

即刻动手胜于拖延

审慎思考胜于鲁莽

好的实现是容易被解释的

反之亦然(好的代码永远是自解释的)

命名空间是绝妙的理念,我们应该多使用

以上便是Python禅道的19条内容,然而实际上它在官方的包描述里包含了20条内容,为什么如此呢?本狗先卖一个关子,说点有的没的,把彩蛋放在最后。

之所以这是本狗推荐Python的最主要理由,是因为我认为在学习一样东西之前,你得明白它是干什么的,它为什么要这样做(设计)。

然而本狗残酷地发现,现在大多数想要学习一门计算机语言的人,或者学习计算机这个邻域的人,纯粹是因为“编程好找工作啊”,“码农工资高啊”等这一些大同小异的理由,而不是对一个领域本身的爱好。仅仅是为了会使用这个工具,找一个能使用这个工具的工作,眼里看到的只是高薪和大量的职位需求——这也许就是你一辈子缘木求鱼的开端。

如果我们简单地仅仅把这些语言当做工具使用,认为其它的东西(数学原理,业务逻辑)才是重要的;商学院的CEO们也仅仅把码农们当做工具使用,认为高大上的想法或者商业运作才是重要的——那么这两者并没有太大的本质区别。为什么?

因为当你不用心对待一件事物的时候,这件事物也不会用心对你——对人也好,对物也罢,万事万物都是这个道理。

还在上学的时候,语文课本上看过的两个小故事让本狗至今难忘,出自冯骥才先生的《俗世奇人》——泥人张贱卖海张五,刷子李刷墙没白星——这才是使用工具时需要的“工匠精神”,他们手中的伙计,都是有“灵性”的。

真正出类拔萃的工匠,对他们手中的工具是有感情的,他们手中的工具,是比别人的工具都要有“灵性”的,因为他们比谁都了解他们手上的老伙计。在这个浮躁的世界中,我们仍然保持着对“工匠精神”的敬佩,看看最近火的不行的《我在故宫修文物》系列就知道了。

学习编程语言嘛,自然也是这个道理。比如Python的禅道,比如与Python设计思想截然不同的Prl,比如瑞士军刀C++,他们都有自己设计的初衷,这些甚至也代表了在一个编程语言领域内的哲学意义。

那么最后这第20条禅道是什么呢?本狗猜想是这个包源代码想表达的:

这段杂乱无章的代码,用一个顽皮且混乱的ROT13加密算法实现加密了这19条Python箴言,在某种程度上提供了一个大反例,是不是就是TimPtr给我们的现身说法呢?

写在文后:

这篇文章讲的是计算机(语言)系统设计给本狗思维的启发,恰好也算是本狗接下来想要写的关于“系统性思考”专栏的引子,如果您想要更好地独立思考,不妨







































安徽治疗白癜风的医院
哪家白癜风医院最权威

转载请注明原文网址:http://www.gzdatangtv.com/jsyy/1234.html

------分隔线----------------------------