說是要為資料工程師, 第一件事是先了解甚麼是資料, 也就是資料結構, 雖然說現在有很多資訊都是非結構化 (unstructured), 但很多底層都是由結構化的資料去開發出來的, 若了解甚麼是資料結構, 對處理資料的方法是事半功倍, 雖然這堂課是大一必修, 但對絕大多數人在修這堂課時並沒有感受到這課的重要性, 這時候是應該重新拿出討來複習一下吧:
在 wiki 中, 裏面說得常見的資料結構有下面幾種:
[*]陣列(Array)
[*]堆疊(Stack)
[*]隊列(Queue)
[*]鏈錶(Linked List)
[*]樹(Tree)
[*]圖(Graph)
[*]堆(Heap)
[*]雜湊表(Hash)
但這只是大方向, 真的在實用還有更多與更細的要去了解與操作, 有人整理一張表, 算出常用的 Data Types, 其中也包含資料結構與內容, 大約有 180 種, 如下圖:
也就是說, 真正實務上要去了解的說不定更多, 雖然真正在使用如一開始所說的是自然語言或非結構化資料, 甚至所謂的 Plain-Text 這種 DataType 可以解決大多數的問題, 但真正還是要加入一些標籤 (Tag) 等屬性 (Attribute) 的概念進內容才能夠了解, 這也是為甚麼說常用的 XML (eXtensiable Markup Language) 已經迎合大部份須求了.
常用的資料類別 (Data Type):
但這些資料結構的學習說是最基礎, 最後還是要實務與生活結合, 也就是說, 從資料結構中 (Data Structure) 的資料類別 (Data Type) 導引出最後使用的資料格式 (Data Format), 所有的通訊協定都是資料的串接, 也就是說沒有定義出合用的格式, 類別, 結構, 所有的內容都是無法交換與解讀, 換言之就是失去資料真正的意義.
甚至要學會資料的 Class, 以及使用的方法 Method 跟最後要如何寫程式, 如何運作程式有很大的相關, 因為最後程式就是要運算這些資料 Data, 若對資料本身不了解如何開始呢?
建議免費電子書: Data Structures and Algorithms in Python http://it-ebooks.info/book/2467/
開放課程: http://ocw.nctu.edu.tw/course_detail.php?bgid=9&gid=0&nid=412