現代的計算機概論範圍也越來越廣了,從傳統的「硬體」、「軟體」到「通訊」及「資料」等;其中,通訊現在應該算獨立於計算機之外自成一派。
而資料科學則在近十年「機習學習」或「深度學習」變成顯學後,受到高度重視。
我自己也覺得未來要多加重視「資料科學」,畢竟現在的資訊太發達,資料太多反而讓人無法快速反應過來,就算不是資料科學的從業人員,也應該具備相關知識,才能更好的解讀被分析過後的數據。
話雖然是這麼說,但回想十幾年前唸書的時候,資料科學這個詞連聽都沒聽過,活著就得努力的追求新知識與新技能,科技進步的很快,但也要跟得上才行阿!
不想變成時代的眼淚,還請多努力,別輕易躺平。
本章節重點摘要如下:
「演算法」是一系列精確、清楚的步驟,執行特定的工作後停止;它敘述一個「與實作細節無關的運算」;這些步驟以定義周詳的基本運算為基礎。
演算法的複雜度是它的工作量的一種抽象描述,複雜度的衡量是看此演算法的基本運算的工作量是如何隨著資料量的增加而成長。
從最低等級的「對數曲線 (資料增加 1 倍只增加 1 個運算步驟)」、「線性曲線 (資料 1 倍運算 1 倍)」到「指數曲線 (增加 1 個資料項運算 1 倍)」。
演算法是「抽象」的東西,程式是要讓「真實」的電腦執行工作所需要的全部步驟具體表述。
撰寫程式必須應付的問題包括「有限的記憶體空間與時間」,用以表述數字的資訊量大小與精確度有限,以及經常變化的環境。
「程式語言」是用以表示所有運算步驟的標記法,其形式要讓人能夠自在地撰寫,但可以被轉譯成電腦最終使用的二進制表示。
最常使用的是「編譯器 (或再加上組譯器)」,把用程式語言撰寫的程式轉譯成在電腦上運行的「二進制形式」。
目前「軟體開發」的工作有很大一部份是把既有的「元件」拼湊起來 (可能是函式庫裡的函式),這不少於自行撰寫的部份。
函式庫及元件透過應用程式介面 (API) 來提供它們的服務。
「抽象化」是電腦運算領域的一個基本概念,從硬體到大型軟體系統,所有層級都存在抽象化。
尤其在「軟體的設計與實作」方面,抽象化這個概念特別重要,它把一個程式碼做什麼事和它如何實作這兩者區分開來。
軟體可被用來隱藏實作細節,如虛擬記憶體、虛擬機、直譯機及雲端運算。
程式的開發更加倚重已經被證明的軟體元件,隨著消費者的要求更多,程式將變得越來越大。
沒有留言:
張貼留言