从理想上看,Python和C++是十分相似的,它们都想做万金油。
C++是学术性的,大牛们都指着靠它扬名立万,设计哲学是『什么都想要』,首先要兼容C要快,其次是别的语言有的咱都要有,别的语言没有的咱也要有。但是一方面C语言本身也不是很完善(比如头文件这样的粗暴的机制),另一方面为了运行时的爽快把新功能的脏活累活全往预处理、编译上扔,导致C++的晦涩、艰深。用C++写代码有点像是用文言文写公文,逼格满满,文采飞扬,需要耗费大量的精力在内容以外的地方。而看文言文公文(C++代码)是痛苦,首先你得熟悉各种反人类的语法(传值/传址/move语义、预处理、函数指针……),通晓历代典故(effective C++, ……)
Python的想法不一样,Python的核心是简洁直接清晰,Python认为好的方式只有一种,它也只呈现那好的一面。Python的语法本身就是一种伪代码的佳实践,而且这个『伪代码』还是可以运行的。这造就了Python较低的使用门槛和极高的编程效率。用Python开发只要『有事儿说事儿』就好。ruby on rails火的那几年,有人问guido叔(Python作者)怎么看,guido说的大概是:Python不需要杀手级应用,因为如果是这样的话,Python在其它方面的作用就被忽略了。
python大的问题在于性能。性能问题其实是在设计时容易被误解的部分。C++以『接近C语言的性能』横行多年。随着物理硬件性能的显著提升以及软件复杂性的显著提升,人们开始对性能有了正确的看法。
首先,有些时候性能并不重要。IO密集型的业务大部分时间都在等待IO,节省不到1ms让开发量增加几倍似乎不是很划得来。
其次,有些时候程序员的效率比机器的效率重要。对于很多复杂的逻辑性功能,使用加清晰的语言比晦涩的语言给程序减少的负担,可以大大增强软件的质量。(尤其是公司给的待遇招不到知乎上的大牛程序员的时候)
于是,Python/Ruby/Java开始崛起了。
扫码匿名提建议
直达CEO信箱