因生活所需,近期會開始整理過往的學習心得與技法,
此篇文章針對基礎中的基礎,就算是外行人也可以開始的修煉,
希望各位讀者可提供意見或交流,謝謝。
學習程式語言(Programming Language)並不是一件困難的事情,
無論是何種語言其構成不外乎都是「單字」及「文法」,
而程式語言也是由單字與文法所構成,
但是他的對象是機器或電腦,所以在描述的邏輯上必須非常清楚,
初學者會碰到的機器或電腦都不具有智慧,
也就是說每一個聽命的對象都是非常「聽話」的夥伴,
他們(機器或電腦)都是一個命令、一個動作,而且不會自動的去處理錯誤、衝突等等。
因此機器執行的程式必須有一個完整的「流程」,
這個流程必須考慮完整、有系統的去面對每一個可能會碰到的狀況,
當然,我們大多無法在第一時間就如此縝密的去規劃每一個細節,
每個人的思維也多有盲點,只能在測試的過程中不斷的去修正及改進。
我還是必須強調,「流程」和「文法」是兩個完全不同層次的事情,
就像你會寫中文字,但你不一定有辦法寫文章、寫小說,
因為小說在下筆之前,就必須擁有完整的架構與想法,知道每一個角色的特色與出場時機,
甚至在正式動筆之前,還會先模擬許多小劇情,來確立整體的特色。
寫程式也不多讓,在開啟專案之前,就必須規劃好每一個流程、每一個可能遇到的問題與解決方法,
完整的流程規劃會減少開發時的迷思,也會降低發生錯誤的機會。
但現實是,許多人往往在初學的時候一股作氣的學習各種「文法」,而忽略了「流程」規劃,
就像你寫得一手好字,卻構不成文章一樣徒然無功。
為了有效的規劃並且操作,我們必須將心中所想的「命令」變成流程圖,
其中包含「分解邏輯」或者「分解步驟」,
而這些「分解」可大可小,比方說「洗衣服」可以分解成「丟衣服進洗衣機」與「啟動洗衣機」,
也可以分解成「去拿髒衣服、將衣服方進洗衣機、倒入洗衣精、設定洗衣機、按下開始」,
實際來說,我們的動作與目的都是一樣的,只是在敘述上有的簡潔,有的詳細,
可以試想,如果今天是一個從來沒有用過電器的人看到這個流程,看到哪一個會比較清楚呢?
詳細的規劃會比較耗時間,卻比較好懂,簡略的規劃比較快速,但可能會造成誤解。
當然,寫程式是相當自由的,要怎樣去規畫這些邏輯是個人自由,
但詳細的邏輯規劃比較容易分享與他人或自身的重新閱讀,個人比較推薦。
(迷之音 : 身為一個程式強迫症患者,一點省略都是不被允許的)
上述的基礎流程都是單一方向,但我們的流程必須加入有兩個方向以上的「邏輯」,
比方說「是否洗好了?」、「這些衣服是否可以脫水?」,
這時候就會有「是」與「否」多個方向的流程出現了。
我們把脫水的這個步驟也放進流程圖中。
當然,可以再寫得更詳細些,要不要烘衣、水量、時間、預約等等,
但概念至此,剩下的就交給需要的人去發揮了。
有了一張流程圖後,我們就可以準備著手進行開發了。
但你可能會問說,難道我以後要寫大型專案的時候,也要寫這樣的流程圖嗎?
以個人來說,只要不是能一眼望穿的程式都必須寫流程。
如果是個人開發的時候,流程圖是用來記錄想法跟整理思緒,
如果是多人開發的時候,流程圖通常是責任界定、分類或者定義銜接參數(Connector)用的。
隨著經驗越來越多,入行越來越深,
流程圖甚至會被各個工程師內化在心中,
而紙筆上的紀錄就不會那麼嚴謹而詳細,多半只是記錄個大概而已。
但在程度尚淺的時候,應該要把流程圖規劃清楚,
才不會著墨於個語言的文法時,就忘了整體流程架構而盲目開發了。
(流程圖的各個形狀之定義及用法就不在此詳述,迷之音: 能用就好)
在還沒有碰到任何程式語言之前,我們必須修練好每一個問題、功能的「程序」能力,
邏輯與程序為程式之根本,個人認為這比熟練語法更為重要,
良好的邏輯帶你上天堂,不好的邏輯帶你逛地獄三圈還要繼續撐著玩躲貓貓
(沒辦法,誰叫這當初天殺的邏輯就是自己規劃的呢?)
所以,好好規劃,好好堅持。
加油!
留言列表