任何实用的编码道场/卡塔的想法?

时间:2010-01-22 16:08:49

标签: scala

我被要求参加一个研讨会并尽快编写dojo,以便人们尝试使用Scala并尝试用它来构建一些东西。与会者都将成为Scala的新手,可能来自多种语言中的任何一种(我认为他们可以使用至少一种主流语言编写代码 - 我包括与Java,C#,Python和Ruby的语法比较)。

Scala的部分吸引力在于它是实用的 - 您可以将它用作插入式“强大的Java”(Java具有更少的语法杂乱,闭包,不变性,FP,特征,单例​​对象,漂亮的XML处理,类型推理等)仍然在JVM(以及据称的.NET CLR)上运行,并且不需要您更改构建工具,服务器基础结构,库,IDE等。我见过的大多数katas都很有趣,但不是“现实世界” - 像Euler等项目的数学挑战。这些似乎不合适,因为我们正试图探索将它作为一种实用的现实世界语言来使用,人们可以考虑将其用于黑客和工作,并且因为人们不一定非常熟悉Scala语法的更深层部分或函数式编程背后的概念。

那么,有没有人遇到过更实际的日常生活习惯,而不是算术上的“解决问题”? Katas,也就是说,可以测试语言,库和工具是否能够满足大多数人必须做的实际日常编程的用例,而不是测试。 (并不是说不切实际的那些不好玩,但是不适合我被要求运行的那种东西。)

如果我找不到好的例子,我认为尝试建立类似图书馆目录的东西可能是有用的 - 这个活动适用于主要为大学(以及教育和文化)建设基础设施的程序员 - 博物馆,画廊,学校,图书馆等)。虽然这有点无聊,但这是与会者在日常生活中所做的事情。有什么建议吗?

4 个答案:

答案 0 :(得分:10)

这里有一个创意公共许可入门培训课程,其中有动手练习:

http://github.com/javaBin/scala-training-slides

http://github.com/javaBin/scala-training-code

幻灯片采用Open Office格式。如果您没有安装此功能,可以将它们上传到SlideShare,然后将其转换为在线观看。

答案 1 :(得分:3)

我的blog中的大多数编程示例实际上都是编码dojo练习。特别是matrices series,还有puzzles99 beers。现在,不要忽视矩阵系列是“数学”的,因为我关注的问题与Scala中的类的构造有关,而不是与花哨的算法有关。事实上,我几乎都跳过了数学算法。

现在,99 Scala Problems以及来自Project Euler的几乎所有内容都是Scala功能部分的精彩练习,但我明白这不是你的重点。我建议retronymanswerRosetta Code,不是功能导向,可能有更一般的例子。当然,有许多Scala examples,但您可能也希望考虑其他任务,以获取创意。

要了解Scala有很多很酷的事情,但是在初学者级别必须要小心。例如,我不会谈论依赖注入(自我类型和蛋糕模式)或类型类(用implicits模拟这种模式)。

请查看Scala Lang网站上的资料,尤其是Scala by Example文档。

修改

我现在已经监督了几个Scala dojos,所以这里有一些我从那时学到的东西:

  • 问题:他们必须充满乐趣,不是那么容易,不是那么难,而且必须是每个人的意见。

    我们使用的是Dojo Puzzles网站,这是葡萄牙语,因此对大多数人来说都不会有用。如果有一个类似的英文网站,我很乐意听到它。

    它的工作方式是你要求一个随机的问题,仔细查看并讨论你是否会接受它,然后说明你将使用它,你将不会使用它,或者你可能会使用它,但你想看到另一个。这个投票已经注册,您可以看到有多少人选择了问题,这有助于决定是否在第一时间选择它。

  • Scala知识:事实证明,事先介绍Scala语言的关键概念并不重要,特别是如果一些参与者具备基本知识。

    根据我的经验,通过一个简单的“通过”测试来设置测试环境并解释人们应该如何编写测试通常足以让人们开始。如果你觉得有人在努力写点什么,那就快速解释一下吧。

  • Scala教学:如果您打算教Scala,请继续学习课程并跟进道场。在这种情况下,请保留一组适合课程的道场问题,并根据您想要在一天内完成多少课程,缩短。

    它有助于对人们如何解决问题施加人为限制。我实践中的一些约束示例是没有类和单表达式方法(即没有多个语句或val / var声明)。这些限制的关键在于人们无法以他们习惯的方式解决问题,这使他们能够探索语言以寻找替代方案。

我在当前的工作in this repository完成了三个dojos的最终结果。

目前我们正在使用Randori Kata格式,但没有固定的时间或休息时间,并且在道场结束时进行回顾,而不是在下一个开头。然而,这正是我们目前所处的 - 我们已经尝试了许多变化,我们仍在不断发展。

答案 2 :(得分:1)

也许你可以看一下Ruby Quiz材料的灵感。

答案 3 :(得分:0)

看看Martin Odersky(scala的创造者)的Scala by example