好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

编程语言扎堆整容,Python成整容模板

编程语言扎堆整容,Python成整容模板

诗书塞外 Python程序员

Python2到Python3的迁移让Python社区苦不堪言,但是只有Python社区有这样的分裂吗?绝不是,其实很多语言都面临着迁移的问题,而且有的语言的升级换代堪称整容,整容的模板就是Python。

1、JavaScript 5 升级到 JavaScript 6

这样说其实不太准确,JavaScript的语言标准叫做ECMAScript,所以确切地说就是ECMAScript5升级到ECMAScript6.

这次升级带来的主要特性有Symbol, Proxy, Reflect, Set, Map, Iterator, for...of, Generator, Promise , 异步操作和Async, Class, Decorator, Module.

大家注意看橘黄色的部分,是否有一种Python3.6的即视感呢?接下来我们看一下ES6和Python3在类定义上面的对比:

何其神似啊~JS社区目前遇到的情景和几年前的Python是一样的,语言推出新标准,但是社区及工具链的迁移需要数年的时间,祝他们好运~

2、swift 2 升级到 swift 3

swift 的升级相比于JS和Python的升级,其实是相对小的升级,但是它仍旧是和2不兼容的!swift 函数和属性的命名很多继承了Objective-C“又臭又长”的特点,一个简单的函数调用画风都是这样的:

 
let content = listItemView.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 

这次升级在大量的API中去掉了无用冗余的部分,上边这句话就变成了下面这样:

 
let content = listItem.stringValue.trimming(.whitespaceAndNewlines) 

虽然在Pythoner看来还不够简洁,但是对于swift粉们已经是一个重大的解脱了。在小编看来,这句话应该继续简化一下,变成这样:

 
let content = listItem.string.trim("\S+") 

对于Swift和Objective-C的语法,小编只有一句评价:“No Zuo No Die.”

3、C++ 11的逆天改善。

C和C++都是静态语言的老大哥,谁也没有想到C++老大哥会在版本11中做出如此多跟得上潮流的改进。

首先是逆天的auto关键字

auto i = 1; auto d = 1.0; auto str = "Hello World"; auto ch = 'A'; 这样定义,变量i会自动被声明为整数,d被自动声明为浮点数,多么智能啊!希望下一个版本能把auto这个关键字也取消,反正本来用处也不大,直接i = 1就好了。

其次是逆天的lambda表达式

C++支持lambda表达式,太潮了!一个例子:

 
auto func1 = [](int i) { return i+4; };
func1(6) 

为什么我觉得写起来比Java还简单一点?速度又快,写起来又简单,没有天理(⊙o⊙)啊!

还有很多其他新潮的特性,C++的这次升级让不少人眼前一亮。

总结陈词

可以看出,编程语言更新换代是非常正常的一件事,没有一门语言是稳如泰山、从不改变的。而改进的方向恰好是向着越来越Pythonic而改进。这个现象不是巧合,是由于Python在设计时的哲学决定的。Python设计的哲学能够让大多数人认同,就像普世价值能够被大多数人认同一样,所以随着时间的推移,编程语言渐渐都会Python化,这就是编程语言的进化。

Python哲学

优美胜于丑陋 明了胜于晦涩 简单胜过复杂 复杂胜过凌乱 扁平胜于嵌套 间隔胜于紧凑 可读性很重要 即使假借特例的实用性之名,也不违背这些规则 虽然实用性次于纯度 错误不应该被无声的忽略 除非明确的沉默 当存在多种可能时,不要尝试去猜测 应该有一个,最好只有一个,明显能做到这一点 虽然这种 方式可能不容易,除非你是python之父 现在做总比不做好 虽然过去从未比现在好 如果这个实现不容易解释,那么它肯定是坏主意 如果这个实现容易解释,那么它很可能是个好主意 命名空间是一种绝妙的理念,应当多加利用

查看更多关于编程语言扎堆整容,Python成整容模板的详细内容...

  阅读:27次