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