回顾Python的发展的那些事

lazihuman
发布于 2020-9-4 17:58
浏览
0收藏

在过去三年中,Python的发展非常火爆。 它已从Tiobe排名列表的前十名跃升至前三名。 排名列表可能会被刷榜,但商业市场不会。 十年前的培训市场培训机构的主要课程是PHP和Java,现在PHP的付费培训基本上凉凉,但是您经常会在微信朋友圈和路边广告中到处看到Python培训入口。 可以看出,Python的普及确实是真正的。  那么,为什么Python作为一种比Java历史悠久的编程语言在最近的2-3年间突然爆炸? 有人说这是由于人工智能时代的到来。 人工智能的进步推动了Python的发展。 因此,在我看来,这似乎有点不足,所以在这里我们讨论Python在的兴起。

 

在 Python 的 terminal 中输入 import this 会看到这样一段话:

The Zen of Python, by Tim Peters

 

Beautiful is better than ugly.

优美胜于丑陋。

Explicit is better than implicit.

明了胜于晦涩。

Simple is better than complex.

简洁胜于复杂。

Complex is better than complicated.

复杂好过凌乱。

Flat is better than nested.

扁平胜于嵌套。

Sparse is better than dense.

稀疏胜于密集

Readability counts.

可读性非常重要。

Special cases aren't special enough to break the rules.

Although practicality beats purity.

即使是借用实用性之名,也不可以违背这些规则。

Errors should never pass silently.

Unless explicitly silenced.

不要放过一切的错误,除非错误本身需要以忽略对待。

In the face of ambiguity, refuse the temptation to guess.

在不确定面前,不要妄加揣测。

There should be one-- and preferably only one --obvious way to do it.

应该只有一种解决方法,也但愿只有这一种显而易见的解决之道。

Although that way may not be obvious at first unless you're Dutch.

万事开头难,毕竟你不是 Python 之父。

Now is better than never.

Although never is often better than *right* now.

做好过不做,而不假思索的行动还不如不做。

If the implementation is hard to explain, it's a bad idea.

如果某个方案很难去阐释,那么它一定是糟糕的办法。

If the implementation is easy to explain, it may be a good idea.

如果某个方案很容易去解释,那么它可能就是一个好的方法。

Namespaces are one honking great idea -- let's do more of those

命名空间是一个精妙的设计,对此我们应该多多善用。

Pythoners 把这段话称之为:Python 之禅,从这段话中我们能深刻体会到 Python 的设计哲学——简洁、明了、推荐深度思考,但可快速解决眼前问题。正所谓大道至简,Python 从语言本身的词法、语法设计上就深刻的贯彻着这些思想,例如:完成相同的功能 Python 使用的代码行数几乎只相当于 Java 的 1/4,这种简洁对于没有形成代码肌肉记忆的初学者来说实在是太友好了。但是拥有其他语言丰富经验的 coder 初步接触 Python 的时候却经常拿 Python 的这种极致简洁语法进行抨击,例如:Python 为了做到语法足够简洁甚至连其他语言常用的代码块分隔符 "{}" 都省略了,而是通过代码缩进进行代码块的分隔,很多人感觉在 review 或 debug 代码的时候如果单个函数超过一屏,就无法友好的区分不同的代码块了,这给广大程序员带来了很大的困扰。其实会产生这种质疑主要是因为初学者对 Python 提出的简洁设计理念没有深刻的理解,Python 虽然简单直接,但并不推荐长篇大论的在一个函数里面写流水账,每一个函数或方法被视为代码中的一段原子操作,应该尽量的精简不易过于的余长,如果操作过于复杂,应该通过 class、function 进行抽象封装,如果超过一屏显然是没有抽象的到位或者深度思考的不够,Python 这样设计代码块的一个好处是可以更高效的一揽全局看到整体操作的全貌。

 

早期的计算机多数都是科学家或大型机构在使用,多用于研究、统计等复杂的计算操作,那时为了高效的与计算机进行交互必须通过编程语言来进行。随着时代的发展计算机经过产品的不断迭代逐步的进入了我们寻常人家,现如今即使没有任何编程经验的普通人,也可以通过计算机的辅助高效的完成部分工作。而与此同时编程语言也已经经过了几个时代的变迁:机器语言、汇编语言、现代编程语言(以 C 语言的诞生为标志),甚至还同步催生出了程序员这样一个群体。但是慢慢的人们发现编程语言并没有像计算机一样变得普惠,而是不得不依赖程序员这个群体的转义才能完成相关的编程工作,而要进入程序员这个群体的门槛也是非常的高(至少在我 24 岁之前是这样认为的),网上也经常看到有人吐槽程序员这个行业苦啊!首先,你要掌握至少一门编程语言,两门以上优先考虑(想一想我们小的时候用了几年才学会说汉语,写汉字)。其次,你还要掌握几种设计模式并灵活的将单例啊、工厂啊、代理啊等等设计模式运用到平时的编程工作中。最后还要有算法基础,程序员面试的时候如果排序啊、查找啊、递归啊等算法没答上来可能直接就被拒之门外了。这也间接的导致不少科研人员纵使掌握众多数学公式、算法、行业经验,但是因为 C 语言编程能力不过关不得不再依赖一些 C 程序员同步辅助完成相关的科研工作。编程语言因此不得不让普通人怀疑到底是来解决问题的还是来制造问题的?而一般人看到别人面对 C 语言的窘境时,一定是劝诫别人努力学习多多练习,同时送上一本《21天精通 C 语言》以表关爱,然而有一个人却不然,他立志于发明一门新的语言,这门语言既像 C 语言一样可以对计算机资源全面的掌控,又使用起来十分的简单,使人轻轻松松写一些小工具。这个人便是 Guido van Rossum。1989 的冬天 Guido 为了打付无聊的假期使圣诞节过得有意义便开始编写 Python 的解析器(你看大神的度假方式就是特别啊),而解析器正是由 C 语言编写,两年后 Python 的第一个版本便顺利发布了,Python 从设计之初就十分的注意与 C 语言之间的交互,所以从最开始的版本至今一直可以非常方便的对 C 语言的类库进行调用,这个决定对最近几年 Python 的蓬勃发展起到了至关重要的作用。因此,假如有这样一门语言,开发者学习几天便可以轻轻松松的写出完成指定功能的小工具,还可以通过更便捷的方式对大量的科学计算 C 库进行封装调用,语言原生携带的 dict,list,map,reduce,filter 等等特性与数据分析处理又十分的契合,如果你是人工智能的从业人员你难道会不选择 Python 么?所以在我看来 Python 这几年的蓬勃发展,并非是单方面幸运的受人工智能兴起的提携,更多的是从 Python 语言诞生之初面对要解决的问题所奠定的定位,以及过去 30 年间在统计学领域不断发展的 Python 生态,让人工智能不得不暂时将 Python 作为第一语言。

 

本文转载自 :InfoQ

分类
标签
已于2020-9-4 17:58:39修改
收藏
回复
举报
回复
    相关推荐