跳到主要內容


程式語言-學習大綱

學習大鋼

這是我學習程式語言的流程,前面的學習是以基本語法為主,學習完之後開始針對資料類型、、資料的存放、有效率的使用硬體、有效率的設計程式、有效率的接受使用者命令等議題進行練習,額外衍生出安全、程式碼管理、團隊溝通等議題。

程式語言學習清單

概念CC++C#PythonJava
介紹概論一
概論二
介紹介紹介紹介紹介紹
安裝安裝安裝安裝安裝安裝
變數變數
運算
變數變數變數變數變數
條件敘述條件敘述條件敘述條件敘述條件敘述條件敘述條件敘述
迴圈迴圈迴圈迴圈迴圈迴圈迴圈
函數函數函數函數函數函數函數
類別類別類別類別類別類別類別
開啟檔案常見檔案類型
圖片
開啟檔案開啟檔案開啟檔案開啟檔案
Excel
Word
圖片
音源
影片
開啟檔案
資料庫資料庫
MySQL
Mongodb
資料庫資料庫資料庫
MySQL-1
MySQL-2
Mongodb
資料庫
資料結構與演算法資料結構與演算法
資料結構
演算法

資料結構
演算法
資料結構
演算法
資料結構
演算法
資料結構
演算法
資料結構
演算法
資料結構陣列、串列鏈結
佇列、堆疊、串列
樹、圖
佇列、堆疊、串列
樹、圖
佇列、堆疊、串列
樹、圖
佇列、堆疊、串列
樹、圖
佇列、堆疊、串列
樹、圖
佇列、堆疊、串列
樹、圖
演算法排序、搜尋
單源最短路徑
多源最段路徑
排序、搜尋
單源最短路徑
多源最段路徑
排序、搜尋
單源最短路徑
多源最段路徑
排序、搜尋
單源最短路徑
多源最段路徑
排序、搜尋
單源最短路徑
多源最段路徑
排序、搜尋
單源最短路徑
多源最段路徑
函式庫函式庫函式庫函式庫函式庫函式庫函式庫
設計模式設計模式
工廠模式
建造者模式
單例模式
原型模式
Creational-雜談
調配器模式
橋接模式
組合模式
裝飾模式
外觀模式
享元模式
代理模式
Structural-雜談
模板模式
責任練模式
命令模式
解譯器模式
迭代器模式
觀察者模式
中介者模式
備忘錄模式
狀態模式
策略模式
Behavior-雜談
MVC
Server-Client

設計模式
工廠模式
建造者模式
單例模式
原型模式
調配器模式
橋接模式
組合模式
裝飾模式
外觀模式
享元模式
代理模式
模板模式
責任練模式
命令模式
解譯器模式
迭代器模式
觀察者模式
中介者模式
備忘錄模式
狀態模式
策略模式

設計模式
工廠模式
建造者模式
單例模式
原型模式
調配器模式
橋接模式
組合模式
裝飾模式
外觀模式
享元模式
代理模式
模板模式
責任練模式
命令模式
解譯器模式
迭代器模式
觀察者模式
中介者模式
備忘錄模式
狀態模式
策略模式
設計模式
工廠模式
建造者模式
單例模式
原型模式
調配器模式
橋接模式
組合模式
裝飾模式
外觀模式
享元模式
代理模式
模板模式
責任練模式
命令模式
解譯器模式
迭代器模式
觀察者模式
中介者模式
備忘錄模式
狀態模式
策略模式
設計模式
工廠模式
建造者模式
單例模式
原型模式
調配器模式
橋接模式
組合模式
裝飾模式
外觀模式
享元模式
代理模式
模板模式
責任練模式
命令模式
解譯器模式
迭代器模式
觀察者模式
中介者模式
備忘錄模式
狀態模式
策略模式
GUIlink
網路通訊Socket
ICMP
Telnet
FTP
POP
SMTP
IMAP
SSH
Http
DNS
DHCP
BitTorrent
P2P
RTSP
IRC
Modbus
SNMP
SNTP
SMB
link
Framework網站
視窗程式
機器學習
網路爬蟲
Systemlink
其他平行運算
多執行緒
link
程式優化程式容量
運算資源
link
link
link
link
link
link
link

主題討論

任何的主題其實都是資料處理,資料處理分成三個部分,獲取資料分析資料呈現資料,在電腦上任何資料都是以以下種類形式存在數字文字串影像音源影片,只是賦予的意義不同,而這些資料的來源不外乎自行蒐集、機器蒐集、他人蒐集,這樣說明對之後的各類主題分析可比較好理解。
  • 自行蒐集:
自行蒐集可以由問卷、書寫、錄音、錄影、照相的等方式,最後想辦法輸入到電腦。
  • 機器蒐集:
機器蒐集可由感測器獲得資料,並用程式自動記錄的方式,儲存下來,最後整合到電腦上。
  • 他人蒐集:
他人蒐集是由他人蒐集的內容,整合到電腦上,也有可能他人已經先行整合,因此就是從他人的電腦上獲得資料。

在獲取資料時,會去定義或是暸解資料的意義,在分析資料時,可以根據資料特性已知的物理模型已知的數學模型、有效的數學方法,如:統計、時域分析頻域分析,而這些分析的目的都是為了能抓取到資料的特徵來應用,資料結果的呈現可以用文字圖表模型

講到這邊會思考為什麼任何主體都是資料處理,用以下例子登入系統做解釋,今天一個登入系統,需要從使用者這邊獲得使用者的帳號跟密碼,也就是從鍵盤上輸入資料,然後經過分析之後,判斷能否登入,最後結果呈現在畫面上,顯示登入成功或是登入失敗。

用這個角度來看,就會發現任何系統都離不開這個概念,只是中間加了很多保護機制,不會讓人厭煩的過程。

以facebook為例子,從註冊開始,都是從使用者這邊獲得資訊,獲得資訊之後,讓使用者得到使用權,使用者行使使用權在該網站上,繼續輸入資訊,重複這個過程,就可以得到一個結碖,所謂的軟體、程式,就是不停的從使用者這端獲取資訊、分析、呈現。

數字(包含布林):
數字運算分析就如同數學上的方法一樣,今天拿到一堆數字,就要去理解這些數字的特性,而這些數字通常為二維,因為一維的資料還帶有順序的資訊,所以可以當作二維進行處理,拿到資料基本工作就是先畫圖,四維以上可能需要兩倆畫圖觀察特性,而這些資料是否錯誤、是否有物理意義、是否有數學模型可以描述等,影像、影音、影片也是如此。

文字串:
文字串,不外乎字串處理,目的是誰了獲得能夠處理的字串形式,以便後續的分析,而這些分析也是跟數字的分析是類似的,所以字串處理也是字串分析的基本,舉個例子來說,今天分析一篇文章分析,必須能夠分段、去除標點符號、去除不重要的字、並觀察出這段文章的重點,然後呈現,這過程其實跟人在閱讀文章過程是相同的。

在分析的時候主要可以分成三大類分類、群聚、回歸,分類就是不同性質分開,群聚是指類似性質放一起,回歸是指模型化。

在電腦發展的過程,其目的本就是為了幫助人類進行資料處理,但大部分前期的發展都在做使用的優化,從數字系統、文字系統、程式語言語法設計、資料儲存、資料結構、演算法等都是優化的成果。

以下的為建議的研究清單:
  • 編譯器
  • 購物車系統
  • 各類型資料使用機器學習
會用上述三個當作建議研究清單的理由如下:
編譯器加組譯器其實就是轉換高階語法到機械碼的過程,而編譯器跟組譯器構造類似,因此研究編譯器,而其主要工作就是翻譯,所以今天如果我想設計一個把中文翻成英文的程式其實可以視他為編譯器的一環,仔細去看會發現其概念是完全相通的,在自然語言領域也是相同。

購物車系統主要是針對瑣碎的資料比對、加密等議題做練習,做完這些練習基本上對大部分的系統都已經能夠輕易撰寫。

機器學習其實可以看成跟人學習東西的過程一樣,分類、群聚、回歸,就跟人會把不一樣的東西分開、類似的東西放一起、最後用數學模型去描述,概念是相同的,而各類型資料處理上的技巧不同,因此需要針對各種類型資料進行練習。

綜觀來看以上三個研究內容能夠透徹,在各方面對軟體的設計就不會有太大的問題,再來就是針對各種平台常用的方式,進行設計練習。

以下為各種平台類型
網路:https、其他通訊協定
桌面程式:windows、mac、linux
行動裝置:ios、android

在韌體或跟硬體有關的方面,其實離不開上述內容,只不過對於硬體的部分,會著重在如何讓硬體有效被使用、如何讓硬體被辨識上,所以會跟作業系統有關,這邊不詳細討論。

留言

這個網誌中的熱門文章

Python-資料庫-mongodb-pymongo

Python 資料庫 mongodb-pymongo 安裝: linux、mac:pip3 install pymongo windows: import pymongo client = pymongo.MongoClient("mongodb://localhost:27017/") db = client['demo_db'] col = db['demo_col'] dict1 = { "name": "ab123ab456g", "day": "1890-04-05" } result = col.insert_one(dict1)  dict2 = [   { "name": "ki", "day": "1666-1-1"},   { "name": "aa", "day": "1222-11-11"},   { "name": "gg-gg", "day": "1333-02-22"},   { "name": "T-T", "day": "1444-03-02"},   { "name": "f-f", "day": "1555-01-01"} ] result = col.insert_many(dict2) result = col.find_one() print(result) results = col.find() for result in col.find(): print(result) results = col.find() query = {'

程式語言概念-條件敘述

程式語言概念 條件敘述 上一篇的比較運算就是用來描述條件的,如變數a跟變數b,範例如下。 a>b a=>b a==b a<=b a<b a!=b 上一篇的邏輯運算可以連接不同條件,如:a>b and c>b。 在寫程式的時候,可以使用條件式加上需要的條件敘述,進行流程控制,達到程式結構化的目的,常見的條件式if-else、if-else if- else、switch。 條件式可以進行選擇流程,選擇流程種類如下。 單一選擇 雙向選擇 多向選擇 單一選擇: 用於當某些條件達成之後,就執行,如:下雨了嗎?沒有,沒事,有,帶傘。 流程圖 雙向選擇: 用於當某些條件達成之後,執行A,不然執行B,如:請問數字是奇數嗎?是,奇數,不是,偶數。 流程圖 多向選擇: 用於判斷某變數是否為A、B、C、...、其他,如:請問現在是什麼季節?春天、夏天、秋天、冬天。 流程圖  投影片-slideshare:程式語言概念_變數  影片-youtube:程式語言蓋面_變數  程式碼-Github:程式語言概念_變數 下一單元:程式語言概念_ 迴圈

Python-開啟檔案

Python 開啟檔案 基本概念說明 參考 程式語言概念-常見檔案型態 基本常見檔案類型 二進位檔 文字檔 CSV XML JSON html excel word 圖片 音源 影片 以下是處理該類型檔案對應函式或模組 這邊內建函數的意思是讀取之後能直接處理。 檔案類型 內建函數 標準模組 非標準模組 二進位檔 open() None - 文字檔 open() None - CSV None csv - XML None xml - JSON None json - html None html - excel None None 非 windows excel api windows excel api word None None 非 windows word api windows word api 圖片 None None pypng 音源 None wave - 影片 None None moviepy 二進位檔程式碼範例 二位元的定義在Python官網的資料型態沒有定義,但是還是可以使用的需要用函式轉換才能夠出現,分別用bytes、bytearray兩種,在使用前可以先盡到直譯器上,用help指令查訊該function的功能,以下是其內容。 在前面先講bytes跟bytearray用法,後續再講數字、字串轉成bytes的方法,最後才是進行二進位檔案讀寫。 bytes 再把資料料轉換時輸入內容可分成一下種類 整數 字串 可迭代資料:迭代內容一定要是數字 buffer:這邊不是示範,因為寫python沒用過 bytes(1) bytes(2) bytes(3) bytes(4) bytes('str'.encode('utf8')) bytes('str'.encode('ascii')) bytes([0,1,255]) bytes((2)) bytes((1,2)) bytes({1,2}) 程式碼說明 bytes()中代入數字是告知bytes數量,如:bytes(1)就是一個bytes量 bytes()中代入字串時,附加編