前言:這個學習紀錄是由一個完全沒有寫過程式,也沒有程式設計相關背景的小學渣寫的,寫得不好還請見諒
R 語言是由Ross Ihaka 及 Robert Gentleman 於1992年開發的。R語言主要功能涵蓋統計與分析數據、繪圖(資料視覺化)及資料探勘等。目前R語言被廣泛用於經濟、財經、人文、社會科學、人工智慧、生物資訊學等學術領域。目前,R語言已經在2019年7月更新到3.6.1 版本。
R語言特性、優點:
• 擴充性(附加功能)相當強大:R 語言的套件(Package)目前已經達到18,166個(2019/9/12,官網統計),功能數多達2,657,877個,包含特殊統計方式、繪圖、資料輸出/輸入等。(套件的完善也代表著工程師或程式設計人員不用花時間為特定功能寫程式碼,可以直接套用套件,省時省力)
• 免費。相較於要價不菲的主流統計軟體(例如SPSS、SAS等),R是免費的。
• 雖然主要用於統計及資訊學領域,R語言其實也可以用來訓練深度學習模型、設計電子遊戲介面(當然,這些功能也有賴於R語言的強大附加套件)
• 相較其他統計領域的程式語言有更強的物件導向特性
身為一個程式語言初心者,「物件導向」這個名詞雖然聽過很多遍,但是還是不知道他的意思。在搜尋了一下子之後,我想用程式設計法(Programming paradigm)演進的角度解釋「物件導向」,以下是我的筆記:
程式語言在最早時期採用的是「非結構化」的程式語言,不論是小程式或大程式都只有一個主程式(main() ),執行時則是使用線性(由上而下)的方式執行。
經過一段時間後「非結構化」的程式語言發展成了「結構化」的程式語言,結構化的程式設計將非結構化程式中重複的片段抽出成為「函數(function)」(又稱程序(procedure, sub-routine, routine),每個函數皆有特定的功能。這時候,在非結構程式語言中的主程式main就變成了呼叫不同函數(或程序)的程序呼叫(procedure call)
又過了一段時間,「結構化」的程式語言又延伸發展成了「模組化」的程式語言。「模組」,顧名思義,就是將相同功能的函數結合變成「模組」,是用以處理特定功能的子程式。
最後來到物件導向程式設計,在物件導向程式設計中,每個物件都是其類別(資料(欄位、屬性)及程式碼(方法,或函數))的實例(其實跟模組有點像,只是模組重複使用原始碼,物件重複使用類別(原始碼堆疊後的產物))。物件通常被視為一個「小機器」,具有接收、處理及傳送資料的功能。物件導向程式設計最大的特點就是能夠增加設計速度及穩定性,另外,物件導向程式設計的靈活性、使用性及可維護性都比其他程式設計方法要來得高。
Day 1 總結:痾,原本想說第一天只要寫一下R的基本特性及開發歷史就好,結果到後面都在試著了解什麼是物件導向(囧),明天再繼續寫R的其他程式設計特性吧