如何科學使用Stack Overflow

2021-08-20 01:55:36 字數 2515 閱讀 8743

作為一名程式設計師,如果沒有聽過 stackoverflow,那麼你最好去面壁思過一下。程式設計師最需要閱讀的一本程式設計書籍(其實程式設計書留下這本就夠了!):

那些還沒有讀過這本書的程式設計師,是時候買一本了。如果還在猶豫,那麼先看下這篇文章,看看為什麼離不開 stackoverflow。

當你丟擲乙個技術問題時,最終是否能得到有用的回答,往往取決於你所提問和追問的方式。 —— eric s. raymond
有時候,清晰描述乙個問題,特別是技術問題沒有想象的那麼簡單。提問從來就是一門學問,可惜很多人沒有意識到這一點,或者沒有給予足夠的重視。或者,有的提問者根本不是抱著提問的態度來請求大家的幫助。所以我們會發現各種讓人無法解答或者無心解答的問題:

去 segmentfault 的未回答題目中隨便就能找到一堆這樣的問題,所以很多人顯然並沒有提問的智慧型或者沒有很好的態度。raymond 和 rick moen 寫了乙份經典的文章 how to ask questions the smart way 專門來描述如何提問,這篇文章被翻譯成各國文字,留傳很廣,可以在這裡找到中文版。stackoverflow 和 segment****t 也給出了關於提問的建議:

在 stackoverflow 可以看到太多經典的問題,我們可以從這些問題中學習如何去提問,如何和答題者溝通。當你看習慣了stackoverflow 上面的問題,提問時就會不自覺去模仿,從而避免問出無腦問題。下面是提問時最需要注意的幾個問題:

很多時候我們希望能夠找到乙個解決辦法,但是在 stackoverflow 上,經常會有意外的收穫。你可能會看到對乙個問題不同的解決方案,甚至包括對這些解決方案的比較。

假設現在你想知道 python 中如何呼叫外部命令,比如 ls -l 來列印某個目錄下面的文章。google一下python call system command,第一條就是stackoverflow 上面的乙個相關問題:calling an external command in python. (google技術問題,基本都會顯示 stackoverflow 相關問題)。

然後在這個問題下面,有人總結了呼叫外部命令的幾種方法:

並且還對每個方法做了介紹,你可以選擇適合自己應用場景的方法。再比如這個問題 how to check whether a file exists using python?,介紹了 python 中檢查檔案是否存在的不同方法。

有許多強有力的工具可以幫我們更好地研究問題,你可能知道gdb除錯工具,可能知道python的timeit時間監控模組,但是你不知道那些自己不知道的工具。很多時候,當第一次知道某個工具時,我們心中會產生相見恨晚的感覺。然而,心儀的趁手工具總是那麼可遇不可求。

下面列出我發現的一些不錯的工具:

下面為 regex 101 的乙個簡單示例:

很多時候,遇到乙個問題,我們根本無從下手,不知道朝哪個方向思考。但是通過 stackoverflow,我們可以輕易知道具體的解決方案,有時候甚至還能知道別人面對這個問題時候是怎麼思考的。

假設你想利用裝飾器來完成乙個任務,即在下面say函式返回的字串前後加上,你想想這樣定義 say。

@makebold

@makeitalic

def say():

return "hello"

每次呼叫 say 返回hello。但是要如何實現 makebold 和 makeitalic 呢,這是乙個問題。在 stackoverflow 上,有大牛會直接告訴你答案,並扔給你乙個裝飾器的文件鏈結。但是還有大牛會把自己的思考過程,把自己對裝飾器的理解詳細地告訴你,讓你深入去理解裝飾器機制。

然後開始解釋什麼是裝飾器:其實就是封裝器,可以讓我們在不修改原函式的基礎上,在執行原函式的前後執行別的**。接下來手工實現了乙個簡單的裝飾器原型,緊接著引入 python 中的裝飾器語法。最後還列出了一些裝飾器的高階用法,包括給裝飾器傳遞引數等。讀完整個答案,一定能對裝飾器有較深的理解,並且知道理解裝飾器的思考過程。這樣,沿著這條思考的路徑,你自己就可以推導出裝飾器的使用方法。

沒有問題要提問時也可以時常逛一逛 stackoverflow,瀏覽一些投票比較多的問題,看看別人的回答。在這個龐大的知識庫中,你很可能會發現自己的一些認知盲區,發現一些自己從未關注過的內容。

我就發現了一些比較有意思的問題,比如:

我整理了乙份 python 的高質量問題清單,放在這裡以供時常翻閱。

那麼怎麼才能找到 stackoverflow 呢,兩個建議:

只要你不是第乙個遇見某個技術問題的人,你基本就會在 stackoverflow 找到相同或者類似的問題。早日遇見,早日喜歡上 stackoverflow,你會發現生活是如此愜意。

**侵刪.

如何科學使用Stack Overflow

作為一名程式設計師,如果沒有聽過 stackoverflow,那麼你最好去面壁思過一下。程式設計師最需要閱讀的一本程式設計書籍 其實程式設計書留下這本就夠了!那些還沒有讀過這本書的程式設計師,是時候買一本了。如果還在猶豫,那麼先看下這篇文章,看看為什麼離不開 stackoverflow。當你丟擲乙個...

資料科學 如何使用CuPy使Numpy更快

numpy一直是python社群的禮物。它允許資料科學家,機器學習從業者和統計學家以簡單有效的方式處理矩陣格式的大量資料。就速度而言,numpy本身就是python的重要一步。每當你發現你的python 執行緩慢時,特別是如果你看到很多for迴圈,那麼將資料處理轉移到numpy並讓它的向量化以最快的...

jquery徽章 科學家如何使用數字徽章

jquery徽章 開源世界率先使用數字徽章來獎勵技能,成就並表示透明性和開放性。科學期刊應採用開源方法,並使用數字徽章鼓勵科學出版物的透明度和開放性。女童子軍和男童子軍都知道功績徽章。偵察員通過掌握新技能而獲得功績徽章。mozilla open badges是為技能和成就授予數字功績徽章的先驅。徽章...