close

因生活所需,近期會開始整理過往的學習心得與技法,

此篇文章針對基礎中的基礎,就算是外行人也可以開始的修煉,

希望各位讀者可提供意見或交流,謝謝。

 

學習程式語言(Programming Language)並不是一件困難的事情,

無論是何種語言其構成不外乎都是「單字」及「文法」,

而程式語言也是由單字與文法所構成,

但是他的對象是機器或電腦,所以在描述的邏輯上必須非常清楚,

初學者會碰到的機器或電腦都不具有智慧,

也就是說每一個聽命的對象都是非常「聽話」的夥伴,

他們(機器或電腦)都是一個命令、一個動作,而且不會自動的去處理錯誤、衝突等等。

因此機器執行的程式必須有一個完整的「流程」,

這個流程必須考慮完整、有系統的去面對每一個可能會碰到的狀況,

當然,我們大多無法在第一時間就如此縝密的去規劃每一個細節,

每個人的思維也多有盲點,只能在測試的過程中不斷的去修正及改進。

 

我還是必須強調,「流程」和「文法」是兩個完全不同層次的事情,

就像你會寫中文字,但你不一定有辦法寫文章、寫小說,

因為小說在下筆之前,就必須擁有完整的架構與想法,知道每一個角色的特色與出場時機,

甚至在正式動筆之前,還會先模擬許多小劇情,來確立整體的特色。

寫程式也不多讓,在開啟專案之前,就必須規劃好每一個流程、每一個可能遇到的問題與解決方法,

完整的流程規劃會減少開發時的迷思,也會降低發生錯誤的機會。

但現實是,許多人往往在初學的時候一股作氣的學習各種「文法」,而忽略了「流程」規劃,

就像你寫得一手好字,卻構不成文章一樣徒然無功。

 

為了有效的規劃並且操作,我們必須將心中所想的「命令」變成流程圖,

其中包含「分解邏輯」或者「分解步驟」,

而這些「分解」可大可小,比方說「洗衣服」可以分解成「丟衣服進洗衣機」與「啟動洗衣機」,

也可以分解成「去拿髒衣服、將衣服方進洗衣機、倒入洗衣精、設定洗衣機、按下開始」,

實際來說,我們的動作與目的都是一樣的,只是在敘述上有的簡潔,有的詳細,

可以試想,如果今天是一個從來沒有用過電器的人看到這個流程,看到哪一個會比較清楚呢?

詳細的規劃會比較耗時間,卻比較好懂,簡略的規劃比較快速,但可能會造成誤解。

當然,寫程式是相當自由的,要怎樣去規畫這些邏輯是個人自由,

但詳細的邏輯規劃比較容易分享與他人或自身的重新閱讀,個人比較推薦。

(迷之音 : 身為一個程式強迫症患者,一點省略都是不被允許的)

 

上述的基礎流程都是單一方向,但我們的流程必須加入有兩個方向以上的「邏輯」,

比方說「是否洗好了?」、「這些衣服是否可以脫水?」,

這時候就會有「」與「」多個方向的流程出現了。

我們把脫水的這個步驟也放進流程圖中。

當然,可以再寫得更詳細些,要不要烘衣、水量、時間、預約等等,

但概念至此,剩下的就交給需要的人去發揮了。

 

有了一張流程圖後,我們就可以準備著手進行開發了。

但你可能會問說,難道我以後要寫大型專案的時候,也要寫這樣的流程圖嗎?

以個人來說,只要不是能一眼望穿的程式都必須寫流程。

如果是個人開發的時候,流程圖是用來記錄想法跟整理思緒,

如果是多人開發的時候,流程圖通常是責任界定、分類或者定義銜接參數(Connector)用的。

隨著經驗越來越多,入行越來越深,

流程圖甚至會被各個工程師內化在心中,

而紙筆上的紀錄就不會那麼嚴謹而詳細,多半只是記錄個大概而已。

但在程度尚淺的時候,應該要把流程圖規劃清楚,

才不會著墨於個語言的文法時,就忘了整體流程架構而盲目開發了。

(流程圖的各個形狀之定義及用法就不在此詳述,迷之音: 能用就好)

 

在還沒有碰到任何程式語言之前,我們必須修練好每一個問題、功能的「程序」能力,

邏輯與程序為程式之根本,個人認為這比熟練語法更為重要,

良好的邏輯帶你上天堂,不好的邏輯帶你逛地獄三圈還要繼續撐著玩躲貓貓

(沒辦法,誰叫這當初天殺的邏輯就是自己規劃的呢?)

所以,好好規劃,好好堅持。

加油!

arrow
arrow

    Vincent 發表在 痞客邦 留言(0) 人氣()