Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Programming languages 对新手程序员的开源贡献_Programming Languages - Fatal编程技术网

Programming languages 对新手程序员的开源贡献

Programming languages 对新手程序员的开源贡献,programming-languages,Programming Languages,我正在教我的侄子们编程,我希望他们通过参与开源项目来提高自己的技能。现在我的问题是,你知道有适合新手程序员的开源项目吗。我的意思是,这个项目没有一个大的代码库,这个项目非常有趣,这个项目是用C编写的,因为我选择C语言作为他们的起始语言,但是你可以建议用其他语言制作其他项目 我在这里的目标是通过阅读其他源代码来改进他们的逻辑,熟悉可用的开发工具,如bug跟踪器、版本控制系统等,并打开他们对开源社区的兴趣 谢谢 以前有人问过这个问题吗 如果不了解学生的水平和技能,很难回答这个问题。如果没有这些背景信

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

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


谢谢

以前有人问过这个问题吗


如果不了解学生的水平和技能,很难回答这个问题。如果没有这些背景信息,我甚至不知道让他们在任何现有项目上自由发挥是否明智

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

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

我见过不少用C编写的开源项目,其中使用的数据结构只有固定大小的数组和链表,其中每种算法都是最简单的,API的概念是公开结构并让每个人修改它们

熟悉ADT的投稿人很快就会惊恐地逃离这样一个项目。不熟悉ADT的投稿人只会在那里学到坏习惯

如果你的目标仅仅是让你的学生学习版本控制和错误跟踪系统的使用,那么最好给他们安排一个练习,让他们在其中一个集成版本控制、在线源代码浏览和错误跟踪的网站上建立一个存储库,例如Github、Bitbucket、Google code等

然后,您可以检查他们为任务所做的工作,如果您发现任何错误,您可以使用bugtracker来提交一个bug,然后他们必须相应地处理该bug。然后,您可以通过使用bugtracker等再次提交功能请求来扩展分配

此外,像Github和Bitbucket这样的站点有一个克隆此存储库功能。这也有利于教学协作。根据学生的技能,您可以为他们选择一个现有的存储库进行克隆,然后根据您的作业进行扩展,或者您可以要求他们搜索一个存储库(可能符合某些条件)并为自己选择一个存储库,然后根据您的作业再次扩展该存储库

我个人认为,还有一件事应该是对任何非平凡的开源项目做出贡献的先决条件:理解契约式设计,如何记录函数契约,在函数契约中思考,开发了一门学科,在不首先记录函数契约的情况下决不编写任何代码。不幸的是,很少有开源项目使用契约式设计。同样,熟悉这种做法的投稿人很快就会惊恐地逃离这样的项目,而不熟悉的投稿人只会染上坏习惯

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

一旦您的学生掌握了我上面概述的技能,我相信“我们可以为哪些开源项目做出贡献?”这个问题将变得很难回答,因为在那个阶段,您的学生将能够找到并选择适合自己的项目

同时,如果您觉得您的学生仍然需要一些用C编写的ADT和如何编写函数契约的示例代码,而您手头没有任何此类示例,那么您可能想看看我在Bitbucket上的存储库。它在C中有各种常见的ADT,所有源代码都包含函数契约。请随意克隆其中的任何回购协议,并将其用作练习的基础:


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

我总是发现freebsd项目对于教人们如何用C编程很有帮助。他们会得到提交人的代码审查,他们会解释如何做得更好,他们有很棒的文档。你可以自愿修复bug:他们有一大堆事情要做:有些简单,有些难

我推荐GitHub,因为他们可以开始,而不必联系其他人来获得对存储库的提交访问权,错误的提交不会产生问题,因为这只是一个“本地”问题提交。

该项目非常有趣:当然这取决于你自己的意见。这就是为什么我建议你看一看,看看你喜欢什么;-)感谢sourceforge获得了大量项目。=)我将以dup结束,但所有完全解决同一问题的问题要么是“页面未找到”,要么是“已关闭”…请删除您的答案。此链接不再工作。PS:我正在寻找我的RPC库项目()的贡献者。vincent我希望在您的项目中贡献。我已经看过其中一些了。这是我的电子邮件:faysalhossain2007@gmail.com