電腦編程技術藍圖

來源:互聯網
上載者:User

標籤:

目錄:

0 硬體 1 基本概念
2 作業系統
3 編程技術 
4 軟體工程
5 高效的程式員
6 編程實踐
 自己主要關注2個方面,硬體方向的 單片機(如何與各種硬體外設互動)和軟體方向的 電腦圖形學(專註於圖形映像的產生).其他還關心linux,網路. 從0開始 :)  0 硬體對於一個電腦硬體,我們需要從哪些方面瞭解呢?以下是個列表(連結待整理). 

模組

硬體

編程方面

介面方式

衡量指標

研究方向

處理器

pc,notebook,phone

線程

intel: Socket 478 ,LGA775,LGA 1150等amd: Socket 939 Socket FM2等

多核/主頻

工藝

程式設計基礎

記憶體

記憶體

變數,地址

ddr3/4

   頻寬/延遲

程式設計基礎

儲存

硬碟/隨身碟/sd

 檔案  讀取的方式:同步,非同步

(ata)ide,sata3(串列ata)usb

頻寬

容量

 資料庫

網路

網卡/路由器/網線 

socket

 

頻寬,延遲

 電腦網路

聲音 音效卡        

顯示 

gpu, 顯卡/顯示器/印表機

讀寫顯示器  視窗

對外:vga,dvi,hdmi,dp;內部:AGP,pci

解析度

色域

色彩準確度回應時間

可視角度

清晰度

亮度

對比

功耗

發熱

電腦圖形學

滑鼠/鍵盤

鍵盤,滑鼠

訊息/事件/中斷

usb,ps2

解析度

程式設計基礎

 
  1 基本概念 在硬體向軟體過渡過程中,或者說在使用硬體的過程中,理解基本概念是在最堅實,最困難的一步.這部分內容在 知識整理--基本概念中.(連結待整理),這些概念下面聯絡著硬體,上面聯絡著軟體,起到承上啟下的作用.每個概念的後面即有理論又有實踐.理論是唯一的,實踐卻可以從不同的地方擷取,比如不同的庫(gdi,opengl)都不可以擷取圖形學的一些知識,也可以是不同的作業系統(win/linux/mac)都可以擷取進程線程的一些知識.windows/mfc/qt都可以擷取訊息系統的一些知識.win/mac/android/ios都可以擷取一些圖形介面的一些知識.**都可以擷取網路的一些知識,**都可以擷取檔案系統的一些知識. 對這些概念整理,分類如下
c&cpp c:變數函數類結構體指標數組  cpp:對象模版虛函數建構函式解構函式重載繼承封裝    
os作業系統/瀏覽器術語  進程線程連結庫虛擬記憶體視窗事件訊息堆棧堆記憶體映射異常   檔案系統檔案
緩衝
重新導向
定時器consolessh
 瀏覽器
字型
編碼


gdi/ opengl圖形學術語 ps:
透明/半透明
向量
動畫
調色盤
  
gdi:位元影像(bitmap)畫刷(brush)畫筆(pen)顏色(color)路徑(path)地區(region)調色盤 opengl:
圖片
渲染
紋理
點陣
解析度
蒙版
 
qt術語 訊號/槽
mvc
     
網路 tcp/ip協議連接埠路由       
軟體工程術語 瀑布模型      
   2 作業系統逐步瞭解作業系統是我們工作的基礎.在這個地球上常用的作業系統有windows和*nix(linux,unix,mac os),其它還有手機/嵌入式硬體的作業系統android ,ios, wp,symbian,meego,blackberry,webos.他們展現給使用者的或許千差萬別,但是對程式員來說區別不像看起來那麼大(越底層越是這樣). a)系統使用/管理/探索工具windows下面常用圖形組態工具或者批處理命令來管理配置作業系統*nix下面有一系列的工具(基於命令列)來配置,探索系統1)如何管理軟體(更新 卸載,產生)?2)如何查看硬體資訊? b)自動化語言:自動化可以更高效的使用電腦系統(作業系統)包括windows下面的批處理,*nix下面的指令碼  3 編程技術 

為了使用上面的硬體,就需要使用編程技術,即使用作業系統提供的介面來控制硬體.

a)編程基礎

此部分屬於程式員的個人修養,可能不能直接用於編程,但是可以直接用於深入編程.不一定需要知道具體怎麼做,但是要明白電腦如何做一些事情(一個是機制,一個是實現細節)

什麼是進程,檔案,線程,記憶體,定時器,網路,重新導向等基本概念,這些都是電腦提供給我們的解決問題的工具

比如理解軟體的運行過程

比如理解c與彙編的關係

比如理解指令碼的工作方式

比如一個可執行檔的格式(windows下的pe,*nix下的coff,mac下的mech-o)

比如理解作業系統的工作方式

比如理解設計模式(裡麵包含了經過實踐的,好的編程準則)

如何高效的處理大量物體,如何處理動畫

 

b)程式設計語言電腦程式設計語言有很多種,共同的基礎是系統api,原理即是函數調用,再往下就是堆棧儲存,跳轉執行:通用程式設計語言 c c++ vc c# java objc等泛型指令碼語言 python瀏覽器指令碼語言 js, html, css,其中html專註於結構化文檔 css專註於介面展現,js相當於瀏覽器的指令碼語言,主要是對瀏覽器的控制.系統指令碼語言:批處理,shell其它還有專註於程式封包的nsis注意理解這裡的專註有2種: 專註於某一方面的語言和有一些庫專註於某一方面有交集  附:我的程式設計語言世界觀:(2014/08/07 15:46) 在windows的世界裡混 c#必須要懂的吧 一個正兒八經的程式員c c++ vc也是要懂的吧 python也是要知道的吧,橫跨windows和linux的語言 做伺服器 linux是必須要懂的吧 想做網頁 js html css 必須要懂的吧 想高效的工作,windows的批處理,linux shell也是要懂的吧 在linux下面你好意思說不會vi? 想做android程式嗎,java得懂吧 想做ios程式嗎,objc得懂吧 什麼?你問我只會一種語言行不行? 不行,絕對不行! 除了說語言,我說庫了嗎?mfc,.net,stl就不說了,這都是標配.qt,opengl,directx,jquery,tornado,還有就是每一個東西的二次開發都是一個庫. 你說其實上面的你都有所接觸,其中大部分用的還不錯,恭喜你,在編程的道路,你開始入門了!c) 庫(圖形,網路,資料庫,大資料等)庫分語言內建庫和第三方庫程式設計語言都會帶有庫,比如c標準庫,c++的stl,vc下面的mfc,c#的.net庫,python有大量的庫,還有一些各種語言第三方庫,有些庫可能在幾種語言下都可以工作,比如:專註線程的 pthread專註網路的專註介面的 qt,win32 gui專註於圖形的:dictectx,opengl,win32 gdi專註於科學計算的專註於網站背景 tornado檔案系統,資料庫:sql,mysql,hadhoop... d)應用類型,實現載體.為什麼要看上面的各種東西呢(開發什麼)可以做可以實現各種功能傳統型程式可以做網站可以做案頭/手機用戶端 e)工作中常需要處理基本方面無論使用哪種作業系統,哪種語言,甚至是哪個庫,甚至也不管你做何種開發,下面的都會常常遇到

1 網路訪問

2 壓縮解壓

3 xml json ini

4 資料庫訪問

5 檔案訪問

6 註冊表檔案

7 介面(皮膚)

8 資料結構,字串處理

9 影像處理(2012/11/1 14:26)

 

4 軟體工程

用工程的觀點看如何製作一個軟體.是電腦編程的總結.如何去更好的使用上面的東西來完成具體的一個軟體(系統),涉及以下活動:

 

 

 

需求分析和定義。

系統設計

程式設計

編寫程式

單元測試

整合測試

系統測試

系統交付/驗收

運行和維護

 

 


 

a)總體開發過程瀑布模型反覆式開發法螺旋開發敏捷開發 b) 代碼編輯windows下面主要使用ide(vs系列)*nix常用vi等一系列的文本工具,cmake,gcc等編譯工具鏈代碼編寫規範 c) 代碼管理svngit d)測試技術黑箱測試,白盒測試,灰盒測試代碼測試產品測試自動化測試   

5 高效的程式員

 1 快速鍵包括系統快速鍵和一些軟體專用的快速鍵,系統常用也就記住了,軟體專用的可以使用時查看2 好的工具工欲善其事,必先利其器.有一些日常協助工具輔助比如mspaint,everything還有一些編程專用的工具比如spy++常用軟體即為各種工具,是否常用和擷取的難易以及工具使用體驗有很大關係.比如雖然notepad並一定是一個很好的文本查看工具,但是在每一個windows系統上都會帶有,所以使用頻率還是很高的.在linux/mac下面這些工具一般是系統內建的,windows下面一般是第三方的(最出名的即為systeminternal,已經被微軟收購), 也有少部分是內建的,另外visualstudio開發工具也內建一些.可以體會一下編程實現和使用工具的異同點.   1) 文本工具   notepad 編輯查看   notepad++   ultraedit     vim   hexedit   beyondcompare 文本比較   winmerge    svn 文本版本管理工具   2) 編程/開發工具   vs ide/qt/python/js   gnu工具鏈:ldd,objdump可執行檔查看工具   vs內建工具:dumpbin,spyxx 可以查看windows視窗/訊息

  systeminternal工具集合:procexp debugview

  depends 靜態查看運行依賴   stud_pe   3) 效率 時間管理工具   totalcommand快速的操作檔案   everything 快速搜尋硬碟檔案   youdao筆記本   搜狗IME
4) 網路瀏覽   chrome   firefox   ie:據說微軟要拋棄ie品牌,步live,message,msn後塵   搜狗瀏覽器    5) 音視頻映像工具 audition Premiere  photoshop 位元影像 mspaint系統內建的圖片查看工具   字型 svg是一個標準 2D3D模型工具

illustrator 向量圖 PostScript

  11) 其它   fiddler 讀寫/監視網卡   wireshark   Advanced Serial Port Monitor(類似於syterminternal的   portmon ) 讀寫/監視串口   disk investigator(類似於syterminternal的diskview)硬碟工具   spacesniffer 圖形化顯示硬碟檔案     

6  編程實踐(電腦應用)

  1)  2009.1-2010.7開始工作,使用win32(c),mfc(c++) 2)  2010.7-2012.12 接觸了qt,python,mac/ios(object-c) 3)  2013-2--- 接觸了web用戶端編程(js,html/html5,css,),web伺服器編程(c,python,java,php),以及用戶端與伺服器互動技術.更加關注電腦映像軟硬體領域
   以上是一些粗淺思考,希望交流指正-----------------------update log------------------------------------------------------------------------  2014/07/25 09:44 建立文檔2015/02/05 11:11 添加了1 基本概念部分.2015/03/26 16:50 全文措辭微調2015/04/08 16:07 修改電腦硬體部分為一個列表2015/04/14 09:49 全文措辭微調

 

  

 

電腦編程技術藍圖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.