我来自Java背景,试图学习Scala。目前,我感到非常不知所措,使用Scala似乎需要学习的东西更多,做同样事情的方法也很多。
我想知道是否有人对从何入手提出任何建议,以及他们花多长时间才能感到该语言相当称职?
甚至for循环理解之类的小功能似乎都非常强大,但这只是您需要记住的另一种语法!
我来自Java背景,试图学习Scala。目前,我感到非常不知所措,使用Scala似乎需要学习的东西更多,做同样事情的方法也很多。
我想知道是否有人对从何入手提出任何建议,以及他们花多长时间才能感到该语言相当称职?
甚至for循环理解之类的小功能似乎都非常强大,但这只是您需要记住的另一种语法!
Answers:
我去过你那里,几乎放弃了几次。虽然绝不是Scala的专业开发人员,但我觉得我现在已经对该语言有了牢固的了解-足以使它彻底破坏我与Java的关系。
我做的第一件事是花几个星期玩耍,阅读各种博客和该语言的介绍。那是一个错误,我没有学到(或至少不了解)很多有用的东西,而完全感觉不尽如人意。
第二件事是花一些时间解决在技术上很简单的问题,但迫使我自己探索Scala语法的特定方面:
尽管这并不能在一夜之间将我变成专家,但是它使我对语言有了足够的熟悉,以至于不再觉得这种不可能了。
有了这种信心,我终于开始了我应该做的事情:获得Martin Odersky撰写的Scala编程指南,并尝试每两天阅读一整章。这是一本写得很好而且全面的书,如果您已经具有良好的编程背景,那么就不应该太令人生畏。无需使您的初读内容太痛苦:跳过标记为可选的部分,确保您了解概念,但不要对细节感到困惑(特别是,我觉得关于收藏的章节过高,可以脱脂)。知道一个概念的存在以及在何处阅读有关其工作原理的全面解释是极大的帮助。
阅读本书的另一种方法是参加Coursera课-虽然不那么全面,但涵盖了大多数关键点,并分为可管理的逻辑单元。另一方面,我不知道课程结束后是否有可能上课,而且我发现听别人(甚至是像马丁·奥德斯比(Martin Ordesky)这样精明和博学的人)时,我的参与度也大大降低了。读书时。
Scala的另一个问题是您必须摄取的词汇量-按名称参数?理解力?关闭?如果您对此感到不知所措,我发现Scala词汇表和目标堆栈溢出搜索的良好结合对我很有帮助(Daniel Sobral和Travis Brown寻找答案)。实际上,我甚至竭尽全力用词汇表创建了一个Anki平台,并觉得这是一个很大的帮助。
最后,这可能很明显,但是代码,代码,代码。找到一个可以进行的辅助项目,即使这很琐碎。我所做的是编写了一个非常简单的Amazon搜寻器,每当我感兴趣的作者发行一本新书时,它都会向我发送一条推文。它花了比原本应该花费的时间更长的时间,但这是我爱上这种语言的时候。
如果您能做到这一点,那么您可能不需要进一步的帮助,但是一旦掌握了该语言,一个很好的建议就是对基础概念进行更深入的研究。您熟悉OOP,请尝试阅读函数式编程-我可以肯定地说这会让您大吃一惊。Scala中的函数式编程应尽快发布,但早期访问版本已经非常出色。另一个答案是Java开发人员的函数式编程,我不熟悉但倾向于相信它是好的(什么时候O'Reilly的书至少不值得一读?)。
我希望这不会太冗长而明显,并真诚地祝您一切顺利。Scala有其缺点,但是它是一种很棒的语言,它将使您的大脑朝着您不知道存在的方向发展。我会在一年内寻找您的“学习Haskell,感到灰心” :)
Scala与Java的思维方式非常不同,因此不要气!!我可能会从针对Java开发人员的函数式编程开始,以便您可以进入函数式思维方式。
附近有Java和/或Scala用户组吗?与同事一起学习新语言总是容易的。
祝您好运,并坚持不懈!