頂級(jí)程序員的學(xué)習(xí)過(guò)程_百度文庫(kù)_第1頁(yè)
頂級(jí)程序員的學(xué)習(xí)過(guò)程_百度文庫(kù)_第2頁(yè)
頂級(jí)程序員的學(xué)習(xí)過(guò)程_百度文庫(kù)_第3頁(yè)
頂級(jí)程序員的學(xué)習(xí)過(guò)程_百度文庫(kù)_第4頁(yè)
頂級(jí)程序員的學(xué)習(xí)過(guò)程_百度文庫(kù)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、本篇文章是作者多年來(lái)的一些感受, 主要寫給那些想學(xué)習(xí)程序設(shè)計(jì)而又很迷惘的朋友, 希望 可以帶來(lái)一點(diǎn)幫助。我第一次接觸電腦是在小學(xué)二年級(jí)的時(shí)候。 那時(shí)純粹是因?yàn)橄矚g打電子游戲, 聽別人說(shuō)電腦 上的游戲十分好玩, 于是就漫漫開始與之接觸了。 在三年級(jí)時(shí)父母出于我對(duì)計(jì)算機(jī)濃厚的興 趣送我去了一個(gè) BASIC 編程學(xué)習(xí)班,從那時(shí)起我才真正開始走上編程這條不歸之路。雖然 說(shuō)現(xiàn)在程序設(shè)計(jì)這門專業(yè)在社會(huì)上很熱, 競(jìng)爭(zhēng)十分激烈, 但是這只是學(xué)習(xí)編程的人比較多而 已。 真正能夠掌握以至于精通的人實(shí)際上很少, 畢竟中國(guó)的軟件業(yè)才剛剛起步不久。 現(xiàn)在社 會(huì)對(duì)優(yōu)秀的程序設(shè)計(jì)人員的需求量還是相當(dāng)大的, 但是前提是必須要

2、優(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é)主要能讓人懂得一種分析問(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é)覺得不屑一顧, 覺得對(duì)于編程沒有什么關(guān)系。 實(shí)際上 優(yōu)秀程序員和一般程序員拉開檔次很大一個(gè)程度上就是取決于對(duì)數(shù)學(xué)的能力。 一些項(xiàng)目有時(shí) 需要很

3、復(fù)雜的數(shù)學(xué)建模和利用數(shù)學(xué)對(duì)于系統(tǒng)效率進(jìn)行分析, 而這些項(xiàng)目對(duì)于一般的程序員是 很困難的。 正確應(yīng)用數(shù)學(xué)知識(shí)有時(shí)候能使你的程序的效率產(chǎn)生質(zhì)的飛躍。 現(xiàn)在的程序員在數(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)的掌

4、握與運(yùn)用能力是衡量你編程能力的一個(gè)很重要的指標(biāo)。有的人對(duì)于看了鏈表,棧, 樹,廣義 表這些東西就頭痛。 然而這些東西往往能使你的程序的效率比別人高出百倍。 由于一直搞信 息學(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)如何之豐富。按理說(shuō)我應(yīng)該是資質(zhì)最淺的。當(dāng) 時(shí)也是初生牛 X 不怕虎,也就硬著頭皮去了。當(dāng)時(shí)面試的題目是一個(gè)公司的資金管理項(xiàng)目 的一個(gè)

5、問(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ù)雜度 (N2,慘不忍睹。還有一個(gè)在冥思苦想了好一陣以后說(shuō)用樹,具體技術(shù)細(xì)節(jié)又講不 清楚,效率分析也很馬虎。只有我當(dāng)時(shí)很快就給出了采取 A VL 樹的方案,并且利用高等數(shù) 學(xué)推導(dǎo)作出了很詳細(xì)的效率分析和時(shí)空換算, 并提出了引入?yún)R編的方法。 很自然的我得到了

6、這分工作。 在這里大家顯然可以看到數(shù)學(xué)和數(shù)據(jù)結(jié)構(gòu)對(duì)于一個(gè)優(yōu)秀程序員是多么重要, 它們 是和一般的程序員打開檔次的最關(guān)鍵的地方。 這樣向 “ 棗子 ” 碰到的那種情況應(yīng)該很輕松的就 可以想到。如果你是一位想學(xué)習(xí)編程的朋友, 我經(jīng)過(guò)多年的學(xué)習(xí)總結(jié)出來(lái)了一個(gè)學(xué)習(xí)的線路希望對(duì)你有所幫助。 要學(xué)習(xí)編程是要有很大恒心和毅力的, 首先你要明確自己的目標(biāo), 想好自己編程是 為了干什么。 如果你學(xué)習(xí)僅僅只是一時(shí)想編出 QUAKE 和成為比爾蓋次的沖動(dòng), 那么我勸你 還是應(yīng)該還是不要開始學(xué)習(xí), 應(yīng)為這樣的目標(biāo)很難支持你日后大量的學(xué)習(xí)。 而且你的年齡不 能太大(最好是中學(xué)或者大學(xué)生 。如果你想好目標(biāo)并決定開始奮斗,

7、那就讓我們開始吧。 如果你一開始對(duì)電腦一無(wú)所知, 那么你應(yīng)該先熟悉一些電腦的一些最基本的原理和操作, 這 個(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í), 你就可以開始后面的學(xué)習(xí)

8、了。 接下來(lái)如果覺得自己接受能 力強(qiáng)的話就可以開始學(xué) C 了 (注意不是 C+ , 如果感覺有困難也可以先學(xué) Pascal 過(guò)度一下。 還有很重要的一點(diǎn)就是千萬(wàn)不要一開始就學(xué) VB , DELPHI , VC 之類的東西,這些東西在一 開始學(xué)會(huì)對(duì)你造成很壞的影響。 有可能會(huì)把你引入另外一個(gè)錯(cuò)誤的學(xué)習(xí)方向而忽略了真正應(yīng) 該掌握的東西。學(xué) C 主要是學(xué)過(guò)程話的程序設(shè)計(jì),學(xué)會(huì)把自己的程序分成許多的函數(shù)(或 過(guò)程 ,養(yǎng)成良好的編程習(xí)慣。這時(shí)可以多看一下高人的程序,不一定要懂意思,主要是學(xué) 會(huì)別人程序的格式(比如變量如何起名,怎么劃分函數(shù) 。除開掌握基本的控制流語(yǔ)句外, 應(yīng)該學(xué)習(xí)一些很簡(jiǎn)單的 I/O函數(shù)

9、和數(shù)學(xué)函數(shù)。 C 的學(xué)習(xí)主要是你舍棄原來(lái) BASIC 程序那種 把所有語(yǔ)句積成一大堆的風(fēng)格, 要學(xué)會(huì)使用函數(shù), 提高代碼重用性。 對(duì)于指針之類的東西如 果實(shí)在看不懂可以先不去管,到后面會(huì)有辦法。當(dāng)你能夠比較自如的用 C 編寫一些小的計(jì) 算程序時(shí), 你就可以開始你的數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)了 (數(shù)學(xué)的學(xué)習(xí)主要是在學(xué)校, 自己要多用心 。 數(shù)據(jù)結(jié)構(gòu)你可以一點(diǎn)一點(diǎn)漫漫看, 并不需要專門空出一段時(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)為這樣是很 好的。從最基本的 D

10、OS 匯編開始,買本 IBM PC匯編程序設(shè)計(jì) (清華黃皮一定要一點(diǎn) 一點(diǎn)吃透, 實(shí)在看不懂就跳,反復(fù)的嚴(yán)讀是一定可以看懂的。 匯編是一定要掌握的,因?yàn)樗?涉及到很多最基本的知識(shí)。 掌握了匯編和對(duì) I/O有了個(gè)很徹底的認(rèn)識(shí)后, 應(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ì)沒錯(cuò) 如果你覺得自

11、己已經(jīng)對(duì)于樹, 連表, 堆棧之類的東西和排序, 遞歸之類的算法已經(jīng)十分清楚, 就可以開始學(xué)習(xí) C+了。學(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)之類的特性要注意理解掌握, 如果沒有搞懂就堅(jiān)決不要往下學(xué)習(xí)。一些基本的概念掌握以后可以看一些別人設(shè)計(jì)的程序, 學(xué)習(xí)別人怎么利用面向?qū)ο蟮姆椒▉?lái)設(shè)計(jì)程序的。這個(gè)東西也是人之間拉開檔次的一個(gè)環(huán) 節(jié),可以和數(shù)據(jù)結(jié)構(gòu)放在同等重要的地位。我就見過(guò)有的人都大學(xué)畢業(yè)了還搞不懂 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é) win32 api,搞請(qǐng) windows 基本消息機(jī)制和原理,有匯編基礎(chǔ)基本上不會(huì)碰到什么 困難。其實(shí)只要會(huì)了 API ,其余什么 MFC , VCL 都是囊中之物了,都不過(guò)是對(duì)于 API 的封 裝 而 已 。 VC , C+Builder都 可 輕 松 拿 下 , 這 只 是 開 發(fā) 工

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論