如何在 Github 上找到適合自己水平的開源項目進行學習?

比如,如果將一個程序的難度進行分級的話,分為 10 級,自己處於第 4 級,那麼怎麼找出第 5 級的項目進行學習?

PS:不針對特定語言,我就是想知道那種挖掘的方法。


前兩天看到,@庄表偉 先生的github上正在寫一篇如何利用開源項目學習的文章,題主可以去看看有沒有用。

http://github.com/zhuangbiaowei

大家不要問我,我也是隨便瞄了一眼。


我覺得是這樣的,你在自己的項目中要用到什麼開源項目,挑選到合適的就去學習它,包括從文檔、例子、單元測試、源碼等。然後fork,按需要進行修改、優化。更好的是和該項目有交流,例如submit issue、pull request等。

而並不是漫無目的地去找一些項目來學習。


最靠譜的方法:靠口碑


首先,你需要定義一個可輸出量化結果的演算法,能夠在給定的框架之內,對Github上的(或大部分的)開源項目進行難度評定。

其次,你需要對你自己的程序水平進行評估。假定你已經完成了上述的演算法,那這一步並不難,收集並分析你自己的項目數據即可。

從我目前知道的數據挖掘和分析技術來說,我認為第一步是非常困難的。我暫時想到的替換方案是,可以考慮做一個爬蟲,摘取Github項目的摘要,活躍度,代碼規模,然後進行人工分析。這樣不能滿足準確評定困難等級的要求,但應該比較容易找出自己感興趣的項目,大致也能看出開源社區里的熱點和趨勢。

如果你會繼續進行相關的研究,如有可能的話,麻煩分享給我一下,我很有興趣。


那你先要問自己想做什麼。

你想做的東西肯定是你能力水平範圍上下的吧,比如你想做個貪吃蛇,再複雜的代碼也複雜不到哪裡去吧。找到之後試著修改添加功能,那程序大體結構得看懂吧,這樣再去學習代碼就容易多了。


推薦閱讀:

不會用Github是怎麼樣的體驗?
非程序員使用 GitHub 會有什麼障礙么?可以用來幹什麼?
Git將分支合併到master,有沒有辦法讓master不要產生分支中那些冗餘的commits?
GitHub的個人資料中,為什麼不提供性別選項?
GitHub 上有什麼好的或者有趣的 Shell 項目?

TAG:開源項目 | GitHub |