Google Prettify

2013-06-05

我要如何開始寫程式(1)


其實寫程式是一件很簡單的事;如果你可以與人類溝通,那麼你就可以寫程式。程式─是人類與電腦溝通的語言,你都可以跟那麼複雜的人類進行溝通了,笨笨的電腦還不行嗎?(謎之音,真有這麼簡單嗎?)

如果今天你是一個完全沒有程式經驗的人,忽然不知道中了什麼邪,要開始寫程式,那麼我會建議你依循著以下的步驟:

一、首先,我建議你先思考一下你為什麼要寫程式?對學習來說,動機是一件很重要的事。一般來說,可能會有以下幾種原因:

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)。

也許你會覺得這樣就決定,會不會太草率;我不得不承認是有一些,但除非你還有其他更多可以考慮或是比較的因素,否則在這樣的情況下,這跟公牛隊跟火箭隊,你該進那一隊是一樣的狀況。

在你決定好你所打算學習的程式語言後,就可以開始進行下一步驟了。

沒有留言 :

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。