新手程序员的开源贡献

时间:2010-03-12 00:08:37

标签: programming-languages

我正在为我的侄子教授编程,我希望他们通过为开源项目做贡献来提高他们的技能。现在我的问题是,你知道任何适合新手程序员的开源项目吗?我的意思是,项目没有大的代码库,项目非常有趣,项目是用C语言编写的,因为我选择C语言作为他们的起始语言,但你可以建议用其他语言编写的其他项目。

我的目标是通过阅读其他源代码来改进他们的逻辑,熟悉可用的开发工具,如错误跟踪器,版本控制系统等,并开放他们对开源社区的兴趣。

感谢。 =)

4 个答案:

答案 0 :(得分:3)

之前有人问过这个问题吗?

Open source project: beginners [closed]

答案 1 :(得分:2)

如果不了解学生的水平和技能,这很难回答。如果没有这些背景信息,我甚至无法判断在任何现有项目中是否可以放松它们。

在我看来,在有人准备为任何非平凡的开源工作做出贡献之前,他们应该对数据结构以及ADT和信息隐藏的概念有充分的了解。理想情况下,他们会自己实施一些基本的ADT。

根据我的经验,这通常是缺乏的,特别是当用于指导初学者的语言是C时,因为C没有内置的ADT,也没有标准的ADT库,开发人员通常希望能够自己编写或选择第三方图书馆,并在必要时根据自己的需要进行定制。

我见过很多用C编写的开源项目,其中唯一使用的数据结构是固定大小的数组和链表,其中每个算法都是最天真的,其中API的概念是暴露结构并让每个人都修改它们。

熟悉ADT的撰稿人很快就会惊慌失措地逃离这样一个项目。不熟悉ADT的贡献者只会在那里学习坏习惯。

如果您的目标仅仅是让学生学习使用版本控制和错误跟踪系统,那么为他们分配练习并让他们在其中一个集成版本控制的站点上设置存储库可能是更好的主意。 ,在线源代码浏览和错误跟踪,例如Github,Bitbucket,Google Code等。

然后,您可以检查他们为作业所做的工作,如果您发现任何错误,则使用错误跟踪器提交错误,然后他们必须相应地处理这些错误。然后,您可以使用bugtracker等再次归档功能请求来扩展分配。

此外,像Github和Bitbucket这样的网站都有克隆这个存储库功能。这也非常适合教授协作。根据学生的技能组合,您可以选择现有的存储库进行克隆,然后按照分配进行扩展,或者您可以要求他们搜索存储库(可能符合某些条件)并为自己选择一个,然后再将其扩展按照你的作业。

我个人认为还有一件事应该是为任何非平凡的开源项目做出贡献的先决条件:通过合同理解设计,如何记录功能合同,思考功能合同,开发学科在没有首先记录功能合同的情况下永远不要编码。不幸的是,开源项目太少使用合同设计。再一次,熟悉这种做法的贡献者很快就会惊慌失措地逃离这样一个项目,而一个不会这样做的人只会养成坏习惯。

但是,您可以通过告诉学生从Github或Bitbucket克隆现有存储库,然后为他们分配任务来填写缺少的函数合同文档,从而将其转化为练习。不用说,对于这样的练习,你首先必须教他们合同设计是什么以及如何编写功能合同。

一旦你的学生获得了我上面概述的技能,我就确定“我们可以为哪些开源项目做出贡献?”的问题。将会变得微不足道,因为在那个阶段你的学生将能够找到并为自己选择一个合适的项目。

与此同时,如果你觉得你的学生仍然需要一些用C编写的ADT的代码和如何编写函数契约的示例代码,并且你没有任何这样的例子,你可能想看看我在Bitbucket的存储库。它在C中有各种常见的ADT,所有来源都包含函数契约。随意克隆那里的任何回购并使用它们作为练习的基础:

我相信如果你环顾四周,其他作者也有很多合适的资料。

答案 2 :(得分:1)

我建议使用GitHub,因为他们可以启动而无需联系人来获取对存储库的提交访问权限,并且错误提交不会产生问题,因为它只是“本地”提交。

答案 3 :(得分:0)

我总是发现freebsd项目对于教人们如何用C语言进行编程很有帮助。他们将通过提交者进行代码审查,他们将解释如何变得更好并且他们拥有出色的文档,http://www.freebsd.org/doc/en/books/developers-handbook/book.html。您可以自愿修复错误:http://www.freebsd.org/cgi/query-pr-summary.cgi并且他们有大量要做的事情:http://www.freebsd.org/projects/ideas/ideas.html有些很简单,有些很难