为什么NetLogo是在Java和Scala的混合体中实现的?

knb*_*knb 5 scala netlogo

为什么NetLogo是在Java和Scala的混合体中实现的?是因为更好地支持并发吗?我不熟悉Scala,但我认为函数式编程风格更适合表示并发编程的保证.

Set*_*sue 6

以下是我从2001年到2014年作为NetLogo首席开发人员的经验.

NetLogo中的所有Java代码都是旧代码,我们根本无法将其转换为Scala.

NetLogo项目始于1999年左右,早在Scala存在之前.

当我们在2008年切换到Scala时,我们已经积累了大量的Java代码.随着时间的推移,许多Java代码已经转换为Scala,但不是全部.绝对将所有内容转换为Scala将是一项巨大的努力; 这不值得.

自2008年以来,NetLogo中的所有新代码都在Scala中.

并发不是从Java切换到Scala的主要动机.(在大多数NetLogo中,只有两个线程,即GUI线程和作业线程.只有BehaviorSpace使用更多线程,并且它们相对容易在两种语言中保持分离.)

使用Scala的主要动机是Scala是一种比Java更强大,更富有表现力,更灵活,更优雅的语言,对函数式编程和不变性有更好的支持,这对编写优雅,正确的代码有很大帮助.

这使得Scala更有趣,更令人满意,并且生成的代码更可能更正确,更短,更易于维护.使用Scala(根据我们的经验,通常)会吸引聪明人到开发团队.