上世纪80至90年代,伴随着计算机的逐渐普及,大量编程语言也在这一时期诞生。彼时,世界范围内平均每一个月便会产生一种新的编程语言。据不完全统计,截止到年,人类已经开发了大约种编程语言。
然而,随着时间的推移,新编程语言的诞生速度却在持续下降,尤其在过去几年间,新编程语言的产生频率已放缓到了约一年一种。但这一变化却似乎并没有给开发者们带来任何影响,我们所熟悉的Python、JavaScript等一众老伙计依然足矣应付目前绝大多数的研发需求,并且仍旧表现强势。那么,这是否意味着我们已不再需要新的编程语言了呢?
为什么一些编程语言能够长期流行?
Python、JavaScript等语言能够长期流行且受到开发者们的广泛喜爱,很大程度上是由于它们的用户友好性。以Python为例,作为一种高级编程语言,Python拥有丰富的开发框架、广泛且高质量的可用库与良好的代码可读性。并且具有用户友好的数据结构,还提供了web服务的轻松集成,这些优点使得其备受开发人员的青睐。
而JavaScript作为目前市面上最受欢迎的编程语言之一,能够方便地操纵各种浏览器对象、支持分布式运算和处理,且与绝大多数互联网浏览器兼容,目前我们能够看到的所有网站几乎都是基于JavaScript所构建的。此外,JavaScript自诞生以来不断通过大规模的更新使自己与持续发展的技术生态系统紧密相连,如今的JavaScript与十年前的JavaScript几乎可以说是两种语言。
为什么我们不再需要新的编程语言?
当路面变得不再平坦时,造一些更好的轮子永远比造一辆新车要来的方便。相比于从头开始构建一种新的编程语言,几乎所有的开发人员都更愿意选择在现有语言的基础上更新框架,这也是绝大部分开发者们用脚投票的结果。
MachineHack首席技术官KrishnaRastogi曾在一次采访中公开表示“从头开始构建编程语言是一个非常消耗时间和资源的过程,绝大部分问题只需要更新框架就可以轻松解决。并且,当涉及到编程语言功能时,更多并不一定代表着更好。当我们用多种方法描述同一个想法时,它可能会变得令人困惑。”。
根据KrishnaRastogi的介绍,早期的软件行业之所以会出现种类如此种类繁多的编程语言,是由于早年间硬件的性能不够可靠,因此开发人员必须通过复杂多样的编程语言来弥补硬件功能方面的种种不足。但如今,硬件已经发展得足够优秀,开发人员自然就不再需要使用那些复杂且没有太多实际意义的编程语言,去选择那些泛用性更强、功能更强大且更加友好的编程语言就足够了。
除此之外,一门编程语言的兴衰与否,与其周围的生态环境也有着至关重要的联系。主流的成熟编程语言周围大多拥有各类庞大的社区,这些社区能够为语言以及新晋学习者提供源源不断的资源补充,使整个语言的生态系统得以持续发展。老牌语言在这方面的技术资产,是后来者极难超越的。
最后一点,从功利角度来讲,由于大多数工程师在入行时都会选择学习较为成熟的编程语言,并围绕语言选择工作方向、堆砌自己的技术栈。因此企业在对于技术架构的选择方面,也会因为稳定性及人员招聘等问题而遵从一定的设计原则,这样双向促进的逻辑也就自然而然的形成了一个闭环。
非英语种编程语言有前途吗?
前文中我们对于编程语言的讨论始终围绕着语言本身的一些特点,那么,在语种这个世界性问题上,会有新的编程语言给出不一样的答案么?非英语种编程语言的目的,是为了让那些母语非英语的开发者能够使用自己更为熟悉的语种,进行程序的设计与创作,但这个想法在执行方面却面临着很多的困难。
例如,计算机科学家RamseyNasser在贝鲁特大学学习期间,发现自己所学的所有编程语言都高度依赖于英语,他对此非常失望,因此决定从头开始创造一种阿拉伯语编程语言,但这件事最终却以失败告终。对此,RamseyNasser指出了在开发中遇到的许多困难,最主要的一点便是:英语已经深深烙印在了各种软硬件操作系统之中,因此创造其他语种的编程语言需要用特定语种对过去几十年的软件工程进行重写,这几乎是不可能完成的任务。
当然,你可能会说如今市面上确实有不少基于非英语种的编程语言,例如中文编程语言“易语言”、日文编程语言“抚子”等。但其实它们都没有成功摆脱英文编程语言的束缚,例如“易语言”就是基于C++进行构建的。这些非英语种编程语言,绝大部分只是基于传统编程语言进行了大量封装和重写。虽然对于初学者而言,这类语言的确会显得相对简单,但在性能、可用性等方面,这类语言则完全无法与传统的基于英语的编程语言相比。
Web会改变编程语言的新格局吗?
分析最近十几年编程语言的发展变化,我们不难发现,现代编程语言的语法、特性、语言设施、编程范式等方面都在逐渐趋同,业界主流的编程语言都在朝着优化开发者生产力的方向演进。基于这个趋势,我们可以判断,这便是Web2.0时代编程语言发展的终极目标。
但随着近期Web呼声的不断加剧,新一代互联网似乎已经离我们越来越近了。而Web的到来,势必将会重塑整个互联网的生态系统,并催生出大量专属于Web时代的全新应用。届时,我们将极有可能需要更多全新的、更加适用于编写智能合约和开发区块链应用的编程语言来填补Web2与Web之间的沟壑。