做一名真正的程序員_第1頁(yè)
做一名真正的程序員_第2頁(yè)
做一名真正的程序員_第3頁(yè)
做一名真正的程序員_第4頁(yè)
做一名真正的程序員_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、做一名真正的程序員-你準(zhǔn)備好了么2009.7.21主題1.做一名真正的程序員程序員的基本素質(zhì)程序員的技術(shù)體系程序員的職業(yè)規(guī)劃2.程序是怎樣”碼”成的?設(shè)計(jì)時(shí)編譯時(shí)運(yùn)行時(shí)3.代碼之美代碼規(guī)范2程序員的基本素質(zhì)自信 :I Can Play勇于面對(duì)挑戰(zhàn)謙虛 : I Can Write “Hello World”,But not world master一山更比一山高執(zhí)著:I love this game ,like yesterday,not tomorrow 像昨天一樣喜歡,而不是從明天開(kāi)始激情I m very exiting, The code is very Beautiful and att

2、ract my eyes代碼是如此的美妙,總是讓我激情澎湃3程序員的技術(shù)體系程序員的基本技能API Document獲取有效幫助信息 調(diào)試技能定位Bug,并修正(Fixed)獨(dú)立思考從計(jì)算機(jī)的角度去思考代碼的運(yùn)行過(guò)程Im code, code is me學(xué)會(huì)利用資源google、book、partner技能掌握的三個(gè)階段:讀,改,寫(xiě)4程序員的技術(shù)體系 C#技術(shù)體系在Windows之前,微軟有過(guò)一個(gè)MSDOS操作系統(tǒng),對(duì)于最近幾年走上工作崗位的開(kāi)發(fā)者來(lái)說(shuō),估計(jì)也就是在課本上見(jiàn)到過(guò)。而對(duì)于年長(zhǎng)的開(kāi)發(fā)者來(lái)說(shuō),其開(kāi)發(fā)生涯就是從MSDOS上開(kāi)始的(還記得Turbo C么)。雖然MSDOS并不能認(rèn)為是Wi

3、ndows的前身,但是不可否認(rèn)的是,在Windows的底層確是或多或少存在著MSDOS的影子。在桌面軟件開(kāi)發(fā)的實(shí)踐中,有過(guò)MSDOS使用與開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)人員比從來(lái)沒(méi)有接觸過(guò)MSDOS的開(kāi)發(fā)人員在理解問(wèn)題上與解決問(wèn)題上都技高一籌。這充分體現(xiàn)了一個(gè)完善技術(shù)體系對(duì)開(kāi)發(fā)者的影響。5程序員的職業(yè)規(guī)劃規(guī)劃自己的職業(yè)道路觀察身邊的同事制定長(zhǎng)遠(yuǎn)的計(jì)劃12年熟練掌握一門(mén)開(kāi)發(fā)語(yǔ)言34年熟悉行業(yè)應(yīng)用5年以后執(zhí)行明確的目標(biāo)別拿自己當(dāng)”代碼工人”企業(yè)管理軟件過(guò)程:企業(yè)需求-業(yè)務(wù)分析-詳細(xì)設(shè)計(jì)-程序員實(shí)現(xiàn)如果自己總處于程序員實(shí)現(xiàn)這個(gè)階段,那我們真的就是”代碼工人”了,除了實(shí)現(xiàn),我們還能做些什么6程序是怎樣“碼”成的1.

4、設(shè)計(jì)時(shí)(源代碼)開(kāi)發(fā)工具/環(huán)境:IDE開(kāi)發(fā)平臺(tái): Win32、.NET 、J2EE開(kāi)發(fā)語(yǔ)言: C/C+、C#、Java開(kāi)發(fā)方向: 嵌入式、游戲、商業(yè)軟件(產(chǎn)品)、企業(yè)定制化開(kāi)發(fā)2.編譯時(shí)(編譯程序)預(yù)處理:#using #define #region #if編譯程序: csc鏈接、裝配程序:link二進(jìn)制或中間代碼: .exe, msil3.運(yùn)行時(shí)(可執(zhí)行程序)啟動(dòng)函數(shù)程序入口消息循環(huán)7程序是怎樣“碼”成的一個(gè)源程序有時(shí)可能分成幾個(gè)模塊存放在不同的文件里,將這些源程序匯集在一起的任務(wù),由一個(gè)叫做預(yù)處理的程序來(lái)完成。,有些預(yù)處理程序也負(fù)責(zé)宏展開(kāi),像C語(yǔ)言的預(yù)處理程序要完成文件合并、宏展開(kāi)等任務(wù)。

5、圖中的編譯程序生成的目標(biāo)程序是匯編代碼形式,需要經(jīng)由匯編程序翻譯成可再裝配的機(jī)器代碼,再經(jīng)由裝配、連接編輯程序與某些庫(kù)程序連接成真正能在機(jī)器上運(yùn)行的代碼程序的編譯過(guò)程8程序是怎樣“碼”成的編譯過(guò)程中源程序的各種信息被保留在種種不同的表格里,編譯各階段的工作都涉及到構(gòu)造、查找或更細(xì)有關(guān)的表格,因此需要有表格管理的工作。如果編譯過(guò)程中發(fā)現(xiàn)有源程序錯(cuò)誤,編譯程序應(yīng)報(bào)告發(fā)生錯(cuò)誤的性質(zhì)和錯(cuò)誤發(fā)生的地點(diǎn),并且將錯(cuò)誤造成的影響限制在盡可能小的范圍內(nèi),使得源程序的其余部分可以繼續(xù)被編譯下去,有些編譯程序能自動(dòng)校正錯(cuò)誤,這些工作稱(chēng)之為出錯(cuò)處理。編譯原理9程序是怎樣“碼”成的 C#編譯過(guò)程在Windows之前,微

6、軟有過(guò)一個(gè)MSDOS操作系統(tǒng),對(duì)于最近幾年走上工作崗位的開(kāi)發(fā)者來(lái)說(shuō),估計(jì)也就是在課本上見(jiàn)到過(guò)。而對(duì)于年長(zhǎng)的開(kāi)發(fā)者來(lái)說(shuō),其開(kāi)發(fā)生涯就是從MSDOS上開(kāi)始的(還記得Turbo C么)。雖然MSDOS并不能認(rèn)為是Windows的前身,但是不可否認(rèn)的是,在Windows的底層確是或多或少存在著MSDOS的影子。在桌面軟件開(kāi)發(fā)的實(shí)踐中,有過(guò)MSDOS使用與開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)人員比從來(lái)沒(méi)有接觸過(guò)MSDOS的開(kāi)發(fā)人員在理解問(wèn)題上與解決問(wèn)題上都技高一籌。這充分體現(xiàn)了一個(gè)完善技術(shù)體系對(duì)開(kāi)發(fā)者的影響。10程序是怎樣“碼”成的 程序的入口點(diǎn)及啟動(dòng)函數(shù) Windows應(yīng)用程序必須擁有一個(gè)在應(yīng)用程序啟動(dòng)運(yùn)行時(shí)調(diào)用的進(jìn)入點(diǎn)函

7、數(shù)(Main),操作系統(tǒng)實(shí)際上并不調(diào)用你編寫(xiě)的進(jìn)入點(diǎn)函數(shù)。以C/C+為例子,它調(diào)用的是C/C+運(yùn)行期啟動(dòng)函數(shù)。該函數(shù)負(fù)責(zé)對(duì)C/C+運(yùn)行期庫(kù)進(jìn)行初始化,這樣,就可以調(diào)用malloc和free之類(lèi)的函數(shù)。它還能夠確保已經(jīng)聲明的任何全局對(duì)象和靜態(tài)C+對(duì)象能夠在代碼執(zhí)行以前正確地創(chuàng)建。應(yīng)用程序類(lèi)型進(jìn)入點(diǎn)嵌入可執(zhí)行文件的啟動(dòng)函數(shù)需要ANSI字符和字符串的GUI應(yīng)用程序WinMainWinMainCRTStartup需要Unicode字符和字符串的GUI應(yīng)用程序wWinMainwWinMainCRTStartup需要ANSI字符和字符串的CUI應(yīng)用程序mainmainCRTStartup需要Unicode

8、字符和字符串的CUI應(yīng)用程序wmainwmainCRTStartup、 鏈接程序負(fù)責(zé)在它連接可執(zhí)行文件時(shí)選擇相應(yīng)的C/C+運(yùn)行期啟動(dòng)函數(shù)。如果設(shè)定了 /Subsystem:windows連接程序開(kāi)關(guān),那么該鏈接程序期望找到一個(gè)WinMain或wWinmain 函數(shù)。如果這兩個(gè)函數(shù)都不存在,連接程序便返回一個(gè)未轉(zhuǎn)換的外部符號(hào)的錯(cuò)誤消息。 否則,它可以分別選擇WinMainCRTStartup函數(shù)或wWinMainCRTStartup函數(shù)。11程序是怎樣“碼”成的 應(yīng)用程序的消息循環(huán) 在早年直接用Win32/Win16 API寫(xiě)程序的時(shí)代,消息循環(huán)是我們必須搞懂的第一個(gè)觀念。現(xiàn)在,不管你用是Win

9、dows上面的哪一套Application Framework(MFC、VCL、VB、.NET Framework),甚至Unix、Linux、MacOSX上面的Application Framework,都不太容易看到消息循環(huán)。事實(shí)上,消息循環(huán)依然存在,只是被這些ApplicationFramework包裝起來(lái),深深地埋藏在某個(gè)角落。 1、從_tWinMain內(nèi),程序進(jìn)入主消息循環(huán);2、消息循環(huán)從消息隊(duì)列(Message Queue)中取得一個(gè)消息(透過(guò)調(diào)用GetMessage())。每個(gè)執(zhí)行中的程序都有一個(gè)屬于自己的消息隊(duì)列;3、消息循環(huán)根據(jù)消息內(nèi)容來(lái)決定消息應(yīng)該送給哪個(gè)Windows P

10、rocedure(WndProc),. 這就稱(chēng)為消息分發(fā)(Message Dispatch)。通?!懊恳环N”窗口或控件(control)都有一個(gè)Windows Procedure,來(lái)處理該種窗口/控件的行為;4、Windows Procedure根據(jù)消息內(nèi)容來(lái)決定應(yīng)該調(diào)用哪個(gè)函數(shù)(利用Switch/Case語(yǔ)法);. 5、Windows Procedure處理完,控制權(quán)回到消息循環(huán)。繼續(xù)進(jìn)行2、3、4、5的動(dòng)作;6、當(dāng)消息隊(duì)列為空的時(shí)候,GetMessage()無(wú)法取得任何消息,就會(huì)進(jìn)入Idle(空閑)狀態(tài),進(jìn)入睡眠狀態(tài)(而不是Busy Waiting)。當(dāng)消息隊(duì)列不再為空的時(shí)候,程序會(huì)自動(dòng)醒過(guò)來(lái),繼續(xù)進(jìn)行2、3、4、5的動(dòng)作;7、當(dāng)取得的消息是WM_QUIT,GetMessage()就會(huì)得到0的返回值,因而離開(kāi)消息循環(huán),程序結(jié)束。程序會(huì)利用調(diào)用PostQu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論