Translate

2015年3月28日 星期六

從學校畢業後才開始學習程式(一):動機

從學校畢業後才開始學習程式():動機

最近程式寫一寫,遇到一點瓶頸,為了轉換心情,讓程式在某些地方有所突破,所以先發一篇和股票、程式都沒關係的文章,看看等下的程式會不會再突破。

阿緹以前主修工程類學科,完全和程式沒有關係。唯一能和程式擦上邊的,大概就只有「計算機概論」這門課了吧。但這門課當初上課的方式真的很「概論」,裡面是講計算機的歷史,他怎麼紀錄資料。課程結束之後,就再也和電腦沒有關係了。

開始工作後,工作上也不會需要碰到程式。如果在生產上需要某些報表,通常都已經會有固定制式的模板,就照著excel的方式填寫,一般來說也不會遇到什麼程式。

但如果你會寫一些簡單的工具,會讓你的職場效率提昇不少,運氣好的話,做出讓其他部門主管「亮眼」的工具,絕對可以讓別人對你印象深刻。

那,要從哪裡開始呢?

程式語言那麼多種,哪一種最好?如果什麼都不知道,在2015年的今天,就是先上google查啦!






當然,查了這麼多,你看完後,可能只會更模糊,反而不知道要學哪一種了。

那我是怎麼開始的呢?
我先去找「我想用程式做什麼」?

這個想要做什麼,目標可以廣泛的去想。如果在工作上,你希望你寫出來的程式,幫你做什麼?如果在日常生活上,你希望你的程式幫你做什麼?

那,我希望我生出來的程式,幫我做什麼呢?

一開始的目標,是股票的三的法人投資金額。當然每天上證交所的網站,然後把三大法人進出的金額複製起來,然後貼上excel內做統計,這也是一個方法。但如果每天都要這樣做一次,實在是太麻煩了。如果寫一個程式,每天固定時間,會自動連上證交所,然後把數字抓下來,自動幫我統計,那不是很方便嗎?

於是,我就以「每天抓取網頁資料」為目的,開始寫我想要的程式。

當然,這個目的並沒有那麼複雜,所以很多語言都可以完成。.但我選擇了PHP這個語言。雖然在網路上的討論區裡面,很多人都不喜歡「腳本型」語言,但對一個完全沒有程式經驗的人來說,腳本型的語言真的比較容易懂。

我所受過的工程訓練與工作環境,大量的使用「流程圖」(flow chart)來表達工作的流程。所以流程圖是我最熟析的工具,而在我的認知中,腳本型語言的程式架構,可以直接對應我腦中的流程圖。當我把每天抓取資料的流程畫出來,每個流程之間要寫上哪些東西,雖然我當下可能不知道,但一段一段的找出這個功能如何使用PHP來完成,就做出這個程式了。

對於一個新手來說,避免跌跌撞撞的過程是不可能的事。這邊就來說一下,我這些跌倒的過程吧。

一開始,我並不知道我想做的這個程式,已經有個固定的名字。這種程式,一般稱之為「網路爬蟲」(crawler)或「網路蜘蛛」(web spider),這名詞有用到網路的雙關概念。因為網路架構就是一個網站接著另一個網站,彼此之間會有連結的。而這種類型的程式,就像是沿著這些連結的線,一步一步的進入各個網站,找出是否有想要抓取的資料,抓完後,再延著這些連結,去下一個網站抓資料。所以用「蜘蛛」來稱之,而且這樣的動作,動詞為「parse」,如果你想要找「某種類型的資料,用X語言如何寫」,就在google中輸入parse這個單字,通常可以找到一些基本介紹。

而我,現在完成了什麼事情呢?




我還沒寫爬歷史功能的爬蟲,但開始爬的日期是2014.10.8。直到今天,他仍然在運作喔。

另外一題,現在最強大,最知名的爬蟲網站,就是Google。今天的股票是548元喔,雖然爬蟲程式並不是資工領域中最熱門的,但他衍生出來的生意,可是創造出了一個可敬的公司。

所以,回到這一篇的結論。

如果你畢業後,你想學程式,從哪裡下手比較好?

我的回答是:你必需先找出你的動機,問自己,為什麼你要做這個程式?你希望他幫你處理什麼事情?能處理這種事情的程式語言中,哪一些是適合的?這些適合的語言中,哪一些是比較有效率的?這一些有效率中的,哪一個是最適合你的?


當你把這些問題回答出來,那選擇就非常清楚了。

沒有留言:

張貼留言