rpg*_*rpg 32 java scala jvm-languages
我是一名经验丰富的C++程序员,具有普通的Python技能.我首先研究Python的原因是:
我认为Python很棒,我相信我已经实现了上述目标.我将继续将它用于小型项目,脚本和Web开发.
我怀疑我可以将它用于中型到大型项目.虽然动态类型很方便,但它允许我发现令人不安的某类错误.单元测试和linting可以缓解这个问题,但静态类型完全消除了它.
在查看了一些编程语言之后,我认为Scala看起来是一个很好的候选者:我喜欢类型推断并且它在JVM上运行,所以它应该在JVM可用的任何地方都可用.我还可以在使用它时了解有关函数式编程的更多信息.
但是......我也有一些疑问,这就是我希望Stack Overflow社区可以提供帮助的地方:
最后,您认为Scalas的一些缺点是什么?
Dan*_*ral 29
是.在Android上有很多关于Scala的动作.至于J2ME,我在这方面看到了一些东西,但并不多.源代码存储库中有一些与J2ME相关的代码.我不确定它有多可行,但在我看来,对此的需求并不大.
我还要提到Scala-Lang上有一个关于所需目标平台的池,而J2ME就是其中之一,在图腾柱上非常低.
除了价值之外,你可以将C++与Java混合使用.如果您对此没有任何经验,则可以只读取Java资源,因为其中的任何内容都适用于Scala而不进行任何更改(除了Scala语法).
当然,是的.Scala不用这样就确保你不需要以函数式编程.这是功能人员对Scala的主要批评,事实上:有些人并不认为语言是功能性的,除非它迫使程序员以功能方式编写.
无论如何,你可以按照自己的方式做事.不过,我的赌注是,你会发现功能习惯,甚至没有意识到它们的功能.
也许您可以在我自己的博客中查看关于编写Matrix类的Matrices系列.尽管它看起来像标准的OO代码,但它实际上非常实用.
IDEA(IntelliJ),NetBeans和Eclipse都对Scala有很好的支持.似乎IDEA是最好的,NetBeans/Eclipse相互之间保持着相互跳跃,尽管NetBeans最近比Eclipse更稳定.另一方面,对Eclipse的支持正走在一条非常有前景的路线上,该路线将在未来6个月左右产生结果 - 这只是一条磕磕绊绊的路线.:-)
针对这些环境的Scala工具的一些有趣迹象是,开发中的Eclipse插件使用AOP与整个IDE更加无缝地合并,NetBeans插件在Scala中被完全重写,并且IDEA上有一个Scala Power Pack除其他外,支持将Java代码转换为Scala代码.
EMACS人员也为Scala提供了大量工具,许多小编辑也对它提供了支持.例如,我对jEdit对小程序和脚本的支持非常满意.
还有很好的Maven支持 - 实际上,安装Lift的标准方法是安装maven,然后构建一个Lift原型.这将引入适当的Scala版本.还有一个scala:cc目标也会触发重新编译.
说到重新编译,Maven,特别是Ant都没有很好地确定需要重新编译的内容.从这个问题开始,用Scala编写的SBT(简单构建工具),通过使用Scala编译器插件解决了这个问题.SBT使用与Maven相同的项目布局以及Maven/Ivy存储库,但项目配置是使用Scala代码而不是XML完成的 - 同时支持Maven/Ivy配置文件.
非常快.作为纯粹的OO语言,Scala已经引入了一些不错的功能,可以与C++中存在的一些东西相比,但不是Java,尽管它们以不同的方式工作.在这方面,一旦你意识到这些功能的用途并将它们与C++的东西联系起来,你将远远领先于Java程序员,因为你已经知道如何处理它们了.
和Java一样.您可以部署JAR,WAR或任何其他Java目标,因为scala编译器会生成类文件.实际上,您使用Java的jar从类文件生成Scala的JAR文件,而Lift的Maven目标支持构建WAR文件.
但是,脚本文件有一个替代方案.您可以调用"scala"直接运行Scala源代码,类似于Perl of Shell脚本.它也可以在Windows上完成.但是,即使使用编译守护程序来加速执行,启动时间也足够慢,以至于在繁重的脚本环境中有效使用Scala需要像Nailgun这样的东西.
至于Scala的缺点,来看看我的回答(和其他的)这个堆栈溢出问题.
kgi*_*kis 16
Scala是一种非常值得投资的不断发展的语言,特别是如果您来自Java世界.Scala被Artima广泛报道.请参阅Bill Venners的这篇文章,并阅读有关Twitter和Scal的文章.
关于你的问题:
编程范例:此时切换到FP我感觉不舒服.我可以先使用OO和一些FP程序,然后根据我的学习改变比例吗?
Scala完全支持命令式编程,编写没有FP元素的程序是一件轻而易举的事情(然而,FP很有用,无论如何都值得学习).
学习速度:考虑到我的经验,您认为我能用Scala达到可行水平的速度有多快?
很快.Scala中有许多有趣的功能,对于来自C++,Java环境的人来说可能并不熟悉,比如打字系统的某些功能.有些人认为,在您了解Scala之前需要学习很多内容的事实是语言问题 ; 我不同意.这些功能的存在是该语言的优势.越多越有特色了.毕竟,您不必一次性使用它们,就像您不必购买商店中出售的所有商品一样.
学习速度:考虑到我的经验,您认为我能用Scala达到可行水平的速度有多快?
我也来自C++背景,有一件事我注意到,因为与C++相比,你可以编写更少的代码用于类似的任务,你的学习将加快,因为你将在同一时期完成更多工作.这与我在Ruby中遇到的现象相同.