语言火不火主要表现的是市场的需求,和语言本身好不好是有相关性,没有因果性
比如python,我们七八年前就开始用了,当时有如醍醐灌顶,发现编程语言竟也可以如此优雅(原来一直用c++)。而大众觉得开始火的这几年,python本身确没有『突然』增加什么更迷人的东西。
对于我来说,python在很多年前我第一次打开ipython时就火了,同好不多,但个顶个的能扯上一翻。而现在动辄看到『python程序员』写的代码:
sum = 0
for i in range(len(num_list)):
sum += num_list[i]
我就有种看到douban变成约炮网站的悲哀
从理想上看,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会显得越来越火?
python最大的问题在于性能。性能问题其实是在设计时最容易被误解的部分。c++以『接近c语言的性能』横行多年。随着物理硬件性能的显著提升以及软件复杂性的显著提升,人们开始对性能有了更正确的看法。
首先,有些时候性能并不重要。io密集型的业务大部分时间都在等待io,节省不到1ms让开发量增加几倍似乎不是很划得来。
其次,有些时候程序员的效率比机器的效率更重要。对于很多复杂的逻辑性功能,使用更加清晰的语言比晦涩的语言给程序减少的负担,可以大大增强软件的质量。(尤其是公司给的待遇招不到知乎上的大牛程序员的时候)
于是,python/ruby/java开始崛起了。用python的『inside battery』就可以做到过去需要反复造轮子、天天加班还做得不是那么好的东西。我在看python的源代码时,突然有一种感觉:python底层的源代码其实可以理解为c语言的一些常用功能的库(如hashmap实现的dict),python进程就是加载了这些库然后读取配置文件(python代码)执行相应的逻辑。相同的功能,python进行了一次转义,肯定会比直接用c实现要慢,但你不一定能这么快的写出这样运行比python快的c代码。(当然,知乎上的大牛还是除外)
于是,类似python这样的语言们解放了程序员的时间,程序员们寂寞难耐的夜晚可以有了更多的产出,一个一个的项目建立起来了,社区建立起来了,迟滞的市场也开始有感知了。
即便这样,python还有会心一击:我也可以不那么慢。python可以十分方便地和c代码融合到一起。python和c的组合彻底解决了后顾之忧:先用python快速开发快速搭建产品原型,然后找出性能瓶颈有针对性的性能优化。所谓好钢用在刀刃上,节约时间,节省成本,减少风险,提高程序员的生活品质又有什么不对呢?
泛泛而谈,匿之.