编程语言就像生物物种一样,存在一个进化脉络,许许多多分支最终都会成为进化成死胡同。如cobol语言,曾经红极一时,但现在看来没有任何后续语言继承了它的思想。就像尼安德特人生活在欧洲的古人类,三万多年前已经全部灭绝
,进化之路已经走到了尽头。当前企业开发用的java语言,也在全球风靡,随着算法及硬件资源的进步,未来java的进化之路也会充满变数,可能走进进化的死胡同,也可能吸取其它语言的思想,焕发更多光彩。作为普通java方向从业者,在关注所用开发语言的同时,更多的应培养大局观,从宏观层面看待技术的演进,避免因快速的技术迭代而面临失业风险。软件行业更为宝贵的经验,是系统架构思想、全局观及解决复杂系统问题的能力。
提出编程语言存在一个进化脉络,是为了找到进化的主干,它会启发我们去选择那些靠近主干的语言,这样对当前的编程最有利。
无论何时,选择进化的主干可能是最佳方案,要是不幸选错了,变成了一个尼安德特人,那就太糟糕了,对手克鲁马努人时不时会来攻击你,把你的事务全部偷走,这就是想找出一百年后的编程语言的原因,不愿意压错赌注。
编程语言的进化与生物学进化还是有区别的,因为不同分支的语言会发生聚合。而不同生物物种之间发生的聚合,可能性很低,大概从来没发生过。编程语言之所以发生聚合,一个原因是它的概率空间比较小,另一个原因是它的突变不是随机的,语言设计者们总是有意识的借鉴其它语言的设计思想。
那些内核最小、最干净的编程语言才会存在于进化的主干,一种语言的内核设计的越小、越干净,它的生命力越顽强。
软件发展的历史已经走过了50年,在这50年中,编程语言的进化其实是非常缓慢的,因此展望一百年后的语言并不是虚无缥缈的事。之所以进化缓慢是因为它们并不是真正的技术,更像是数学符号的进化速度。
能够预测,未来硬件的性能大幅提高将会发生什么事,新增加的运算能力将会被糟蹋掉。
浪费可以分为好的浪费和坏的浪费,好的浪费,可以是用更多的钱得到更简单的设计,所以问题就变成了如何才能充分利用新硬件更强大的性能最有利地浪费运算能力。