Scala适合初级程序员?

时间:2010-04-06 08:40:19

标签: scala

我们正在考虑将Scala用于我们公司内的新项目。我们有一些只有PHP知识的初级程序员,我们怀疑他们可以处理Scala。你有什么看法?有人说:“斯卡拉是一个复杂的野兽!”,有人说:“一旦你得到它就很容易。”也许某人有真实的经历?

13 个答案:

答案 0 :(得分:18)

“我的同事不会理解斯卡拉”同时夸大其难度并侮辱你的同事。

  • Scala并不那么难。它只是另一种编程语言。初级程序员与Scala一起遇到的任何麻烦都会或多或少地与其他任何语言一样。

  • 你的同事很聪明。当然,我不了解它们,但这是一个非常安全的赌注,除非你的公司是那种雇用愚蠢人的组织,在这种情况下,你有更大的问题。

那就是说,在我的公司,我们有一些用Scala开发的核心产品,我们没有发现人们比Java更麻烦。代码通常更清晰简洁,更易于概括和重用等。

答案 1 :(得分:14)

我猜Scala可以用作“初学者”语言。即使背后有棘手的想法,你也不必在开始时使用/解释它们。如果你用Scala解释纯OO,我会说这是直截了当且容易理解的。由于Scala减少了其他语言的大量代码开销,因此使用Scala学习概念甚至比使用Java / C ++更容易。

我认为Scala作为初学者语言的一个主要缺点是缺少文档。不要弄错,官方的Scala文档非常好,而且可用的少量书籍对于获取语言的细节非常有用,但这些并不是为初学者编写的。例如在Java中你会发现数百本书名为“用Java学习OO”的书,你不会发现Scala可能是一个显示阻止者。

正如Hannes所提到的,只有在研究项目中进行新的语言介绍而不是生产性甚至是旗舰项目。如果你有一些青少年,这会使情况更好,采取一些内部工具,你总是想要和需要,让他们在研究项目中创建它。这也是尝试不同开发过程的好机会。如果Scala可以用作初学者语言,那么你的大三学生很可能会受到挑战,并会提供一个好的原型和非常好的证据。

答案 2 :(得分:7)

我相信大多数搬到Scala的人都是经验丰富且热情的编码员。我建议你先与高级程序员一起获得Scala项目的内部经验,然后再制定指导初级程序员的策略。我还建议你只涉及那些渴望加入的人。

答案 3 :(得分:4)

我会提倡它。但附带条件是,您对团队可接受的语言功能有明确的指导。例如,主要以命令式(对于受过Java训练的人熟悉)进行编码,或者可能限制递归或闭包的使用。

还计划让老年人指导青少年。这可以采取以下任意组合的形式:结对编程,代码评论,信息会话,定期讨论论坛等。

scala在JVM上大大改进编码的机会太大了,无法理解。当你的老年人进入它时,如果他们发现对发展的新的热情,我不会感到惊讶。当你的小辈进入它时,他们将从一开始就学习JVM开发的最佳实践。

答案 4 :(得分:4)

如果您选择这条路线,也许他们会发现Scalate framework比使用像Lift这样的传统更容易,因为它允许将HTML与Scala混合,这与PHP的工作方式非常相似。

答案 5 :(得分:3)

Scala是一种非常“正常”的编程语言。任何程序员都应该能够学习这门语言。学习Scala有困难的人主要使用命令式语言,并且对功能概念感到惊讶。所以没有经验的程序员可以更快地学习它。在我看来应该没问题,把它分配给青少年。从管理的角度来看,我会指定一名初级和高级开发人员作为一个团队(或两者中的更多,取决于项目的规模)。

答案 6 :(得分:1)

我最初的想法是Scala对他们来说太沉重了但我猜是因为Scala是一个OO / Imperitave / Functional混合体,人们可以将它们引入sca的OO / Imperative部分直到他们感到舒服,但是他们可能在Scala中有不良的PHP习惯,因为scala的作者大多喜欢功能风格而不是命令式。

所以,它可以工作,但我会为一个研究项目做这件事,而且肯定不是为了一个旗舰项目。

编辑:也许这也应该说:似乎像Scala这样的功能/ OO混合体正变得越来越流行,特别是因为功能语言如何处理并行处理而不是我们如何在Java语言中知道它。芯片中发现的内核数量正在迅速增加,因此这很重要。但是,提到PHP,似乎您正在开发线程不太重要的Web服务器脚本。 PHP甚至没有线程。

这提出了另一点。您是否要开发Scala Web应用程序,即Lift。如果是这样,那么你应该考虑加倍的学习曲线。

答案 7 :(得分:1)

我认为这取决于你的重要性。如果你想尽可能地学习OO编程和标准的东西,这是一个坏主意。

但是你真正给予他们的是一个学习真正酷炫和独特的东西的机会。女巫可以是很好的动力。 Scala有很多很酷的东西。如果你可以处理Scala,你也可以处理很多其他的。

与程序员(所有人)交谈并告诉他们你为什么要使用scala。询问是否有动力制造和学习并非每个人都可以做的事情并且加倍努力?

如果是这样的话!

答案 8 :(得分:1)

想象一下,你会选择Java并询问他们是否可以处理Java。如果你的答案是可以的,那么他们可能会处理Scala。

由于以下原因,Scala的难度稍大:

  • 没有很棒的IDE支持。支持范围从差到好。对于PHP程序员来说不一定是个问题。
  • 文档不像Java那样丰富

Java和Scala对PHP程序员(JVM,新库,编译语言,静态类型)都有新的挑战。

我不认为Scala是一个复杂的野兽,但你需要了解一些语法糖和设计原则,这对于学习Java也是如此。

答案 9 :(得分:1)

是的,如果......

  • 已与Scala一起做出战略决策
  • 公司可以处理来自陡峭学习曲线的命中(财务和时间)。

不,如果......

  • 没有高级Java,C#或C ++程序员也可以加入项目
  • 找不到Scala程序员作为主管
  • 程序员没有耐心学习Scala或处理Jars(库)分散在各地的语言,而不是像PHP这样的一两个整洁的软件包。

*注意:如果初级程序员是C ++,C#或Java软件工程师而不是PHP,那么我的答案会有所不同,比如说吧!

答案 10 :(得分:0)

我不推荐它。我对Scala的体验只来自自制项目,但我想象当前糟糕的IDE支持,非常频繁的API更改和非常灵活的语法(允许自己挂起以及参与项目的其他人)会导致很多问题在更大,更官方的项目中。

答案 11 :(得分:0)

给他们IntelliJ并将他们扔进深处。

答案 12 :(得分:0)

这是我最近偶然发现的博客文章:
http://james-iry.blogspot.com/2008/07/java-is-too-academic.html

它表明即使是Java也可能过于学术化而无法被没有函数式编程经验的程序员所理解。另一方面,Scala允许以“命令式方式”编写代码,因此如果您不理解它,您可以避免使用所有FP。在我看来,Scala比Java更简洁,所以我想一个“初级程序员”应该能够处理它。