其實寫程式是一件很簡單的事;如果你可以與人類溝通,那麼你就可以寫程式。程式─是人類與電腦溝通的語言,你都可以跟那麼複雜的人類進行溝通了,笨笨的電腦還不行嗎?(謎之音,真有這麼簡單嗎?)
如果今天你是一個完全沒有程式經驗的人,忽然不知道中了什麼邪,要開始寫程式,那麼我會建議你依循著以下的步驟:
一、首先,我建議你先思考一下你為什麼要寫程式?對學習來說,動機是一件很重要的事。一般來說,可能會有以下幾種原因:
1. 因為自己是本科系出身?
如果是這個原因,那我會建議你再仔細想想要不要進這一行。寫程式,尤其在台灣,是相對於不發達的產業。你會花很多的心力,但是幾乎可以肯定你不會有那麼多的報酬。相較於其他花相同心力的產業,如果不談自我成就、滿足等方面,至少在現金收入方面,其他的產業現金收入都會比軟體業高很多。
2. 那麼恰巧找到一個工作,然後那麼剛好老闆要你去寫程式?
如果是這個原因,那通常老闆也應該告訴你如何開始寫程式。這就好比一間公司中沒有經驗的新人,老闆至少應該告訴你對工作如何上手。
3. 是因為工作需要?
你可能在工作上有什麼問題需要去解決,而忽然想到用程式來解決這個問題。其實一個問題的解決方式,一定不只有一種。今天你如果選擇了使用寫程式來解決,那根本的原因可能是下一個。
4. 偶然不小心看到一段程式碼,就這樣一見鐘情的愛上了程式?
以命相學來說,你可能有這方面這方面的命─因為興趣而對開始寫程式。其實這是我建議的開始寫程式的動機。寫程式,是需要熱情。如果你今天沒有熱情而來寫程式,不是沒有辦法,只是會有點痛苦。我很希望你是因為熱情而加入寫程式的行列。
二、如果你今天完全沒有程式經驗,那麼首先你要做的是「選擇你所要學習的程式語言」。
原則上所有的程式其實都大同
1. 市佔率
Tiobe 是一個調查程式語言市佔率的一個地方。這邊可以看到目前全球所熱門的語言有那些,還有他的趨勢。
(圖片引用自Tiobe)
選擇程式語言,當然不能選那些看起來趨勢就是一直往下的語言。當然有另外一種考量就是如果你學會這門冷門的程式語言,別人不會,只有你會,你的身價就會翻兩翻,所以選擇了這個冷門的程式語言。但是如果你完全沒有程式經驗,我不建議你這麼做。這些冷門的程式語言之所以會變得冷門,或許仍然有需求,但一定有他的問題所在。這些問題可能是:程式語言本身效率、學習曲線過平,維運廠商倒掉,blabla...。
相對於其他考慮要素,市佔率本身不見是最重要,重要的是隱含在市佔率背後的意義。如果先透過市佔率來進行篩選你所要選擇的程式語言,那麼應該不太會錯。通常來說,市佔率高的程式語言,意味著資源比較豐富,也必較容易學習。這些資源包含了:
- 官方說明文件
- 書籍
- 討論區數量
- Google 搜尋結果數量
- 你的週圍是否有可以一同討論或是指導你的人。
- Blabla
2. 學習容易度
佔有率可以看出各個程式語言的熱門程度,但是看不太出來他的學習容易度。學習困難的程式語言,通常佔有率不會太高,但是佔有率不太高的程式語言,不見得不好學習。導致程式語言學習佔有率不高的原因其實還有很多,例如支援廠商(是不是沒有錢?)、用途(專門用在特殊行業上)等等。動態語言(不知道什麼是動態語言沒關係),如Python、Ruby、JavaScript、Visual Basic 通常是最容易上手。但是如果你是完全不會程式,我不建議你從這些動態語言開始學習。我會建議你先從Java或C++這類靜態語言中開始中挑一個開始學習,因為靜態語言的架構通常都比較嚴謹。(謎之音:Java,一定要挑Java,因為我只會Java)。如果你已經會Java或C++,那我建議你可以至少學習一種動態語言。C語言我之所以沒有推薦,一來是因為我不是很熟,二來,就我所知道的部份,他的物件導向機制並沒有那麼完整。不過這樣的評論,其實是有很大的爭論空間。再來,他學習的難度要比Java高了一些。
3. 程式用途
你打算主要使用這個程式語言來做什麼? 每種程式語言都有他適用的地方,例如PHP適合用來寫網頁、PL/SQL適合用來處理資料庫。當然不是說PHP只能拿來做網頁、PL/SQL只能用來處理資料庫,他們本身還是可以處理一些其他的任務;只是沒有那麼方便。如果你對這個問題沒有個答案,那我建議你先學習Java或C++這類用途比較廣的程式語言。在各式各樣的任務中,Java或C++都可以完美的解決,都有完整的解決方案。不過以我的經驗來說,在現階可能都還不太清楚今天學了這門語言打算做什麼。在這樣的情況下,其實學Java或C++其實差別不太大。(謎之音:Java,一定要挑Java,因為我只會Java)。
也許你會覺得這樣就決定,會不會太草率;我不得不承認是有一些,但除非你還有其他更多可以考慮或是比較的因素,否則在這樣的情況下,這跟公牛隊跟火箭隊,你該進那一隊是一樣的狀況。
在你決定好你所打算學習的程式語言後,就可以開始進行下一步驟了。
沒有留言 :
張貼留言