導(dǎo)讀:原文作者Akash發(fā)表的一篇《An open letter to those who want to start programming》,文中闡述給新手程序員的一些建議。不管你是程序員高手亦或者是新手,文中的見解都值得我們學(xué)習(xí)。譯文如下:
首先,歡迎來到程序員的世界。在這個世界上,不是有很多人想創(chuàng)造軟件并解決問題。你是一名hacker,屬于那些愿意做一些有挑戰(zhàn)性的事情的人。
“當(dāng)你不創(chuàng)造東西時,你只會根據(jù)自己的感覺而不是能力去看待問題。”–WhyTheLuckyStiff |
對于下面的文字你不必完全接受,所有這些來自一個其貌不揚的程序員。我喜歡把事情做到最好,而不是對原來的東西修修補補。
僅僅是因為愛好,開始做一些創(chuàng)新,這是一個很好的開始!如果你說“我要先學(xué)習(xí)一下再開始做”,那么你永遠不會真正開始。每個人都需要從某個地方開始,所以現(xiàn)在打開你的編輯器開始寫代碼吧。
下面是一些很重要的建議,雖然有人并不認同,但我保證你看完我的分析以后會站在我這一邊。一開始,先不要管算法和數(shù)據(jù)結(jié)構(gòu)。大多數(shù)簡單的程序不需要用到算法和數(shù)據(jù)結(jié)構(gòu),所以當(dāng)你真正需要時再去學(xué)習(xí)。編程一段時間以后,你就會知道在哪些地方用到他們。這時知道算法的名字并了解它們的功能,然后找一些相關(guān)的論文去理解算法并動手編程實踐。如果沒有現(xiàn)成的函數(shù)庫(其他程序員提供的可重用代碼),你用自己喜歡的編程語言來實現(xiàn)它。
0.選擇一門好的編程語言,一門你自認為可以用它快速地做出一些有用東西的語言。
不要選擇C語言作為你第一門編程語言。也許選擇C語言會給你一種過時的滿足感。雖然它比早期的匯編語言提供了更好語法描述,但是今天C(或者 C++)不是能夠快速編寫軟件的語言。毫不偏袒的說,我建議你學(xué)習(xí)一種動態(tài)語言。選擇一種你覺得語法(文檔)讓你使用起來更舒服的編程。為此,你可能需要花費一些時間來在幾種不同的語言之間進行比較。這么做目的不是為了讓你感覺更好或者讓編程更容易。更快地完成自己的作品并且能夠看到成果,才是激勵你編程的源動力。不要選擇一門需要某種重量級的IDE(IDE是一種能夠幫助你編寫并運行代碼的工具)才能輕松編程的語言。你所需要的僅僅是一個文本編輯器。(注:原文并沒有標號,是我們加上的,請大家別忘記了哦,我們是從零開始數(shù)數(shù)的。)
1.選擇一個好的編輯器。
編輯器對程序員而言,就是像是弓對弓箭手一樣重要。這里有一些推薦的編輯器:
SublimeText 2 – 如果你剛開始編程,推薦使用SublimeText 2
Emacs – 學(xué)習(xí)曲線陡峭,快捷鍵復(fù)雜。如果你想定制自己的使用習(xí)慣,需要學(xué)習(xí)Emacs Lisp.
Vim–不僅操作簡潔而且它默認包含在linux的發(fā)行版中,所以深受大家歡迎。我開始使用了2年Emacs。由于Emacs的快捷鍵操作過于復(fù)雜,我的雙手開始經(jīng)常疼痛,這迫使我轉(zhuǎn)向了Vim陣營。了解Vim的快捷鍵是非常有必要的。當(dāng)你在遠程的服務(wù)器上編輯代碼時,你唯一不需要安裝的編輯器就是Vim。
注意!Emacs和Vim可能已經(jīng)成為成為古董了。但是,它們都具備一些現(xiàn)代編輯器多不具備的功能。
2.選擇一個你可以從中學(xué)到東西的操作系統(tǒng)
Windows不會教會你任何東西。使用Windows你唯一學(xué)會的就是打開一個exe(可執(zhí)行)文件來安裝軟件和使用它??赡軇傞_始的時候你會覺得很酷,但是長遠來看,如果你立志成為一個web開發(fā)人員,可能還是要具備基本的Linux知識,尤其是當(dāng)你要發(fā)布程序的時候。Linux也允許你根據(jù)自己的要求來定制程序。Macs也很酷,但是我認為你現(xiàn)在經(jīng)濟上還負擔(dān)不起。
3.不要通過復(fù)制粘貼來做備份
一個新手程序員通常會把文件復(fù)制粘貼到一個臨時目錄下面來進行備份。這也許也是他們唯一知道的方法。不要那么做!你需要使用版本控制軟件。我強烈推薦使用Git,它是個目前很流行的版本控制工具,而且使用起來非常簡單。對一個Git新手,有一個良好的社區(qū)和很多參考資源來學(xué)習(xí)。(除了Git之外,還有mercurial, darcs, fossil等等。但是我還是建議從Git開始,我有很多的理由來支持G