版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一個程序員給初學(xué)編程人的建議一個程序員給初學(xué)編程人的建議本篇文章是作者多年來的一些感受,主要寫給那些想學(xué)習(xí)程序設(shè)計而又很迷惘的朋友,希望可以帶來一點幫助。我第一次接觸電腦是在小學(xué)二年級的時候。那時純粹是因為喜歡打電子游戲,聽別人說電腦上的游戲十分好玩,于是就漫漫開始與之接觸了。在三年級時父母出于我對計算機(jī)濃厚的興趣送我去了一個BASIC編程學(xué)習(xí)班,從那時起我才真正開始走上編程這條不歸之路。雖然說現(xiàn)在程序設(shè)計這門專業(yè)在社會上很熱,競爭十分
2、激烈,但是這只是學(xué)習(xí)編程的人比較多而已。真正能夠掌握以至于精通的人實際上很少,畢竟中國的軟件業(yè)才剛剛起步不久?,F(xiàn)在社會對優(yōu)秀的程序設(shè)計人員的需求量還是相當(dāng)大的,但是前提是必須要優(yōu)秀。我自己雖然也談不上優(yōu)秀,但多少還是有些感觸。在這里想講述自己對于一般程序員和優(yōu)秀程序員之間在技術(shù)上的一些認(rèn)識(什么敬業(yè)精神生活態(tài)度我就不多說了):首先作為一個優(yōu)秀的程序員,數(shù)學(xué)是十分重要的。數(shù)學(xué)是自然科學(xué)的基礎(chǔ),計算機(jī)科學(xué)實際上是數(shù)學(xué)的一個分支。數(shù)學(xué)主要能讓
3、人懂得一種分析問題的方法,然后再通過編程去實現(xiàn)它。計算機(jī)內(nèi)部的許多原理也都牽涉到比較復(fù)雜的數(shù)學(xué)知識。它是我們用來解決現(xiàn)實問題的最高效的工具。很多學(xué)習(xí)編程的朋友對數(shù)學(xué)覺得不屑一顧,覺得對于編程沒有什么關(guān)系。實際上優(yōu)秀程序員和一般程序員拉開檔次很大一個程度上就是取決于對數(shù)學(xué)的能力。一些項目有時需要很復(fù)雜的數(shù)學(xué)建模和利用數(shù)學(xué)對于系統(tǒng)效率進(jìn)行分析,而這些項目對于一般的程序員是很困難的。正確應(yīng)用數(shù)學(xué)知識有時候能使你的程序的效率產(chǎn)生質(zhì)的飛躍。現(xiàn)在的
4、程序員在數(shù)學(xué)上普遍是薄弱環(huán)節(jié),這點是大家應(yīng)該引起足夠重視的。當(dāng)別人對于這些項目感到無從下手,而你卻能夠完成,這個時候你的價值也就表現(xiàn)出來了。真正優(yōu)秀的程序員是能夠最基本的一點就是要能夠通過自己的知識來解決一般程序員所無法完成的問題。而數(shù)學(xué)能力就是一個很重要的環(huán)節(jié)。其次就是要對數(shù)據(jù)結(jié)構(gòu)引起足夠的重視。如果說計算機(jī)專業(yè)的學(xué)生與非計算機(jī)專業(yè)的最根本的差別絕對是數(shù)據(jù)結(jié)構(gòu)(數(shù)學(xué)大家都一樣學(xué)了,主要看你自己學(xué)得好壞)。對數(shù)據(jù)結(jié)構(gòu)的掌握與運用能力是衡
5、量你編程能力的一個很重要的指標(biāo)。有的人對于看了鏈表,棧,樹,廣義表這些東西就頭痛。然而這些東西往往能使你的程序的效率比別人高出百倍。由于一直搞信息學(xué)競賽,到了大學(xué)又搞ACM,所以我對數(shù)學(xué)和數(shù)據(jù)結(jié)構(gòu)都掌握得相對較好。這使我在應(yīng)聘與工作中明顯感到勝人一酬。記得自己大學(xué)時去一家公司應(yīng)聘的經(jīng)歷,當(dāng)時去應(yīng)憑的還有3個人,有2個大學(xué)畢業(yè),有個也工作了一段時間了。他們幾個都在大講自己的能力如何之強(qiáng),會使用的語言及編程工具如何之多,經(jīng)驗如何之豐富。按理
6、說我應(yīng)該是資質(zhì)最淺的。當(dāng)時也是初生牛X不怕虎,也就硬著頭皮去了。當(dāng)時面試的題目是一個公司的資金管理項目的一個問題,要求每個人都在思考后給出自己的設(shè)計方案。其中比較核心的一個問題就是要計算一個資金最小波動值的問題,給出的數(shù)據(jù)量相當(dāng)大,對效率要求很高。對于整個程序的面向?qū)ο蠡姆治鑫覀儙讉€都是差不多的,畢竟這些東西在學(xué)校里是很重視的,而且不是真正的難點。然而到了最關(guān)鍵的問題時其余的人都卡殼了,有兩個是用簡單的雙重循環(huán),時間復(fù)雜度(N^2),
7、慘不忍睹。還有一個在冥思苦想了好一陣以后說用樹,具體技術(shù)細(xì)節(jié)又講不清楚,效率分析也很馬虎。只有我當(dāng)時很快就給出了采取AVL樹的方案,并且利用高等數(shù)學(xué)推導(dǎo)作出了很詳細(xì)的效率分析和時空換算,并提出了引入?yún)R編的方法。很自然的我得到了這分工作。在這里大家顯然可以看到數(shù)學(xué)和數(shù)據(jù)結(jié)構(gòu)對于一個優(yōu)秀程序員是多么重要,它們是和一般的程序員打開檔次的最關(guān)鍵的地方。這樣向“棗子”碰到的那種情況應(yīng)該很輕松的就可以想到。如果你是一位想學(xué)習(xí)編程的朋友,我經(jīng)過多年的
8、學(xué)習(xí)總結(jié)出來了一個學(xué)習(xí)的線路希望對你有所幫助。要學(xué)習(xí)編程是要有很大恒心和毅力的,首先你要明確自己的目標(biāo),想好自己編程是為了干什么。如果你學(xué)習(xí)僅僅只是一時想編出QUAKE和成為比爾蓋次的沖動,那么我勸你還是應(yīng)該還是不要開始學(xué)習(xí),應(yīng)為這樣的目標(biāo)很難支持你日后大量的學(xué)習(xí)。而且你的年齡不能太大(最好是中學(xué)或者大學(xué)生)。如果你想好目標(biāo)并決定開始奮斗,那就讓我們開始吧。如果你一開始對電腦一無所知,那么你應(yīng)該先熟悉一些電腦的一些最基本的原理和操作,這
9、個不需要特別細(xì)致的學(xué)習(xí),只要大概知道二進(jìn)制和一些基本操作就可以了。接下來你應(yīng)該先學(xué)習(xí)BASIC語言,這個語言并不會耽誤你太多的時間,學(xué)習(xí)它完全是為了入門,讓你對電腦編程有一個比較初步的認(rèn)識。這時候你應(yīng)該多編一些小的程序,知道一些最基本每條語句的功能,搞清楚一些基本的數(shù)據(jù)結(jié)構(gòu)(尤其是數(shù)組)對于一些其余用途的函數(shù)最好不要做任何學(xué)習(xí),因為這樣只會分散你的注意力。當(dāng)你能夠可以熟練的運用BASIC編出猴子選大王,以及電腦出題考試之類的程序時,你就
10、可以開始后面的學(xué)習(xí)了。接下來如果覺得自己接受能力強(qiáng)的話就可以開始學(xué)C了(注意不是C),如果感覺有困難也可以先學(xué)Pal過度一下。還有很重要的一點就是千萬不要一開始就學(xué)VB,DELPHI,VC之類的東西,這些東西在一開始學(xué)會對你造成很壞的影響。有可能會把你引入另外一個錯誤的學(xué)習(xí)方向而忽略了真正應(yīng)該掌握的東西。學(xué)C主要是學(xué)過程話的程序設(shè)計,學(xué)會把自己的程序分成許多的函數(shù)(或過程),養(yǎng)成良好的編程習(xí)慣。這時可以多看一下高人的程序,不一定要懂意思
11、,主要是學(xué)會別人程序的格式(比如變量如何起名,怎么劃分函數(shù))。除開掌握基本的控制流語句外,應(yīng)該學(xué)習(xí)一些很簡單的IO函數(shù)和數(shù)學(xué)函數(shù)。C的學(xué)習(xí)主要是你舍棄原來BASIC程序那種把所有語句積成一大堆的風(fēng)格,要學(xué)會使用函數(shù),提高代碼重用性。對于指針之類的東西如果實在看不懂可以先不去管,到后面會有辦法。當(dāng)你能夠比較自如的用C編寫一些小的計算程序時,你就可以開始你的數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)了(數(shù)學(xué)的學(xué)習(xí)主要是在學(xué)校,自己要多用心)。數(shù)據(jù)結(jié)構(gòu)你可以一點一點漫漫
12、看,并不需要專門空出一段時間來專門研究,這樣的目的是讓你能夠很好的掌握它,要學(xué)會用數(shù)據(jù)結(jié)構(gòu)的知識來規(guī)范自己的程序設(shè)計和提高程序的效率。學(xué)完C我認(rèn)為接著最好學(xué)習(xí)匯編。這個或許有許多人都會反對,然而我個人認(rèn)為這樣是很好的。從最基本的DOS匯編開始,買本《IBMPC匯編程序設(shè)計》(清華黃皮)一定要一點一點吃透,實在看不懂就跳,反復(fù)的嚴(yán)讀是一定可以看懂的。匯編是一定要掌握的,因為它涉及到很多最基本的知識。掌握了匯編和對IO有了個很徹底的認(rèn)識后,
13、應(yīng)該去學(xué)編譯原理。這個東西并不要精通,但是一定要知道,在大腦里要有一個這樣的概念,這對你對程序語言的控制能力都有很大的幫助。這樣最基本的學(xué)習(xí)就算完成了。一般智力正常的人前一段東西應(yīng)該都是可以掌握的。接著后面的學(xué)習(xí)就要看你自身的造化了。這個時候你應(yīng)該研究一下數(shù)據(jù)結(jié)構(gòu),不要分散自己學(xué)習(xí)的注意力,要知道數(shù)據(jù)結(jié)構(gòu)是異常重要的(相信我,絕對沒錯)如果你覺得自己已經(jīng)對于樹,連表,堆棧之類的東西和排序,遞歸之類的算法已經(jīng)十分清楚,就可以開始學(xué)習(xí)C了。
14、學(xué)習(xí)前一定要有個正確的認(rèn)識,那就是C和C是兩個不同的東西。學(xué)習(xí)C是為了學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計,這個時候你對于指針應(yīng)該也能夠掌握了(有匯編的基礎(chǔ)),主要抓住C和C相比的一些新特性,對于多態(tài)之類的特性要注意理解掌握,如果沒有搞懂就堅決不要往下學(xué)習(xí)。一些基本的概念掌握以后可以看一些別人設(shè)計的程序,學(xué)習(xí)別人怎么利用面向?qū)ο蟮姆椒▉碓O(shè)計程序的。這個東西也是人之間拉開檔次的一個環(huán)節(jié),可以和數(shù)據(jù)結(jié)構(gòu)放在同等重要的地位。我就見過有的人都大學(xué)畢業(yè)了還搞不
15、懂virtual到底是怎么一回事情。其實我認(rèn)為學(xué)到這里你已經(jīng)為你成為一個優(yōu)秀的程序員打下了很好的基礎(chǔ),你已經(jīng)能夠應(yīng)用C,懂得面向?qū)ο蟪绦蛟O(shè)計,對數(shù)據(jù)結(jié)構(gòu)掌握很好,掌握匯編和編譯原理。接下來的學(xué)習(xí)就是基于操作平臺的了,一般是先學(xué)windows(Microsoft畢竟是老大),先學(xué)win32api,搞請windows基本消息機(jī)制和原理,有匯編基礎(chǔ)基本上不會碰到什么困難。其實只要會了API,其余什么MFC,VCL都是囊中之物了,都不過是對于A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 給程序員的建議
- 一個牛人給java初學(xué)者的建議
- 做一個合格的程序員2008
- 如何成為一個好的程序員
- android一個程序員的入門書
- 怎樣做一個優(yōu)秀的程序員
- 如何做一個優(yōu)秀程序員
- 一個老程序員的心里話
- 如何成為一個好的程序員84392
- 寫給想當(dāng)程序員的朋友 -- 一個還不太老的程序員的體會
- 一個程序員如何月進(jìn)萬金的
- 程序員從初級到高級的10個建議
- 給程序員—提問的藝術(shù)(轉(zhuǎn))
- 給程序員—提問藝術(shù)轉(zhuǎn)
- 給初學(xué)編程者的忠告
- keil創(chuàng)建一個匯編程序的步驟
- 給一個人住的女孩
- 國外程序員推薦每個程序員都應(yīng)讀的書
- 程序員特有的9個壞習(xí)慣
- 程序員歷程
評論
0/150
提交評論