首先,歡迎來到程式設計師的世界。在這個世界上,不是有很多人想創造軟體並解決問題。你是一名hacker,屬於那些願意做一些有挑戰性的事情的人。
「當你不創造東西時,你只會根據自己的感覺而不是能力去看待問題。」 – whytheluckystiff
對於下面的文字你不必完全接受,所有這些來自乙個其貌不揚的程式設計師。我喜歡把事情做到最好,而不是對原來的東西修修補補。
僅僅是因為愛好開始做一些創新,這是乙個很好的開始!如果你說「我要先學習一下再開始做」那麼你永遠不會真正開始。每個人都需要從某個地方開始,所以現在開啟你的編輯器開始寫**吧。
下面是一些很重要的建議,雖然有人並不認同,但我保證你看完我的分析以後會站在我這一邊。一開始,先不要管演算法和資料結構。大多數簡單的程式不需要用到演算法和資料結構,所以當你真正需要時再去學習。程式設計一段時間以後,你就會知道在哪些地方用到他們。這時知道演算法的名字並了解它們的功能,然後找一些相關的**去理解演算法並動手程式設計實踐。如果沒有現成的函式庫(其他程式設計師提供的可重用**),你用自己喜歡的程式語言來實現它。
寫給新手程式設計師的一封信
0. 選擇一門好的程式語言,一門你自認為可以用它快速地做出一些有用東西的語言。
不要選擇c語言作為你第一門程式語言。也許選擇c語言會給你一種過時的滿足感。雖然它比早期的組合語言提供了更好語法描述,但是今天c(或者c++)不是能夠快速編寫軟體的語言。毫不偏袒的說,我建議你學習一種動態語言。選擇一種你覺得語法(文件)讓你使用起來更舒服的程式設計。為此,你可能需要花費一些時間來在幾種不同的語言之間進行比較。這麼做目的不是為了讓你感覺更好或者讓程式設計更容易。更快地完成自己的作品並且能夠看到成果,才是激勵你程式設計的源動力。不要選擇一門需要某種重量級的ide(ide是一種能夠幫助你編寫並執行**的工具)才能輕鬆程式設計的語言。你所需要的僅僅是乙個文字編輯器。(注:原文並沒有標號,是我們加上的,請大家別忘記了哦,我們是從零開始數數的。:) )
1. 選擇乙個好的編輯器。
sublimetext 2 – 如果你剛開始程式設計,推薦使用sublimetext 2
emacs – 學習曲線陡峭,快捷鍵複雜。如果你想定製自己的使用習慣,需要學習emacs lisp.
vim – 不僅操作簡潔而且它預設包含在linux的發行版中,所以深受大家歡迎。我開始使用了2年emacs。由於emacs的快捷鍵操作過於複雜,我的雙手開始經常疼痛,這迫使我轉向了vim陣營。了解vim的快捷鍵是非常有必要的。當你在遠端的伺服器上編輯**時,你唯一不需要安裝的編輯器就是vim。
注意!emacs和vim可能已經成為成為古董了。但是,它們都具備一些現代編輯器多不具備的功能。
2. 選擇乙個你可以從中學到東西的作業系統
windows不會教會你任何東西。使用windows你唯一學會的就是開啟乙個exe(可執行)檔案來安裝軟體和使用它。可能剛開始的時候你會覺得很酷,但是長遠來看,如果你立志成為乙個web開發人員,可能還是要具備基本的linux知識,尤其是當你要發布程式的時候。linux也允許你根據自己的要求來定製程式。macs也很酷,但是我認為你現在經濟上還負擔不起。
3. 不要通過複製貼上來做備份
乙個新手程式設計師通常會把檔案複製貼上到乙個臨時目錄下面來進行備份。這也許也是他們唯一知道的方法。不要那麼做!你需要使用版本控制軟體。我強烈推薦使用git,它是個目前很流行的版本控制工具,而且使用起來非常簡單。對乙個git新手,有乙個良好的社群和很多參考資源來學習。(除了git之外,還有mercurial, darcs, fossil等等。但是我還是建議從git開始,我有很多的理由來支援git,這裡就不多費口舌了。)
4. 知道去**尋求幫助
參加乙個和你相關的(你使用程式設計工具相關的)程式設計師社群。比如stackoverflow就是程式設計師的facebook。那裡沒有訊息狀態和回覆,取而代之的是問題和答案。除此之外還要學會使用irc。irc是一種老式的聊天室,現在還在被大多數開發人員用來分享技術資訊和幫助解決問題。
5. 培養你的禮儀
知道什麼時候問問題。你遇到的大多數問題都是別人碰到過並且在internet上能夠找到解答的。在irc或者任何論壇裡發問之前,先搜尋一下google(或者blekko)來看看是不是有現成的答案。在irc上問問題需要有耐心。永遠記住,人們只是處於好心來免費幫助你。有時你發問以後需要幾個小時才能有回覆。所以,耐心等待。除此之外,記得問問題的時候要禮貌。世界很小,你怎麼對待別人,別人就會怎麼對待你。
6. 結交朋友,技術書籍只能教你解決常見的問題(他們說:書是死的)
當你在搗鼓一些程式或者從程式的作者那裡學習,你能學到一些書本上沒有的東西。當你散步的時候,請和遇到的朋友打招呼。你肯定不是唯一的程式設計師。和其他的程式設計師一起交朋友一起工作。你會注意到,當一群技術愛好者在一起的時候,不論話題是從什麼地方開始,最後總是以技術話題收尾。這是必然的現象。所以你可以盡情參與。在你的**年齡努力程式設計,我能告訴你的是,我在開始6年前尋找朋友並開始討論程式設計,從那時起才學到那些書本和文章不會我的東西。所以我總是說,我的程式設計經驗有6年,因為只有那個時候開始,我才開始與人交流並開始感覺真正地開始學習程式設計。
7. 參加開源專案
最後,若干年之後如果本文的內容曾經對你有一點點的幫助,作為回報請寫一封類似的信給希望開始程式設計並不知如何入手的朋友,有可能的話請糾正本文中過時的內容。
智者說過,掌握某個東西需要10年或10000個小時,也就是漢語中的「十年磨一劍」,所以不用著急。
英文原文:an open letter to those who want to start programming
寫給新手程式設計師的一封信
自 首先,歡迎來到程式設計師的世界。在這個世界上,不是有很多人想創造軟體並解決問題。你是一名hacker,屬於那些願意做一些有挑戰性的事情的人。當你不創造東西時,你只會根據自己的感覺而不是能力去看待問題。whytheluckystiff 對於下面的文字你不必完全接受,所有這些來自乙個其貌不揚的程式設...
寫給新手的一封信
華清遠見嵌入式學院 上海分中心講師。一 從基礎開始 常常有些朋友在linux論壇問一些問題,不過,其中大多數的問題都是很基礎 的。例如 為什麼我使用乙個命令的時候,系統告訴我找不到該目錄,我要如何限制使用者的許可權等問題,這些問題其實都不是很難的,只要了解了linux 的基礎之後,應該就可以很輕易的...
寫給中國程式設計師的一封信
有關單元測試 單元測試 模組測試 是開發者編寫的一小段 用於檢驗被測 的乙個很小的 很明確的功能是否正確。通常而言,乙個單元測試是用於判斷某個特定條件 或者場景 下某個特定函式的行為。單元測試是由程式設計師自己來完成,最終受益的也是程式設計師自己。可以這麼說,程式設計師有責任編寫功能 同時也就有責任...