Python因其简单易用,开发效率高而深受广大开发者的喜爱和推崇。虽说编程最重要的是背后的思想,但是思想的表达也是非常的重要的。Python正是这种有强大表达能力的语言。Python有句名言:Life is short, use Python.中文版是:人生苦短,我用Python。可以从一个侧面来了解Python是一个高效的开发语言。在科学计算,网络编程,人工智能等等领域,Python有着广泛的应用。最近的消息显示Python即将被纳入高考内容,并且Python已经进入小学生的教材。详见csdn公众号文章。所以说,学习python真的是大势所趋,没有必要费时费力的劝说别人去学Python了。
下面来谈谈Python为什么能作为Eos的智能合约编程语言但是却不适用于Ethereum。在Ethereum上用Solidity编写过智能合约代码的开发者,大多对Solidity不会有好感。只可惜,目前来看,他们没得选。这也是为什么Ethereum开发者还要开发另外一种语法和Python高度类似的viper语言的原因。那Ethereum为什么不直接把python拿来用,而要费时费力的去写编译器重新开发另一种语言呢?根据本人的猜想,原因可能是原生的Python并不能适应Ethereum的基于GAS的付费模型。原生的Python除了bytecode之外,关键模块的代码都是C中实现的,这么多函数和bytecode如何去精确的计算内存和CPU的使用情况,这确实是个问题。要不然像Vitalik Buterin这样的pythoner不会认识不到Python的巨大优势。并且也解释不了为什么后面还要去设计viper这种类Python语言。并且有趣的是,viper的编译器也是用Python写的。实际上,Ethereum最早就是用Python开发的,后面才有C++和Go的版本,并且在这几个版本中交叉验证设计思想的实现。这也是我欣赏Ethereum的地方。虽然Ethereum上不能直接用Python来写智能合约,但是Daniel Larimer以及他的开发团队为我们带来了Eos,使得用Python作为智能合约的开发语言成为可能。因为Eos的TS是零费用的,不用像Ethereum那样去费时费力的计算GAS,为Python成为智能合约语言移除了一个大阻碍。所以感谢Daniel Larimer吧,苦哈哈的开发者们看到了一丝曙光。
再来说说Python的性能问题。其实在今天这个世界里,开发者更关注的是软件的开发效率和维护成本。至于效率,在大多数情况下,以现在CPU的计算能力,是完全能够满足需求的。如果在十几二十年前,你可能还需要为了性能而斤斤计较,但是现在,真的不用了。并且在Python代码不满足性能要求时,完全有很方便的方法来对Python代码进行优化以几倍几十倍的提高代码的性能。另外,二八定律也同样适用于程序的运行。也就是说,20%的代码占用了80%的运行时间。具体到Python语言,20%的bytecode占用了80%的运行时间,并且由于Python的关键模块很多都是通过C来实现的,所以实际上80%的Python程序运行时间又是大部分时间里都在运行除解释bytecode以外的C代码。这也就是即使不采用优化手段,Python的性能在大多数情况下不会太差的原因。事实上,Python的list,dict等等关键模块的运行速度已经和C/C++写的代码没有多大的差别了。但是,有句实话还是得说:会用Python和用好Python还是有很大的差别的。当然,高性能的区块链项目对智能合约语言的性能还是有比较高的要求的,这或者可以通过pypy这样的JIT的技术来加以解决。并且,Eos已经承诺会实现并行功能,这可以大大加快TS的处理速度。
以下为转自csdn的翻译和解译
Python之禅 by Tim Peters
领取专属 10元无门槛券
私享最新 技术干货