Why are there so many programming languages?
因为不同的领域的应用的需求互不相同
我们可以看到科学计算领域,要求好的浮点数计算性能,支持超大规模的数组计算,能够进行并行计算,像Fortran语言就是用于科学计算领域
商业应用,要求能够将数据持久化、优秀的报告基础服务(数据处理的报告),数据分析,这块我们可以想到的就是SQL语言
系统编程领域,像嵌入式系统、控制设备、操作系统,对于这些系统,我们要求对资源进行细粒度的控制,以及高精度的实时控制,需要对时间和内存的精确控制,目前为止系统编程领域,基本都还是使用C和C++这两种语言
我们可以看到在不同领域中的编程语言有不同的侧重点,一种语言看重的点在另种语言看来可能并不重要,想要实现一种全面的语言是十分困难的
Why are there new programming languages?
语言的学习成本对于程序员来说至关重要,一个大型的编译器项目可能仅需几十个工程师耗费几年开发,这个成本并不关键,真正耗费成本的是如何教会程序员使用这个语言。
学习语言本就是一项耗时的事情,高昂的时间成本对应的自然就是高昂的经济投资。
还有一个众所周知的规律
1、Widely used languages are slow to change.
2、Easy to start a new language.
一个已经有大量开发者使用的语言,就算仅仅只是语法上的小改变,新功能的添加,编译器接口上的简单改变。如果这个语言有大量的开发者在使用,想要让他们学会这些新东西,真的十分花时间并且代价高昂。因此随着编程语言的发展,语言的变化也会越来越缓慢,越来越保守。实际情况就是如此。
但是,从头开始一门语言却十分容易,新语言的使用者很少,因此新语言的更新迭代的速度往往也是十分快速的,因为并没有那么多人在使用这门语言,我们仅需让少数人来学习这新的特性,一言概之就是新语言的实验成本很低。
那么什么时候一名程序员会在一门广泛使用的语言和一门新语言之间进行选择?这发生在当程序员选择新语言的生产力和旧语言的学习成本存在较大的差距时,此时程序员们就会选择新语言,花点时间和金钱,在短时间变得有竞争力
当前,一个全新的领域出现,此时自然也会有新的语言诞生去填补这个领域的空白,因为现存的编程语言可能对这个领域的应用支持并不是特别友好。
此外,新的语言的设计往往会和旧的语言十分相似:
1、一方面,颠覆过往的创新难以发现
2、此外,新的语言和旧的语言相似,存在共通之处,这也是能够大大降低学习成本
What is a good programming language?
答案显然是没有的
Overall
编程应用领域中存在需求的冲突,很难去设计出一个想要的功能都有的系统
此外,程序员的学习成本才是编程语言的最大成本