那些開源庫你是怎麼知道的?

最近看到很多人在用一種點雲庫PCL,就了解了一下,看到這個庫本身是基於眾多其他開源庫開發的,如boost, eigen, flann, Qhull, VTK, google test......,突然有個疑問,這些庫他們是怎麼知道的,又怎麼選擇的要用這幾個庫呢?然後 覺得自己很渺小....... 平時看到朋友最多也就知道那幾個耳熟能詳的boost, Opencv, TBB,並如救命稻草一樣,深入學習使用,今天看了這麼多庫,突然覺得很迷茫。。。


拿英文google一下你要解決的問題而已。沒什麼複雜的。。。


1. 看新聞。比如 Hacker News 之類的。有好的開源項目一般會有提到。

2. 訂閱相關領域的郵件/周刊。比如我比較關注 Python ,我就訂了 Pycoder"s Weekly, Python Weekly,每期都會介紹一些好的開源項目。中文的《碼農周刊》不錯

3. 關注相關領域的郵件列表/社區。一般來說好的項目都會有人討論,作者也會第一時間到這些地方宣傳自己的庫。比如 reddit 之類的。

4. 關注代碼託管網站(github, codeBucket)的趨勢。比如 Github 上就有 explore 可以看到最近最熱的項目。

5. 社交網路(twitter, facebook, 微博, Google+),關注一些大號。時不時會有些消息。

6. 關注相關領域每年的會議。比如PyCon啦,PyData,DroidCon之類的。一般來說每年這些社區都會開會,網上能找到視頻。時不時的會介紹一些最新的牛掰項目。

7. 和朋友們交流。

8. 自行搜索。

9. 大牛的博客/個人網站。一般不定期會有推薦。


這都不是突然間都知道的,而是根據需求。當你需要一個功能的時候,要麼自己寫,要麼搜搜看別人有沒有寫過。不過不是當時就要做決定。你可以先寫,之後在用別的替換,或者先用別人的庫,不滿足需求的話用自己的換掉。這都沒問題。

至於為什麼要選那幾個庫,也是根據需求來。比如boost裡面就有test,不一定要google test。所以這裡得根據需要來測試兩個庫,從中挑一個。

既然他們不是一天之內決定的,你也大可不必一天之內擔憂。


最通用的方法是搜索

每次當你要開發一個什麼東西之前,都去網上搜一下,看看有沒有開源庫可以直接用。比如你要做點雲重建,那麼搜索的時候一定是能發現PCL的;比如你要做非線性優化,你一定會在搜索結果中發現wiki上的那個非線性優化開源庫列表;比如你要做機器學習,你一定會搜索到mloss,等等等。

不要重複發明輪子,這樣才是最高效的工作方式。當然,做作業除外,同時還要注意一下各種協議。

其實,沒有必要關注什麼大牛博客和論壇,善用搜索就足夠了。

哦對了,我說的搜索是google,不保證baidu可以搜得到。


說說我自己的幾個渠道吧

1、郵件列表/論壇:看別人的討論中就會看到很多沒聽說過的東西,然後略微百科一下,記住就好了

2、開源中國 - 找到您想要的開源項目,分享和交流,這裡的新聞資訊裡面專門有關於開源項目版本升級的,每次提到的各種開源工具,都會大致看一下,順便看一下評論裡面別人的評價,和提到的別的東西

3、博客:廣泛的閱讀了很多領域的大牛博客

其實總結起來就是擴展知識面,多看罷了。


口碑是傳播的最好方式,好口碑=好用!!


github啊,github上有個專門的系列倉庫叫 awesome


1. 看書

2. 大牛介紹

3. 知乎

4. github

5. 開源中國

...


題主稍微多個心就可以了,像你說的opencv庫,其實你看下文檔,或者編譯選項就知道了,光並行優化就有好多種tbb,cuda等。記得裡面有個選項是用特別好玩的小並行庫,直接搜是搜不到的。

而且像題主pcl中提到的eigen,flann.opencv也是有的。


推薦閱讀:

請問有哪些適合網路編程初學者的C語言方面的網路編程開源項目,希望學習後能參與到該項目中?
Android平台有哪些開源的社交APP可供研究?
那麼多人在github上傳代碼,不會塞滿嗎?
有哪些適合學生參與的 C++,網路編程方面的開源項目?

TAG:開源軟體 | 軟體工程 | 開源項目 | 計算機視覺 | 計算機圖形學 |