在stackoverflow上看到一个关于Why does IntelliJ IDEA compile Scala so slowly?的问题,顿时感到scala在语法层面做的许多杰出的设计,但是为了和java兼容,最终在一定程度上限制了自己的发展。

scala可能是为了快速的在各个公司里面推动,选择了完全和java现有代码兼容,而不是只在二进制层面上保持一致。

scala的sdk和类型系统都建立在java的类型系统之上的,而目标是工业使用的scala语言需要提供大量的内置工具,而一个建立在java类型系统之上的更复杂的类型系统则不得不付出在编译时的开销。

scala的类型检测对于大型项目非常重要,但是是否能够有选项使得能够某些时候能用来最快速开发,而不做类型检测? 不过scala一开始就不是瞄准着脚本语言去做的,而脚本语言则更容易构建原型系统或执行轻量级的任务。

没有过大型项目使用scala的经验。所以基本是随便扯扯。

其实对于大型项目来说,一定是有多个部分(可能是一个人开发,更多的情况是由不同的团队开发)组成的,而组件之间的沟通与协作则是很容易出问题的地方。静态类型语言在大型项目开发上更有优势的地方是程序代替人对代码做了严格检测,以丧失灵活性为代价。这样可以避免一些错误,可以降低程序员的标准,可以大规模的招人,以人海战术来实现企业目标。

静态类型语言更适合一个牛人写出框架和核心代码,分离出接口,然后将接下来的工作用时间人力来填补。项目进度对于企业来说是可控的。

而静态类型检测会强迫人以机器的方式去编写代码,实际上很多时候需要做类型转换,数据传递转移等,对于人来说,一些很明确的使用场景需要更复杂的操作来进行,好比写文章的时候有了更多的条条框框,导致笔跟不上大脑的速度。

scala尝试去提供快速方便的语法糖,隐式的类型推导来方便程序员实现快速开发,然后使用静态类型检测和原有java代码的兼容来方便建立大型系统。