FOSS 教育/使用 FOSS 教授 IT
在前面的部分中,我们探讨了 FOSS 在教育机构建立 IT 基础设施以及用于行政功能中的应用。在本节中,我们将考察 FOSS 在 信息技术 教学中的作用。目前,大多数用于 IT 教学的软件,包括用于教授计算机素养的基本生产力软件、编程课程的编译器和关系数据库管理系统,都是专有的。然而,有一些可用的 FOSS 等效项,可以作为合适的替代方案。除了节省成本之外,在 IT 教学中使用 FOSS 还有其他优势。
在最基本的层面上,IT 教学涉及传授计算机素养。 计算机素养 表示已获得使用计算机完成常见任务的技能。这意味着熟练使用常见的桌面应用程序,例如文字处理器、电子表格、电子邮件客户端和 Web 浏览器。表 1 中的技能被认为是必不可少的。技能列表中的顺序并不代表其重要性,并且随着技术的不断发展,顺序也会发生变化。技能的相对重要性也会因个人而异。
计算机 素养不仅应教授给学校的学生,还应教授给可能在早期学校教育中没有获得这些技能的大学生。人们普遍认为,如今的大学生无论其学习领域如何,都应具备计算机素养并拥有使用桌面应用程序完成学业工作的技能。在一些大学,会开设 计算机素养 课程,以确保学生掌握这些技能。在其他大学,可能没有正式课程,学生需要自学。无论如何,计算机素养 项目通常使用主流的专有软件。即使在低级别的教育阶段,也很常见的是,学生在计算机素养课程中学习使用 Microsoft Windows 和 Office。
表 1 IT 技能 | |
---|---|
1. | 设置个人电脑 |
2. | 使用基本 操作系统 功能 |
3. | 使用 文字处理器 |
4. | 使用图形和/或艺术软件包 |
5. | 将计算机连接到网络 |
6. | 使用 互联网 |
7. | 使用计算机进行通信 |
8. | 使用 电子表格 |
9. | 使用 数据库 系统 |
10. | 使用新应用程序的教学材料 |
(来源:美国国家研究委员会信息技术委员会报告) [1]
然而,这种 计算机素养 教学方法存在两个问题。首先,使用特定版本的 专有软件 的技能通常是短暂的。即使学习同一供应商的新版本软件会更容易(相对于学习全新的软件),但仍需要重新培训,除非用户能够自学。为了使学生能够学习、遗忘和重新学习,应采用不同的计算机素养教学方法。重点应放在不依赖于特定供应商的软件的通用技能上。
使用特定 专有软件 在 计算机素养 课程中的第二个问题是,它鼓励非法复制软件。学生需要使用学校或大学提供的相同软件来完成作业和练习,导致他们中的许多人在家或笔记本电脑上使用非法副本。受资金限制的学校和机构甚至可能会在为学生提供计算机素养培训的热情中使用非法副本的专有软件。
在计算机素养教学中,使用哪种操作系统、文字处理器、电子邮件客户端、Web 浏览器和电子表格并不重要。 GNU/Linux 以及相应的 图形用户界面 (GUI),例如 GNOME 或 KDE,是一个可以用来教授操作系统基本功能的 FOSS 操作系统。
LibreOffice 包含 文字处理器、电子表格、演示 和绘图程序,可以替代专有的等效程序。它足以教授办公室生产力软件中可用的基本功能。其他 FOSS,例如 Abiword 文字处理器或 Gnumeric 电子表格,也可以在需要时用于计算机素养课程。
为了教授学生如何访问网络或使用电子邮件,可以使用 FOSS 应用程序 Mozilla。同样,Mozilla 的功能与 Windows 附带的浏览器和电子邮件客户端相当,对于计算机素养课程来说应该足够了。
FOSS 数据库 系统 MySQL 和 PostgreSQL 功能齐全,肯定可以用来教授数据库系统的基础知识。这些数据库的 GUI 可能不如专有的等效程序那么人性化,但这不应该是学习基本原理的障碍。
美国的一位计算机科学老师 Michael Surran 说道:[2]
人们有时会问我,“教我们的学生使用 Linux 能否让他们为职场做好准备?” 这个问题基于这样一个事实,即 Microsoft 目前是操作系统和办公软件领域的霸主。我思考这个问题很久,最终的答案是,“当然可以。” 任何类型 操作系统、办公应用程序或其他类似分组软件的基本原理都是一样的。一个精通 Linux 的学生不会在 Windows 环境中迷路。我发现 Linux 比这两种 操作系统 更先进,但我们的学生却能很快、很轻松地学习。复制文件或格式化段落的流程在不同的操作系统之间并没有太大区别。
将 FOSS 软件作为 计算机素养 课程的基础,还可以为学校或大学节省成本。它无需确保购买足够的许可证,因为 FOSS 软件可以在任何必要的计算机上合法安装。学生也可以在自己的计算机上无限制地安装 FOSS 软件,无需为了在校外完成学业而非法复制专有软件。更重要的是,这将鼓励在教学中强调基本原理和概念,避免对特定供应商的专有软件进行狭隘的接触。
但是,在老师和讲师能够胜任使用这些软件进行教学之前,可能需要对他们进行使用 Linux 和 FOSS 的培训。需要修改课程,并且需要付出一些努力来开发合适的教学材料。
计算机素养 通常是学校教授学生 IT 的主要重点。这将使他们具备使用计算机来增强学习、访问 互联网、使用电子邮件等等的能力。
但正如之前强调的那样,这不应该局限于教学生使用特定的专有软件。没有接触过计算机的学生更有可能接受 Linux 和 FOSS,并且最好尽早开始使用 FOSS。
例如,出于教学目的,FOSS 在 澳大利亚 的一些非政府学校被引入。这些学校的学生培养了使用 IT 的能力,而不假定计算只能基于一个主要的计算平台。在 悉尼英格兰教会女子文法学校 的教师有意让学生接触不止一套办公应用程序,让他们有机会使用 FOSS 和 专有软件,并加深他们对这些应用程序原理的理解。[3]
除了使用 FOSS 教授 IT,还有很多可用于在学校教授非 IT 科目的 FOSS。其中一些在第二章中提到,并且还提供了此类教育软件的在线资源。
学习如何编写计算机程序总是 计算机科学 或 信息技术 课程的一部分。它也经常教授给其他学科的学生,因为他们可能需要为自己的项目或研究工作开发一些计算机程序。
从根本上说,选择作为教授编程概念基础的 编程语言并不重要。在 Linux 平台上,有许多可用于此目的的计算机语言。 GNU 编译器集合 (GCC) 是一组编程语言编译器,包含在大多数 Linux 发行版 中。它目前支持 C、C++ 和 Java 等计算机语言。正在努力添加其他语言,如 Pascal 和 Cobol。此外,还有其他可用的计算机语言编译器,例如 BASIC 语言的方言。
许多教育机构目前将其编程课程建立在 Windows 平台上,导致对专有编程工具的依赖。这些工具通常以 集成开发环境 (IDE) 的形式出现,它简化了编程中涉及的一些任务。但是,FOSS 平台上也有一些可用的 IDE,例如 KDevelop (http://www.kdevelop.org),这些 IDE 可以替代专有工具。
在更高级的阶段,FOSS 源代码的可用性将促进编程教学。学习如何编写优质计算机程序的最佳方法是研究其他人编写的代码,尤其是真实的、高质量的程序。以写小说为例:如果作者没有读过他人的大量作品,他就不能指望写出好小说。相比之下,程序员被期望仅仅通过掌握特定计算机语言的语法和结构来编写程序,而没有多少机会学习他人编写的优质代码。
过去,缺乏可供所有人查看和研究的真实、高质量的源代码。专有软件的源代码作为商业秘密受到保护,很少公开发布。FOSS 公开了数千个程序的源代码,其中一些在各自的领域处于市场领先地位。FOSS 源代码可用性的重要性及其在软件开发能力建设中的关键作用仍然没有得到广泛的认可。
大多数 FOSS 用户对查看源代码没有兴趣,他们也没有必要这样做。但是,在教授学生编程的地方,应该利用源代码的可用性来增强教学和学习。例如,在为 IT 课程完成的编程项目中,可以鼓励学生研究可用的源代码,并通过添加功能或改进来构建它。如果他们准备充分,他们甚至可以向 Sourceforge.net 上托管的各种 FOSS 项目提交代码贡献,例如。
虽然在基础阶段使用哪种 编程语言作为教学基础并不重要,但在更高级的阶段,机构应该教授与学生未来工作相关的语言。如果学生从事软件开发职业可能参与 FOSS 项目,那么课程设计应考虑这一点。
表 2 FOSS 项目中使用的计算机语言 | ||
---|---|---|
编程语言 | 项目数量 | 项目百分比 |
C | 12,329 | 19.3 |
C++ | 12,173 | 19.0 |
Java | 10,594 | 16.5 |
PHP | 8,023 | 12.5 |
Perl | 5,141 | 8 |
Python | 2,873 | 4.5 |
(来源: http://sourceforge.net)
表 2 列出了 FOSS 项目中使用的计算机语言,这些语言包含在截至 2003 年 12 月的 SourceForge (http://sourceforge.net) 存储库中。
许多其他语言正在用于开发 FOSS。我们只在上面的列表中包含了前几位。 C 和 C++ 主要用于 FOSS 项目。但是, Java、PHP、Perl 和 Python 的使用正在增长。C 和 C++ 已经在传统的计算机科学课程中普遍教授。随着 Java、PHP、Perl 和 Python 的重要性日益增加,应该加大力度将它们纳入 IT 课程。
随着 FOSS 的重要性日益增加,软件工程的教学应该进行修改,以考虑开发 FOSS 中使用的流程和方法。
在埃里克·雷蒙德的论文《教堂与集市》中,埃里克·雷蒙德 描述了开源软件开发的特点,并解释了他用两个比喻来比较传统软件开发(教堂模式)和开源软件开发(集市模式)的方法。
我曾认为,最重要的软件(操作系统以及像 Emacs 这样的大型编程编辑器)应该像教堂一样,由个别的天才或一小群魔法师精心制作,在完美的隔离状态下工作,绝不发布未完成的版本。
林纳斯·托瓦兹 的开发风格——尽早发布,频繁发布,尽可能地委派任务,开放到近乎放荡——让人感到惊讶。这里没有安静、庄重的教堂建造——相反,Linux 社区看起来更像是一个喧嚣的集市,充满着不同的议程和方法(Linux 档案网站就是最好的象征,任何人都可以提交代码),从这种混乱中,一个连贯而稳定的系统似乎只能通过一系列奇迹才能出现。[4]
一个开源软件项目通常是由于开发者自身的需要而开始的。他们会将软件开发到基本功能可以使用的地步,然后将其作为开源项目发布到社区。这个程序可能存在很多 bug、不完整且文档不足。但至少它能够运行,并且能够说服潜在贡献者相信它在不久的将来有望发展成为一个好的软件。这将吸引其他对解决相同问题感兴趣的开发者加入到这个项目中,为项目做出贡献。但是,开发并不总是从头开始的。事实上,许多成功的项目,比如 Apache,都是建立在现有的部分解决方案上的。值得注意的是,在集市模式下,项目不能从头开始。
与专有软件项目不同,开源软件项目会在可用的第一时间发布。只要软件有修改,就会发布更新版本。 “尽早发布,频繁发布”是开源软件项目的一个重要特征。通过这样做,更多的用户可以在不同的环境下参与到软件的测试中。如果存在任何 bug,它们将被迅速发现并修复。源代码的可用性使用户能够成为共同开发者,因为他们可以修复 bug,而不仅仅是报告 bug。相比之下,专有软件需要由一小群付费开发者通过 beta 测试流程来修复报告的 bug,这需要更长的时间。
这种开发模式并非完全没有结构,尤其是对于大型项目而言。例如,Linux 具有层次结构,基于 林纳斯·托瓦兹 对不同人员的责任委派。他们分别负责和管理 Linux 的不同部分,尽管林纳斯·托瓦兹将拥有最终决定权。开源软件项目高度的模块化带来了特殊的组织和决策流程。通常,开源软件开发模式往往更加非正式,因为开发者自愿工作,没有直接的经济收益。
如今,开源软件项目通常依赖于用于问题跟踪、源代码管理、设计、自动化测试以及打包和部署的工具。 并发版本系统 (CVS) 是开源项目中最广泛使用的版本控制系统。它的特点包括一个中央服务器,其中包含最新版本的软件,使任何人都可以通过互联网访问。CVS 可以配置为在每次更改时向项目开发者发送电子邮件通知,以便他们可以测试和审查新的源代码。Bugzilla 是为了在 Mozilla 项目中进行问题跟踪和技术支持而开发的。现在它被许多开源软件项目使用。
开源软件开发方法在很多方面都不同于传统的软件工程。一些研究人员发现,开源软件开发方法“可能比企业环境中常用的教科书式软件工程更快、更好、更便宜”。[5] 然而,他们并没有得出结论,认为非常大型和复杂的软件应用,例如针对小型市场的定制航空行业软件,可以使用开源软件模型进行开发;对于这些软件,可能仍然需要传统的软件工程方法。
脚注
[edit | edit source]- ↑ “熟练掌握信息技术”,美国国家研究委员会,信息技术委员会,国家科学院,1999 年。
- ↑ Surran, M., “从幼儿园到高中学习 Linux”,Linux Journal,2003 年 2 月;可从 www.linuxjournal.com/article.php?sid=6349 获取。
- ↑ Moyle, K., “开源软件与澳大利亚学校教育”,2003 年 8 月;可从 www.educationau.edu.au/papers/open_source.pdf 获取。
- ↑ Raymond, E., “教堂与集市”,2000 年;可从 http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ 获取。
- ↑ Hart, D., “更快、更好、更便宜:开源实践可能有助于改进软件工程”,NSF 新闻稿,NSF PR 03-132,2003 年 12 月。