我是一个经验丰富的C++程序员,拥有一般的Python技能。我首先研究Python的原因是:
我认为Python很棒,我相信我已经实现了上述目标。我将继续使用它的小项目,脚本和网络开发。
不过,我怀疑我能否将它用于中等到大型的项目。虽然动态输入是方便的,但它允许某种类型的bug,我觉得这是令人不安的。单元测试和链接可以缓解这个问题,但是静态类型完全消除了这个问题。
在查看了一些编程语言之后,我认为Scala看起来是一个很好的候选:我喜欢类型推断,它运行在JVM上,因此它应该可以在JVM可用的地方使用。在使用函数式编程时,我还可以学到更多有关它的知识。
但是..。我也有一些疑问,我希望Stack溢出社区能在这里提供帮助:
最后,您认为Scalas的一些缺点是什么?
发布于 2009-07-10 14:49:45
是。Android上的Scala有相当大的变化。至于J2ME,我在这方面看到了一些东西,但并不多见。源代码存储库中有一些与J2ME相关的代码。我不知道这是否可行,但在我看来,这方面的需求不大。
我还将提到Scala上有一个关于所需目标平台的池,而J2ME是其中之一,在图腾极上非常低。
此外,您还可以将C++与Java混合使用,无论这有什么价值。如果您没有这方面的经验,您只需阅读Java资源,因为Java资源中的任何内容都适用于Scala,没有任何更改(除了Scala语法)。
当然是的。Scala用它来确保您不需要使用函数样式进行编程。事实上,这是函数派对Scala的主要批评:有些人不考虑语言函数式,除非它迫使程序员用函数式写作。
不管怎样,你可以按你自己的方式做事。不过,我敢打赌,你会养成功能性的习惯,而不会意识到它们是功能性的。
也许您可以在我自己的博客中查看有关编写矩阵类的矩阵系列。尽管它看起来像标准的OO代码,但实际上它非常实用。
IDEA (IntelliJ)、NetBeans和Eclipse都对Scala有很好的支持。看起来IDEA是最好的,NetBeans /Eclipse尽管NetBeans肯定比最近的Eclipse更稳定,但它们之间还是相互跳跳。另一方面,Eclipse上的支持正在采取一条非常有希望的路线,在未来6个月左右会产生结果--只是这是一条颠簸的路线。:-)
对于这些环境,Scala工具的一些有趣的迹象是,开发中的Eclipse使用AOP来与整个IDE更加无缝地合并,NetBeans插件正在用Scala完全重写,还有一个Scala支持将Java代码转换为Scala代码。
EMACS人员也为Scala提供了广泛的工具,许多较小的编辑器也对它提供了支持。例如,我对jEdit对小型程序和脚本的支持非常满意。
也有很好的Maven支持--事实上,安装电梯的标准方法是安装maven,然后构建一个Lift原型。这将引入一个适当的Scala版本。还有一个scala:cc目标也会触发重新编译。
说到重新编译,无论是Maven,特别是Ant,都不能很好地识别需要重新编译的内容。这个问题产生了用Scala编写的SBT (简单构建工具),它通过使用Scala编译器插件解决了这个问题。SBT使用与Maven以及Maven/Ivy存储库相同的项目布局,但是项目配置是在Scala代码中完成的,而不是XML --同时也支持Maven/Ivy配置文件。
非常快。作为一种纯粹的面向对象语言,Scala已经引入了一些不错的特性,这些特性可以与C++中的一些东西相媲美,尽管它们以不同的方式工作。在这方面,一旦您认识到这些特性的用途并将它们与C++相关,您将远远领先于Java程序员,因为您已经知道如何处理它们了。
和Java是一样的。您可以部署JAR、WAR或任何其他Java目标,因为scala编译器生成类文件。实际上,您可以使用Java的jar从类文件生成Scala的JAR文件,并使用Maven目标来构建WAR文件。
不过,还有一种替代脚本文件的方法。您可以调用" Scala“直接运行Scala源代码,类似于Shell脚本的Perl。它也可以在Windows上完成。但是,即使使用编译守护进程来加快执行速度,启动时间也很慢,以致于在繁重的脚本环境中有效地使用Scala需要一些类似钉枪的东西。
至于Scala的缺点,看看我在这堆栈溢出问题中的答案(和其他的)。
发布于 2009-07-10 10:43:00
Scala是一种非常值得投资的不断发展的语言,特别是如果您来自Java世界。Scala在阿蒂玛中得到了广泛的介绍。请参阅比尔·文纳斯的这篇文章,并阅读关于Twitter和Scala的文章。
关于你的问题:
发布于 2009-07-10 13:43:23
编程范例:我对此时切换到FP感到不舒服。首先,我可以在一些FP中使用OO和过程性,然后在我学到的时候改变比例吗?
Scala完全支持命令式编程,编写没有FP元素的程序很容易(然而,FP是有用的,值得学习)。
学习速度:考虑到我的经验,你认为我能用Scala达到一个可行的水平有多快?
快点。Scala中有许多有趣的特性,对于来自C++环境的人来说可能并不熟悉,例如,类型化系统的一些特性。有些人认为,在您了解Scala之前,有很多东西需要学习,这是语言的一个问题;我不这么认为。这些特征的存在是语言的一个优势。特征越多越好。毕竟,你不必一次就把它们全部使用,就像你不必购买商店里出售的所有东西一样。
https://stackoverflow.com/questions/1108833
复制相似问题