
程式設計的本質就是演算法,也就是以數學邏輯理解問題、解決問題的能力。這是一種通用於各個領域,且即使大環境發生變化(例如程式語言的改變)也依然適用的能力,在企業推動數位轉型(Digital Transformation)的過程中,這更是上上下下、從基層員工開始都不可或缺的關鍵之一。
文/旗標科技
我們生活在一個具有空間與時間的世界裡,例如住家、道路、教室等,都是空間;而執行計畫,則體現時間的流動。而我們必須在這樣的空間、時間因素下,思考如何定義問題、解決問題,以達成各種目標。
[ 參與年度盛事 2023 CIO 大調查,就從填寫問卷開始!(survey.cio.com.tw) ]
達成目標所需的步驟,就是所謂的「演算法」。演算法是進行思考與決策的基礎,因此從日常生活、商業往來到研究開發,各種需要解決問題的場合,都能見到演算法的蹤影。演算法可以由人執行,還能藉由程式設計自動運行。而且電腦可以處理人腦無法輕鬆解決的複雜問題。因此演算法除了是資訊及通訊科技(information and communications technology,ICT)領域中最重要的學科與研究範圍之一,也應該讓基層員工都能學習,就像大學的通識教育一樣。
用電腦能處理的形式來描述問題
演算法是為了解決「問題」,例如圖 1 代表的就是資料排序的問題。而在電腦的世界中,要如實的描述問題,可將問題拆解成輸入和輸出狀態,如圖 2 所呈現的就是資料的存取狀態 (輸入與輸出資料)。


演算法就是有邏輯的執行步驟
演算法的目的在於有效地使用電腦資源,就像人類使用有限的資源一樣,可以針對資料在記憶體上的邏輯關係進行設計,將事物模組化,使計算更有效率。我們也可以將演算法視為是以邏輯關係(結構)為基礎,「使用空間結構的執行步驟」。
一般來說,演算法可以從四個面向來了解其特性,其關係如圖 3,後續我們再進一步解釋這四個面向:
- 空間結構:資料之間的邏輯關係,等同是演算法的框架。空間結構有許多種類,如陣列、樹狀結構等,一般也是初學演算法的基礎(圖 4)。
- 資料:利用空間結構來表示的值。演算法所處理的資料,如輸入值、中途結果和輸出值,藉由為記憶體命名並加上索引編號,可讓程式存取資料的「變數」及「陣列變數」,變數及陣列變數的值。
- 時間結構:在空間結構中的處理流程。時間結構可將演算法計算過程中的每個步驟(或數個步驟)拆解開來,依序列出演算法的計算過程。每個步驟中空間結構的資料都會有所變化。
- 計算:處理的內容及狀態,也就是電腦實際要執行的任務內容。


將「演算法」融入商業思維
在現實世界中,許多演算法已經被主流的程式語言編寫成方便使用的「函式庫」。不過「函式庫」也等同是將工作原理藏在內部的「黑箱」,因此大多數人在使用時不見得對其運作細節有充分的理解。
在企業推動數位轉型的過程中,我們需要將「數位」融入商業思維中,也就是要知道怎麼用電腦來解決問題,才能打造創新的商業模式,因此以往只有資通訊人才需要學習的演算法,搖身成為人人都需要具備的基礎知識,坊間許多「運算思維」、「邏輯思維」課程,本質上都歸屬演算法的範疇。
[ 加入 CIO Taiwan 官方 LINE 與 Facebook ,與全球CIO同步獲取精華見解 ]
學習演算法並非是要基層員工人人都學會寫程式、設計軟體,而是要充分理解數位世界運行的邏輯,拋開程式語法、數學公式,其實演算法就只是一連串的規則而已,沒有想像中那樣神秘、可怕。《會動的演算法:61 個演算法動畫+全圖解逐步拆解,人工智慧、資料分析必備》一書,一圖一步驟地拆解演算法的背後原理,並搭配動畫的展示,將演算法的空間結構、時間結構完美呈現,可以活化思維並有效提升邏輯思考力!
(本文授權非營利轉載,請註明出處:CIO Taiwan)

