Scala 是一个很棒的编程教学工具
由于 Scala 涵盖了多种编程范式,它可以用来介绍计算思维中涉及的许多重要概念,从最基本的概念到最先进的概念。它简洁的语法使将这些概念映射到代码中变得直截了当。它适合教授初学者编程,以及教授高级软件工程课程。这种可扩展的语言也适合教学!
“Scala 是一种很棒的教学语言,因为它与我用来教授入门计算机科学的其他编程语言相比,不太容易磨损学生的毅力。”
Björn Regnell,瑞典隆德大学。
“Scala 可以作为一种静态类型脚本语言来教授。这种语言非常适合在 CS1 中进行小型编程,而不会出现我认为动态类型语言存在的所有缺点。”
Mark Lewis,美国圣三一大学。
“熟悉但灵活的表达式式语法、对模式匹配的先进支持、广泛的集合库、强大的类型系统以及对基本编程结构的简洁方法,都是游戏规则的改变者。”
Lionel Parreaux,香港科技大学,香港。
继续阅读以了解使用 Scala 教授编程的充分理由,了解 Scala 在世界各地教授的场所,以及发现各种级别(从高中到大学)使用的教学工具和材料。
为什么要教授 Scala
多种范式
当我们学习新概念时,我们会比较和对比不同的但相似的概念,并将它们与我们已经知道的知识联系起来。这是一个非常重要的学习原则,许多教学策略都建立在对比和比较的基础上,同时探索概念和想法之间的相似性和差异。Scala 是一种支持这种教学原则的优秀语言,因为它包含了从简单到高级的实用概念和想法混合,可以逐步对比和比较。
“我在教学中使用的一个例子是对比解决配置问题的不同方法:我们首先对比全局可变变量与默认参数,然后当我们更深入时,我们会对比默认参数与上下文参数。这样,我们可以深入讨论灵活性与复杂性之间的权衡。”
Björn Regnell,瑞典隆德大学。
“我们教授如何实现基本的解释器和类型检查器。为此,函数式语言提供的带有模式匹配的代数数据类型和不可变数据结构是必不可少的。”
Jaemin Hong,韩国科学技术院。
“Scala 提供了多种编程语言结构。通过将 OOP 和函数式编程方面整合到一门语言中,它成为教授这两种范式并比较同一语言内解决方案的绝佳工具。同时,Scala 也是教授软件设计的绝佳工具:它包含从基本结构到高级程序结构技术的全方位功能。这使我们能够使用同一语言来讨论将软件分解成模块的各种策略。”
Jonathan Brachthäuser,德国图宾根大学。
表达力强
Scala 拥有简洁的语法,使开发人员能够专注于程序的意图,而不会被语法噪音分散注意力。以下是用 Scala 编写的“Hello world”程序
@main def run() = println("Hello, World!")
“Scala 是一种极好的教学语言,用于说明具有不同权衡的解决方案,例如,与可能更难阅读和维护的其他解决方案相比,最简单的概念可以完成任务,但可能灵活性较低或性能较差。”
Björn Regnell,瑞典隆德大学。
“Scala 使我们能够专注于有趣的领域概念,而无需处理繁琐的底层实现问题。”
Jaemin Hong,韩国科学技术院。
安全
Scala 拥有静态类型系统,可以防止整类错误发生。编译器帮助学生在运行时之前找到错误。如果学生遇到太多难以追踪的运行时错误,这可能会影响学习的乐趣,并导致疲劳,从而使学生过早放弃,并产生自我效能感差和失去动力的感觉。
“根据我在 Scala 中的经验,与编译器关于静态错误的对话强烈支持概念学习并增强自我效能感:‘我能做到,而且我正在掌握它!’。”
Björn Regnell,瑞典隆德大学。
规律性和原则性结构
Scala 消除了 C 类语言中许多仍然存在于 Java 和 C# 中的怪癖。例如,没有关于什么可以嵌套在什么里面的令人惊讶的限制,也没有原始非对象和“真实”对象之间的不规则语义差异。
专家认可的最佳实践(例如,避免使用 null
,操作不可变值)自 Scala 诞生以来一直是规范。
“Scala 中原则性概念的规律性和普遍性是我在多范式语言中见过的最好的。每个奇怪的不规则性和棘手的例外都会磨损学生的毅力,并占用教学时间,而这些时间可以更好地用于其他方面。”
Björn Regnell,瑞典隆德大学。
“学习 Scala 后,许多学生都不想再回到像 Java 和 C++ 这样的更原始和临时的语言,除非课程要求!”
Lionel Parreaux,香港科技大学,香港。
行业采用
Scala 被 Twitter、Netflix、AirBnB、NASA、乐高、Spotify(仅举几例)等公司使用。
Scala 在 Redmonk 编程语言排名 中排名很高。
跨平台
Scala 已成功用于实现后端(在 JVM 上运行)和前端(在浏览器中运行)。
生态系统
Scala 有 数千个库,并且可以访问整个 Java 生态系统以及 JavaScript 生态系统。
“可以完全访问 Java 库以及大量的 Scala 库环境,这意味着我可以布置有趣的作业。”
Mark Lewis,美国圣三一大学。
多功能
Scala 已成功应用于分布式服务、并行编程、大数据分析、HTTP 服务器等领域。
“在 CS2 中,我让学生做了一个涉及图形、网络和多线程的项目,Scala 使得在有限的开销下实现这一切成为可能。”
Mark Lewis,美国圣三一大学。
谁在教授 Scala
几所大学使用 Scala 教授编程。在以下地图上发现它们
想将自己添加到地图中吗?添加您的姓名 这里。
教师社区
加入教师社区,并开始讨论您的教学设置或教学材料。
教学材料
本节列出了用于教授 Scala 编程的常用工具或课程。
Kojo
图片版权:Aditya Pant。
Kojo 是一款面向儿童的编码应用程序。Kojo 用 Scala 编写,孩子们可以在应用程序中用 Scala 进行编码。
Kojo 是印度一个州的编码课程的一部分。
您可以查看 Kojo 作品的示例 这里。
Scala Bridge
Scala Bridge 通过为弱势群体提供入门编程研讨会,构建了一个包容性的 Scala 社区。
Scala Center 在线课程
Scala 中心提供 在线课程,帮助您学习 Scala。这些课程面向具有一定(非 Scala)编程背景的人员。
其他在线资源
查看 其他在线资源。