如果要学一门编程语言,就学这个吧
文/意见狗威廉 作为一个专业修(漂亮妹子的)电脑的,本狗很多时候被问到推荐一门易学好用又能装逼的计算机语言,于是今天我就来小小得罪你们一下—— 这门语言必须就是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给我们的现身说法呢? 写在文后: 这篇文章讲的是计算机(语言)系统设计给本狗思维的启发,恰好也算是本狗接下来想要写的关于“系统性思考”专栏的引子,如果您想要更好地独立思考,不妨安徽治疗白癜风的医院哪家白癜风医院最权威
|