第17講 學會程序化
2024-09-26 12:10:02
作者: 日本顧彼思商學院
要對計算機發出指令,就要通過程序算法,對想要得到的結果,設定每一步的操作步驟來實現。換句話說,如果具備程序化的技巧,就可能積極地調動計算機的力量。那麼,應該怎樣進行程序化呢?
我們以常見的自動售賣機為例,說明一下程序算法是什麼,以及如何擬定程序算法。
首先,按照我們平時使用自動售賣機的基本流程,嘗試設定大致的步驟。「付款、點擊按鈕、取得商品」,可以表示為下圖。
本書首發𝒃𝒂𝒏𝒙𝒊𝒂𝒃𝒂.𝒄𝒐𝒎,提供給你無錯章節,無亂序章節的閱讀體驗
以上是基本的流程,但這是使用者的操作步驟。自動售賣機的程序算法,需要以自動售賣機的角度來設定。下圖是從自動售賣機的角度設定的程序,(1)和(2)應該填入什麼呢?菱形框表示條件判斷。條件判斷的內容為「是」的,就沿著「是」的箭頭走,條件判斷的內容為「否」的,就沿著「否」的箭頭走。
(1)是開始之後最初的動作。如果沒有收款,自動售賣機不會開始運作,所以可以推測是「是否已收款」。
(2)是連接「亮燈」和「提供商品」的條件。提供商品的觸發條件是「是否已被點擊按鈕」。
這樣,就從自動售賣機的角度擬定出了程序算法。從人的操作步驟到自動售賣機的程序算法,可以發現人的行動對於自動售賣機來說成了條件。
以上已經擬出大致的流程,實際的程序算法會更為複雜一些。
接下來我們進一步細化。請思考一下,下圖的(3)可以填入什麼?
(3)是判斷「是否已收款」的下一步,所以是「已收到了款項」的狀態。另外,再下一步是「亮燈」,所以要考慮連接「付款」和「亮燈」的條件。「付款」和「亮燈」之間,有什麼是必須確認的呢?或者說,「付款之後沒有亮燈的情況」在什麼時候會發生呢?
判斷亮燈的條件是,「收款是否足額」。
我們總結一下目前已經進行的步驟。擬定程序算法大體有兩個要點。
1. 簡單地擬出核心算法
2. 進一步添加附帶條件等
1. 簡單地擬出核心算法
首先,把基本的流程歸納成操作步驟。把實際使用自動售賣機時的具體環節歸納為標準的流程並按順序排列出來。
關鍵點是,不要混淆主語。如果站在使用者的立場來考慮,自始至終都要從使用者的角度來擬定。由於最終是要從自動售賣機的角度擬出程序算法,所以已經習慣程序算法的人也可以直接從自動售賣機的角度來考慮(最終要輸出的程序算法)。
另一方面,也可以像本次說明的一樣,在習慣程序算法前,可以先從使用者的角度考慮流程,然後再從自動售賣機的角度擬定程序算法。
2. 進一步添加附帶條件等
敲定基本的步驟以後,接下來就要考慮附帶條件。
同時考慮基本步驟和附帶條件也可以,但要先習慣這種思維。此外,附帶條件如果要琢磨的話,會有非常詳細的內容,所以建議大家分兩步進行,先擬定好基本的步驟,再考慮附帶條件。
下面具體介紹擬定附帶條件的思路。要用以下準則進行檢查:當條件被滿足時,前進到下一步的行動有沒有問題。
以這次的例子來說,有兩個地方需要檢查。
一個是收款之後,是否可以亮燈;另一個是被點擊按鈕之後,是否可以提供商品。
關於檢查1,剛才進行了說明。因為可能會發生使用者付款不足額的情況,所以可以增加「收款是否足額」作為附帶條件。
關於檢查2,我們也來思考一下。
嘗試考慮「點擊按鈕之後就提供商品是否可以」,或者「是否存在點擊按鈕之後仍然不提供商品」的情況。
例如在商品售罄等情況下,想提供商品也無法提供。不過,這種情況本來就應該設置為無法亮燈。關於亮燈的按鈕被點擊的情況,似乎不用特別增加附帶條件。
這樣,程序算法就擬好了。
練習題
我們繼續來思考附帶條件的情況。剛才對於「是」的情況已經考慮了附帶條件,而「否」的情況下的附帶條件也要提前考慮好。括號裡面應該填入什麼內容(是相同的內容)?
解答
大家嘗試考慮一下通過怎樣的流程會進入菱形的狀態。我們知道存在「付款不足額」,或者雖然亮燈了但是「按鈕沒有被點擊」這種情況。同時,從流程圖來看,在這個條件下如果判斷為「是」,就會在不提供商品的情況下結束流程。
從自動售賣機的角度考慮的話,知道有人可能會購買,但如果是(4)的話,就意味著銷售條件不完整;如果是(5)的話,就意味著無法進行商品的選擇,這樣就需要在某一個時間點放棄提供商品。「商品提供被取消」的觸發條件是時間,需要考慮幾秒比較合適,例如要擬定邏輯,判斷「是否經過了15秒」。
STEP UP!
我們看到,如果要給計算機發送指令的話,就要擬定程序算法。剛才是以自動售賣機為例進行的說明,實際上商品售罄時的處理、找零錢不夠時的處理等,都是需要作為附帶條件添加上去的,這就會更為複雜了。
隨便找一個自動售賣機來看,它的內部都是由這樣步驟分明的程序算法來驅動的。如果沒有這個程序算法,自動售賣機就不能運作。
可能有些人會覺得因為有了AI,所以工作全部交給AI就行,但如果它的末端沒有進行這種程度的步驟劃分並擬出程序算法,計算機也無法運轉起來。
另一方面,如果能夠做到分步驟並擬出程序算法,就可以藉助計算機的力量。今後,越了解程序算法,就越能活用計算機,這會成為差異化的能力。
「被計算機搶去工作」的話題經常被討論,如果是能夠分步驟完成的作業,就很容易被替代。這些範疇的工作,其實應該積極地交給計算機去做。
相反,難以運用程序算法的事情,可能更應該讓人去積極地參與,具體如下:
·步驟較多的事情
·會發生步驟交替的事情
·判斷基準有多個的事情
·判斷基準本身不明確的事情
·需要依靠感覺或經驗的事情
然而,那些很難的事,例如,需要依靠感覺或經驗的事情,一旦能夠分步驟並擬出程序算法,可以說從那個瞬間開始,計算機就能成為我們的夥伴。
我們能夠在多大程度上依賴計算機進行工作,這是一個需要具體情況具體分析的重要課題。但是,這肯定會成為今後的關鍵技能,所以建議大家能夠對它有基本的理解。
小結
√ 程序算法的關鍵是程序化
√ 擬定程序算法時,不能混淆立場(主語)
√ 歸納基本流程,然後添加附帶條件
√ 如果能夠實現程序化,就可以藉助計算機的力量
√ 程序化很難的事情更有可能帶來機遇