2010-03-12 60 views
8

我教編程我的侄子,我希望他們通過參與開源項目,以提高他們的技能。現在我的問題是,你知道任何適合新手程序員的開源項目嗎?我的意思是,該項目沒有龐大的代碼庫,項目非常有趣,項目用C語言編寫,因爲我選擇C語言作爲他們的開始語言,但是您可以建議使用其他語言編寫的其他項目。開源貢獻的新手程序員

我在這裏的目標是通過閱讀其他的源代碼,以提高他們的邏輯,熟悉到可用的開發工具,像bug跟蹤系統,版本控制系統等,並打開他們在開源社區的興趣。

謝謝。 =)

+4

*該項目非常有趣*:這當然取決於您自己的意見。這就是爲什麼我建議你看看http://sourceforge.net/看看你喜歡什麼;-) – ChristopheD 2010-03-12 00:13:46

+0

感謝sourceforge有很多項目。 =) – domlao 2010-03-12 03:08:07

回答

3
+2

我會關閉作爲dup,但所有問題,正是解決這個問題是「頁未找到」或關閉... – 2010-03-12 00:49:56

+0

請刪除您的答案。此鏈接不再有效。 – NikosKeyz 2016-05-29 17:36:28

2

這是很難不知道你的學生的水平和技能來回答。如果沒有這些背景信息,我甚至無法分辨是否可以讓他們放鬆任何現有的項目。

在我看來,之前有人願意對任何不平凡的開源的努力,他們應該有數據結構的一個堅實的理解和抽象數據類型和信息隱藏的概念。理想情況下,他們會自己實施一些基本的ADT。

根據我的經驗,這通常是缺乏的,特別是當用於指導初學者的語言是C時,因爲C沒有內置的ADT,也沒有標準的ADT庫,開發人員一般都希望能夠寫他們的擁有或選擇第三方庫,並在必要時根據需要進行定製。

我見過不少用C編寫的開源項目,其中唯一使用的數據結構是固定大小的數組和鏈表,其中每種算法都是最天真的可能,其中API的概念是公開結構和讓大家修改它們。

一個貢獻者誰是熟悉的ADT將很快因恐懼而逃跑,從這樣的項目了。不熟悉ADT的貢獻者只會在那裏學習不良習慣。

如果您的目標只是爲了讓您的學生學習使用版本控制和錯誤跟蹤系統,那麼給他們分配練習並讓他們在集成版本的其中一個站點上建立一個存儲庫也許是一個更好的主意控制,在線源代碼瀏覽和錯誤跟蹤,例如Github,Bitbucket,Google Code等。

然後,您可以檢查他們爲該作業所做的工作,並且如果發現任何錯誤,您可以使用錯誤跟蹤器提交錯誤那麼就得相應處理。然後,您可以再次提交功能要求使用錯誤追蹤等

而且擴大分配,像Github上和到位桶網站有一個克隆此版本庫的功能。這也很適合教學協作。根據你的學生的技能,你可以選擇一個現有的資源庫,供他們克隆,然後根據你的任務進行擴展,或者你可以讓他們搜索一個資源庫(可能符合某些標準)併爲自己選擇一個,然後再擴展遵循你的任務。

我個人認爲還有一件事應該是爲任何不平凡的開源項目做出貢獻的先決條件:通過契約理解設計,如何記錄函數契約,思考函數契約,開發瞭如果不先記錄功能合同,就不要編寫任何代碼。不幸的是,很少有開源項目使用合同設計。再次,熟悉這種做法的貢獻者很快就會從這樣一個項目中驚慌失措,而一個不願意只會挑起壞習慣的人。

但是,您可以通過告訴學生克隆來自Github或Bitbucket的現有存儲庫,然後爲其分配任務以填寫缺少的功能合同文檔來將其變爲練習。不用說,對於這樣的練習,你首先必須教他們合同的設計和如何編寫功能合同。

一旦你的學生獲得了我上面概述的技能,我確信「我們可以爲哪些開源項目做出貢獻?」的問題。將變得微不足道,因爲在那個階段你的學生將能夠爲自己找到並選擇一個合適的項目。同時,如果你覺得你的學生仍然需要用C編寫的ADT和如何編寫函數契約的一些示例代碼,並且你沒有任何這樣的例子方便,你可能想看一看在Bitbucket的存儲庫中。它在C中具有各種常見的ADT,並且所有源包含功能合同。隨意複製任何回購的在那裏,並用它們作爲演習基地:

我相信,如果你看看周圍有很多合適的材料的其他作者,太。

1

我推薦GitHub,因爲他們可以開始,而不需要聯繫人來獲得提交訪問存儲庫以及錯誤提交不會產生問題的地方,因爲它只是一個「本地」提交。

+0

PS:我正在尋找我的RPC庫項目的貢獻者(https://github.com/green-coder/small-rpc)。 – Vincent 2011-05-27 12:10:02

+0

vincent我想爲您的項目做出貢獻。我經歷了其中的一些。這裏是我的電子郵件:[email protected] – faysal 2013-07-22 20:22:24