學習大鋼
這是我學習程式語言的流程,前面的學習是以基本語法為主,學習完之後開始針對資料類型、、資料的存放、有效率的使用硬體、有效率的設計程式、有效率的接受使用者命令等議題進行練習,額外衍生出安全、程式碼管理、團隊溝通等議題。程式語言學習清單
概念 | C | C++ | C# | Python | Java | |||
---|---|---|---|---|---|---|---|---|
介紹 | 概論一 概論二 | 介紹 | 介紹 | 介紹 | 介紹 | 介紹 | ||
安裝 | 安裝 | 安裝 | 安裝 | 安裝 | 安裝 | |||
變數 | 變數 運算 | 變數 | 變數 | 變數 | 變數 | 變數 | ||
條件敘述 | 條件敘述 | 條件敘述 | 條件敘述 | 條件敘述 | 條件敘述 | 條件敘述 | ||
迴圈 | 迴圈 | 迴圈 | 迴圈 | 迴圈 | 迴圈 | 迴圈 | ||
函數 | 函數 | 函數 | 函數 | 函數 | 函數 | 函數 | ||
類別 | 類別 | 類別 | 類別 | 類別 | 類別 | 類別 | ||
開啟檔案 | 常見檔案類型 圖片 | 開啟檔案 | 開啟檔案 | 開啟檔案 | 開啟檔案 Excel Word 圖片 音源 影片 |
開啟檔案 | ||
資料庫 | 資料庫 MySQL Mongodb | 資料庫 | 資料庫 | 資料庫 | MySQL-1 MySQL-2 Mongodb | 資料庫 | ||
資料結構與演算法 | 資料結構與演算法 資料結構 演算法 | 資料結構 演算法 | 資料結構 演算法 | 資料結構 演算法 | 資料結構 演算法 | 資料結構 演算法 | ||
資料結構 | 陣列、串列鏈結 佇列、堆疊、串列 樹、圖 | 佇列、堆疊、串列 樹、圖 | 佇列、堆疊、串列 樹、圖 | 佇列、堆疊、串列 樹、圖 | 佇列、堆疊、串列 樹、圖 | 佇列、堆疊、串列 樹、圖 | ||
演算法 | 排序、搜尋 單源最短路徑 多源最段路徑 | 排序、搜尋 單源最短路徑 多源最段路徑 | 排序、搜尋 單源最短路徑 多源最段路徑 | 排序、搜尋 單源最短路徑 多源最段路徑 | 排序、搜尋 單源最短路徑 多源最段路徑 | 排序、搜尋 單源最短路徑 多源最段路徑 | ||
函式庫 | 函式庫 | 函式庫 | 函式庫 | 函式庫 | 函式庫 | 函式庫 | ||
設計模式 | 設計模式 工廠模式 建造者模式 單例模式 原型模式 Creational-雜談 調配器模式 橋接模式 組合模式 裝飾模式 外觀模式 享元模式 代理模式 Structural-雜談 模板模式 責任練模式 命令模式 解譯器模式 迭代器模式 觀察者模式 中介者模式 備忘錄模式 狀態模式 策略模式 Behavior-雜談 MVC Server-Client |
|
| 設計模式 工廠模式 建造者模式 單例模式 原型模式 調配器模式 橋接模式 組合模式 裝飾模式 外觀模式 享元模式 代理模式 模板模式 責任練模式 命令模式 解譯器模式 迭代器模式 觀察者模式 中介者模式 備忘錄模式 狀態模式 策略模式 | 設計模式 工廠模式 建造者模式 單例模式 原型模式 調配器模式 橋接模式 組合模式 裝飾模式 外觀模式 享元模式 代理模式 模板模式 責任練模式 命令模式 解譯器模式 迭代器模式 觀察者模式 中介者模式 備忘錄模式 狀態模式 策略模式 | |||
GUI | link | |||||||
網路通訊 | Socket ICMP Telnet FTP POP SMTP IMAP SSH Http DNS DHCP BitTorrent P2P RTSP IRC Modbus SNMP SNTP SMB | link | ||||||
Framework | 網站 視窗程式 機器學習 網路爬蟲 | System | link | |||||
其他 | 平行運算 多執行緒 | link | ||||||
程式優化 | 程式容量 運算資源 | link | ||||||
link | ||||||||
link | ||||||||
link | ||||||||
link | ||||||||
link | ||||||||
link |
主題討論
- 自行蒐集:
自行蒐集可以由問卷、書寫、錄音、錄影、照相的等方式,最後想辦法輸入到電腦。
- 機器蒐集:
機器蒐集可由感測器獲得資料,並用程式自動記錄的方式,儲存下來,最後整合到電腦上。
- 他人蒐集:
他人蒐集是由他人蒐集的內容,整合到電腦上,也有可能他人已經先行整合,因此就是從他人的電腦上獲得資料。
在獲取資料時,會去定義或是暸解資料的意義,在分析資料時,可以根據資料特性、已知的物理模型、已知的數學模型、有效的數學方法,如:統計、時域分析、頻域分析,而這些分析的目的都是為了能抓取到資料的特徵來應用,資料結果的呈現可以用文字、圖表、模型。
講到這邊會思考為什麼任何主體都是資料處理,用以下例子登入系統做解釋,今天一個登入系統,需要從使用者這邊獲得使用者的帳號跟密碼,也就是從鍵盤上輸入資料,然後經過分析之後,判斷能否登入,最後結果呈現在畫面上,顯示登入成功或是登入失敗。
用這個角度來看,就會發現任何系統都離不開這個概念,只是中間加了很多保護機制,不會讓人厭煩的過程。
以facebook為例子,從註冊開始,都是從使用者這邊獲得資訊,獲得資訊之後,讓使用者得到使用權,使用者行使使用權在該網站上,繼續輸入資訊,重複這個過程,就可以得到一個結碖,所謂的軟體、程式,就是不停的從使用者這端獲取資訊、分析、呈現。
數字(包含布林):
數字運算分析就如同數學上的方法一樣,今天拿到一堆數字,就要去理解這些數字的特性,而這些數字通常為二維,因為一維的資料還帶有順序的資訊,所以可以當作二維進行處理,拿到資料基本工作就是先畫圖,四維以上可能需要兩倆畫圖觀察特性,而這些資料是否錯誤、是否有物理意義、是否有數學模型可以描述等,影像、影音、影片也是如此。
文字串:
文字串,不外乎字串處理,目的是誰了獲得能夠處理的字串形式,以便後續的分析,而這些分析也是跟數字的分析是類似的,所以字串處理也是字串分析的基本,舉個例子來說,今天分析一篇文章分析,必須能夠分段、去除標點符號、去除不重要的字、並觀察出這段文章的重點,然後呈現,這過程其實跟人在閱讀文章過程是相同的。
在分析的時候主要可以分成三大類分類、群聚、回歸,分類就是不同性質分開,群聚是指類似性質放一起,回歸是指模型化。
在電腦發展的過程,其目的本就是為了幫助人類進行資料處理,但大部分前期的發展都在做使用的優化,從數字系統、文字系統、程式語言語法設計、資料儲存、資料結構、演算法等都是優化的成果。
以下的為建議的研究清單:
- 編譯器
- 購物車系統
- 各類型資料使用機器學習
會用上述三個當作建議研究清單的理由如下:
編譯器加組譯器其實就是轉換高階語法到機械碼的過程,而編譯器跟組譯器構造類似,因此研究編譯器,而其主要工作就是翻譯,所以今天如果我想設計一個把中文翻成英文的程式其實可以視他為編譯器的一環,仔細去看會發現其概念是完全相通的,在自然語言領域也是相同。
購物車系統主要是針對瑣碎的資料比對、加密等議題做練習,做完這些練習基本上對大部分的系統都已經能夠輕易撰寫。
機器學習其實可以看成跟人學習東西的過程一樣,分類、群聚、回歸,就跟人會把不一樣的東西分開、類似的東西放一起、最後用數學模型去描述,概念是相同的,而各類型資料處理上的技巧不同,因此需要針對各種類型資料進行練習。
綜觀來看以上三個研究內容能夠透徹,在各方面對軟體的設計就不會有太大的問題,再來就是針對各種平台常用的方式,進行設計練習。
以下為各種平台類型
網路:https、其他通訊協定
桌面程式:windows、mac、linux
行動裝置:ios、android
在韌體或跟硬體有關的方面,其實離不開上述內容,只不過對於硬體的部分,會著重在如何讓硬體有效被使用、如何讓硬體被辨識上,所以會跟作業系統有關,這邊不詳細討論。
留言
張貼留言