首先我想說(shuō)的是,人各有志,不是每一個(gè)計(jì)算機(jī)專業(yè)出生的人以后都會(huì)去“編程”的,以前和我同寢室的同學(xué),現(xiàn)在在編程的人只有兩個(gè),另外的六個(gè)有的去當(dāng)公務(wù)員了,有的去類似銀行、法院這樣的地方做計(jì)算機(jī)維護(hù)什么的,還有一個(gè)改行了,現(xiàn)在在做“信貸”。所以你完全有別的選擇,如果對(duì)編程沒(méi)有興趣,建議你還是去干點(diǎn)別的,因?yàn)闆](méi)興趣的話你堅(jiān)持不下去的,就算硬著頭皮去學(xué),永遠(yuǎn)也只能跟在別人后面跑,很痛苦的。另外,考研其實(shí)是個(gè)不錯(cuò)的選擇,只可惜要考“政治”和“英語(yǔ)”,不然我也去考了。:)
如果你是一名本科在校生的話,下面的文章就是為你寫(xiě)的;如果你剛剛開(kāi)始工作不久,也希望下面的內(nèi)容能對(duì)你有所幫助。。。。。。
一。關(guān)于計(jì)算機(jī)本科大學(xué)四年的各種必修課
我首先想說(shuō)的是,并不是每一門(mén)必修課都是有用的,而且確實(shí)如此。
1?!帮@然沒(méi)用”的課是:“大學(xué)物理”,這門(mén)課你只要做到能有60分就行了?!按髮W(xué)物理”我們是大一學(xué)的,由于高中帶來(lái)的慣性,我學(xué)得很認(rèn)真,可是現(xiàn)在回頭來(lái)看,它是最沒(méi)用的一門(mén)課,一點(diǎn)用都沒(méi)有,當(dāng)然,也許某某會(huì)說(shuō)這是個(gè)“素質(zhì)”問(wèn)題,當(dāng)然,如果你這么想的話也行,但是我覺(jué)得如果你不是對(duì)它十分的感興趣的話,還是別在這上面花太多的時(shí)間,時(shí)間寶貴呀。
2。“更顯然沒(méi)用”的如:“XX革命史”、“XX品德”我也就不廢話了。
3?!笆钟杏谩钡?,它們是:“程序設(shè)計(jì)”、“數(shù)據(jù)結(jié)構(gòu)”、“操作系統(tǒng)原理”。這三門(mén)課,我覺(jué)得是整個(gè)大學(xué)四年最有用的三門(mén)課了,而且是直接的有用?!俺绦蛟O(shè)計(jì)”,在我們的課表上全稱叫做“C++程序設(shè)計(jì)”,其實(shí)就是教會(huì)你使用一門(mén)高級(jí)語(yǔ)言,重要性不言而喻;而且學(xué)到后面,比如在學(xué)“編譯原理”的時(shí)候,講到各種詞法分析方法時(shí)它就會(huì)用C++(我看的那本書(shū)用的是C++)來(lái)寫(xiě)一些例子,再接著講,也就是說(shuō)“程序設(shè)計(jì)”這門(mén)課同時(shí)也是用來(lái)學(xué)習(xí)后面很多的課程的工具。“數(shù)據(jù)結(jié)構(gòu)”可以說(shuō)是“編程整件事”要使用到的核心技術(shù)之一,必須要很好的理解、完全掌握這門(mén)課?!安僮飨到y(tǒng)原理”包括了很多東西,都應(yīng)該很好的掌握,比如“進(jìn)程和線程”的基礎(chǔ)知識(shí)如果你掌握的不好,那你以后編“多線程”程序的時(shí)候就會(huì)碰到很多麻煩;而且,只有理解了操作系統(tǒng),才有可能編好應(yīng)用軟件,道理很簡(jiǎn)單,所用的應(yīng)用軟件都必須運(yùn)行在操作系統(tǒng)之上,都必須調(diào)用它的功能。
對(duì)于這三門(mén)課,最好不要看國(guó)人寫(xiě)的教材?!安僮飨到y(tǒng)原理”建議看《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》(第二版),作者Anderw S.Tanenbaum等。此書(shū)中譯本分上下兩冊(cè),上冊(cè)為原理,下冊(cè)為Minix操作系統(tǒng)的源代碼,上冊(cè)必看,下冊(cè)根據(jù)各人情況有選擇的讀一些也是好的。“數(shù)據(jù)結(jié)構(gòu)”建議看《數(shù)據(jù)結(jié)構(gòu)——C++語(yǔ)言描述》,作者William Ford等,但是裘宗燕的一本《數(shù)據(jù)結(jié)構(gòu)——C++與面向?qū)ο蟮耐緩健芬策€行,如果你們學(xué)校用它做教材的話,那你勉強(qiáng)看看也就湊合了。至于“程序設(shè)計(jì)”,書(shū)太多了,《The C++ Programming Language》、《C++ Prime》、《Thinking In C++》、《Thinking In Java》都是好書(shū)。另外,說(shuō)到這里,不得不提到一個(gè)問(wèn)題:以前經(jīng)??吹接腥藸?zhēng)論一個(gè)問(wèn)題,就是C++、Java、(現(xiàn)在又多了一門(mén)C#)這三種語(yǔ)言到底哪種好?我們應(yīng)該學(xué)習(xí)哪一種?這其實(shí)是一個(gè)無(wú)聊的爭(zhēng)論,因?yàn)樗鼈兊?0%都是相同的,所以你用“用來(lái)爭(zhēng)論的這點(diǎn)時(shí)間”已經(jīng)可以在“掌握它們其中之一”的前提下學(xué)完另外的兩種了,等你精通了這三門(mén)語(yǔ)言后,也就不屑于這種爭(zhēng)論了,語(yǔ)言本身只是表現(xiàn)思想的一種手段罷了,它們是何等的容易學(xué)習(xí)!
4?!坝杏谩钡恼n。這些課,不能算是“直接的有用”,也就是說(shuō),它們的很多內(nèi)容你過(guò)幾年也許就忘得差不多了,竟然也不會(huì)影響你當(dāng)前的工作。但是,它們是鋪墊,是基石。對(duì)于這些課,我們的態(tài)度應(yīng)該是,注重基本概念,做到“弄清楚大致的框架”就可以了,但可以忽略不必要的細(xì)節(jié)(但也許考試的時(shí)候會(huì)考到一些細(xì)節(jié),那你就自己看著辦了)。。這些課是:“微機(jī)系統(tǒng)與匯編語(yǔ)言”、“計(jì)算機(jī)組成原理”、“計(jì)算機(jī)網(wǎng)絡(luò)”、“軟件工程”、“數(shù)據(jù)庫(kù)原理”、“計(jì)算機(jī)接口原理”、“編譯原理”、“計(jì)算方法”、“離散數(shù)學(xué)”?!皡R編”還是有用的,它是你理解和學(xué)習(xí)“計(jì)算機(jī)組成原理”和“計(jì)算機(jī)接口原理”的鑰匙?!坝?jì)算機(jī)組成原理”和“計(jì)算機(jī)接口原理”其實(shí)是給你講一遍計(jì)算機(jī)的硬件結(jié)構(gòu),比如CPU內(nèi)部是怎么回事,它是怎么計(jì)算和緩存的,DMA傳輸方式是怎么樣的等等,弄清楚(或者說(shuō)曾經(jīng)弄清楚過(guò),畢竟它們的很多東西你以后會(huì)慢慢忘記的)這些東西心里會(huì)感覺(jué)比較有底?!坝?jì)算機(jī)網(wǎng)絡(luò)”感覺(jué)上和實(shí)際的網(wǎng)絡(luò)編程聯(lián)系不大,也是為你解釋了一些原理性的東西,看了心理比較有底:)。另外“數(shù)據(jù)庫(kù)原理”除了講一些原理以外,一般還會(huì)教你SQL語(yǔ)法,其中最難的是各種“查詢”語(yǔ)法了,但是到了實(shí)際用的時(shí)候你會(huì)發(fā)現(xiàn),這些是不必要的,一般的“復(fù)雜查詢語(yǔ)句”都有工具可以自動(dòng)生成的,不用你自己寫(xiě)的,所以對(duì)此你不必?fù)?dān)心?!败浖こ獭逼鋵?shí)作為一個(gè)本科生來(lái)說(shuō)是不可能很好的理解它的,它必須要有很多實(shí)踐經(jīng)驗(yàn)以后,才能體會(huì)其中的一些道理,而且國(guó)內(nèi)的“軟件工程”教材一般都比較“教條主義”,建議瀏覽一遍即可,知道個(gè)大概,了解一下大型軟件的開(kāi)發(fā)流程是怎么樣的,就可以了(并且也是需要的),至于其中的諸多概念,重在理解,能理解多少就理解多少,千萬(wàn)不要去“背”,沒(méi)有用的?!坝?jì)算方法”這門(mén)課現(xiàn)在可以說(shuō)是實(shí)用價(jià)值劇減,因?yàn)榛旧纤械乃惴ǘ加鞋F(xiàn)成的程序庫(kù)可以調(diào)用的,所以大概了解一下就行了,真到要自己開(kāi)發(fā)算法的時(shí)候,不管你當(dāng)時(shí)學(xué)得再好,肯定還要回過(guò)頭來(lái)看這些書(shū)的,因?yàn)檫@之間你根本不曾使用過(guò)它們,早忘記了。至于“編譯原理”有人認(rèn)為它很重要,我認(rèn)為做個(gè)了解,大致上知道是怎么回事就行了,因?yàn)槟悴惶赡軙?huì)去開(kāi)發(fā)一個(gè)編譯器,但是在實(shí)際中用到的機(jī)會(huì)也是有的,比如我有一次編程時(shí)就需要用到“編譯原理”的知識(shí)來(lái)做一個(gè)“詞法分析程序”,用來(lái)處理用戶輸入的函數(shù)表達(dá)式,再調(diào)用幾個(gè)庫(kù)函數(shù)來(lái)做定積分,但總的來(lái)說(shuō)“編譯原理”只對(duì)很有限的一部分程序的編寫(xiě)起到了實(shí)際的作用,所以,先了解一下,等到用時(shí),再來(lái)細(xì)看。“離散數(shù)學(xué)”是前面提到的“數(shù)據(jù)結(jié)構(gòu)”的理論基礎(chǔ),如果“離散數(shù)學(xué)”學(xué)得好,理解“數(shù)據(jù)結(jié)構(gòu)”會(huì)更容易些,所以還是花點(diǎn)時(shí)間看看吧。
推薦一本書(shū):《編譯原理及實(shí)踐》,作者Kenneth C.Louden,此書(shū)附錄中有一份Tiny語(yǔ)言編譯器的源代碼,對(duì)照著前面的理論來(lái)看就不會(huì)像清華版的《編譯原理》那樣不知所云(我們當(dāng)時(shí)用的就是這本教材,后來(lái)我去買了Kenneth C.Louden的《編譯原理及實(shí)踐》來(lái)看,很多問(wèn)題才豁然開(kāi)朗)。
另外,我想說(shuō)的是,“軟件工程學(xué)”其實(shí)現(xiàn)在才處在一個(gè)初級(jí)的發(fā)展階段,CMM、XP等等的理論打得不可開(kāi)交,各說(shuō)各的理,幾乎達(dá)到了互相對(duì)罵的程度。作為一個(gè)初學(xué)者,特別是“實(shí)踐經(jīng)驗(yàn)缺乏”的初學(xué)者,我建議你對(duì)各種理論多了解,注意我指的是“了解”,不是去“背”其中的條條框框,當(dāng)你了解了大多數(shù)現(xiàn)在的主流軟件工程思想以后,就會(huì)形成你自己的比較客觀的思想了,當(dāng)然還需要結(jié)合一些實(shí)踐的經(jīng)驗(yàn),這是以后的事了。至于看哪些書(shū),太多太多了,自己去找吧。
5。“不太有用”的。其實(shí)說(shuō)這些課“不太有用”已經(jīng)是客氣的了,它們其中的一些其實(shí)就是“沒(méi)用”。這些課是:“自動(dòng)控制原理”、“通信原理”、“電路原理”、“數(shù)字電路原理”、“模擬電路原理”、“復(fù)變函數(shù)與積分變換”、“線性代數(shù)”、“概率論與數(shù)理統(tǒng)計(jì)”、“高等數(shù)學(xué)”。其中,“自動(dòng)控制原理”和“通信原理”我感覺(jué)和實(shí)際的編程相差得實(shí)在是太遠(yuǎn)了,我學(xué)過(guò)它們可是現(xiàn)在全忘了,也不影響我現(xiàn)在的任何東西?!半娐吩怼薄ⅰ皵?shù)字電路原理”、“模擬電路原理”這三門(mén)課講起來(lái)也是計(jì)算機(jī)學(xué)科的基礎(chǔ)課,我只覺(jué)得“數(shù)字電路原理”對(duì)于理解比如“計(jì)算機(jī)組成原理”和“計(jì)算機(jī)接口原理”這樣的課還有一些幫助,但是另兩門(mén)課,我實(shí)在發(fā)現(xiàn)不了它們到底有用在哪里,比如“模擬電路原理”主要是教你“三極管的內(nèi)部構(gòu)造”之類的東西,如果你覺(jué)得這也屬于“必須要掌握的東西”的話,那我也無(wú)話可說(shuō)。另外,“復(fù)變函數(shù)與積分變換”是“數(shù)字圖象處理”(這是一門(mén)研究生課程)的基礎(chǔ),如果以后想到Adobe去工作的人,還是應(yīng)該趁早學(xué)好它們,但是除此以外,好像也是別無(wú)他用?!熬€性代數(shù)”、“概率論與數(shù)理統(tǒng)計(jì)”和“高等數(shù)學(xué)”我倒覺(jué)得是屬于所謂的“素質(zhì)”了,這些東西不懂好像就說(shuō)不過(guò)去了,但是要懂到什么程度,各人自己看了。另,“高等數(shù)學(xué)”也是“復(fù)變函數(shù)與積分變換”的基礎(chǔ)。
6。英語(yǔ)。這門(mén)課很特殊,很有用,總之一句話,現(xiàn)在學(xué)好了以后絕對(duì)不會(huì)后悔。:)
二。關(guān)于課外的學(xué)習(xí)
首先我想說(shuō)的是,如果有志以后成為“優(yōu)秀的程序員”的人,應(yīng)該從大學(xué)就開(kāi)始自己的“課外自學(xué)”了,這是很必要的,否則你會(huì)一開(kāi)始就落在別人后面。另外,不要以為“所有的基礎(chǔ)課都學(xué)得十分的好了”就可以“用比別人短得多的時(shí)間來(lái)學(xué)會(huì)各種實(shí)際的編程技術(shù)”。
(還有,我想說(shuō)明的是,我只了解Windows編程,Linux我不懂。所以你以后如果立志于Linux領(lǐng)域的,我下面的文章對(duì)你不會(huì)有多少幫助)
1。主線。
作為“主線學(xué)習(xí)”。我建議這樣進(jìn)行:首先看這兩本書(shū):《Windows 程序設(shè)計(jì)》(第五版),作者Charles Petzold;《Windows 核心編程》(第四版) ,作者Jeffrey Richter;毫無(wú)疑問(wèn),此兩本書(shū)必看!否則你永遠(yuǎn)也不可能成為一個(gè)專業(yè)的、高級(jí)的程序員(我指Windows程序員)。另,看《Windows 核心編程》以前需要有“操作系統(tǒng)原理”的基礎(chǔ)。同時(shí),如果學(xué)的是C++(在目前,C++在中國(guó)仍然是使用最廣泛的編程語(yǔ)言),只看看你們的教材是肯定不夠的,除了上面說(shuō)的《The C++ Programming Language》等書(shū)(挑一本看就夠了)以外,還應(yīng)該看看《Effective C++ 中文版》,作者Scott Meyers。接下來(lái),我建議你不要去學(xué)MFC了,它已經(jīng)過(guò)時(shí)了,而且確實(shí)不太好用,我回想起當(dāng)年學(xué)MFC的情景,總是覺(jué)得付出和得到不成正比。這時(shí)候可以去學(xué)“.NET”編程了,先學(xué)一下C#的語(yǔ)法(Tom Archer的《C#技術(shù)內(nèi)幕》還算不錯(cuò)),你會(huì)發(fā)現(xiàn)它極容易,可以飛速的看完,因?yàn)槟阋呀?jīng)有了很好的C++基礎(chǔ)了。然后再找一本比較全面介紹“.NET”的書(shū)看起,現(xiàn)在的話,我覺(jué)得《.NET 程序設(shè)計(jì)技術(shù)內(nèi)幕》是個(gè)不錯(cuò)的選擇,作者Jeff Prosise。我這里不是說(shuō)學(xué)“.NET”就看這兩本書(shū)就OK了,但是作為一個(gè)“學(xué)生”,能看到這里就不錯(cuò)了(當(dāng)然你要是覺(jué)得還不夠的話可以去看看Jeffrey Richter的《Applied Microsoft.NET Framework Programming》)。還有,在學(xué)習(xí)各種編程技術(shù)期間編一些自己的小程序是必不可少的,不然的話,你會(huì)學(xué)什么忘什么。最后,再有時(shí)間的話,學(xué)一學(xué)“設(shè)計(jì)模式”(它其實(shí)很重要的,而且慢慢的你會(huì)覺(jué)得它越來(lái)越重要),書(shū)蠻多,《設(shè)計(jì)模式》值得推薦(作者Erich Gramma等),它是“設(shè)計(jì)模式”類書(shū)籍的宗師,很不錯(cuò)的書(shū),“設(shè)計(jì)模式”也是要一些實(shí)踐經(jīng)驗(yàn)作鋪墊的,因此你可能不能完全的理解它。
2。支線。
作為支線,也就是說(shuō)我覺(jué)得它們相對(duì)次要些。并且學(xué)習(xí)它們可以不分先后次序,但是,我還是建議先看完上面說(shuō)的前三本書(shū)(《Windows 程序設(shè)計(jì)》、《Windows 核心編程》、《Effective C++ 中文版》)以后再來(lái)學(xué)下面的東西。
“Java”。。把“Java”作為支線一定會(huì)引起很多人的不滿,或者說(shuō)是憤慨,當(dāng)然,你也可以把它作為主線來(lái)學(xué),用來(lái)替代上面說(shuō)的“.NET”。可是根據(jù)我自己的體會(huì),“.NET”擁有更多的優(yōu)勢(shì),如果你不同意我的觀點(diǎn),當(dāng)然可以去學(xué)“Java”,沒(méi)問(wèn)題。但是作為一個(gè)“初學(xué)者”,我還是建議你兩樣都學(xué)一下,這樣自己才能有比較,才能為自己的將來(lái)選擇一條更適合自己的“技術(shù)路線”。另外,時(shí)間還是多的(主線中才提到了六本書(shū)),而且,我這里說(shuō)的“學(xué)Java”只建議你看一本書(shū):《Thinking in Java》,這本書(shū)可以說(shuō)是入門(mén)的絕佳選擇,至于以后怎么繼續(xù)學(xué)習(xí)“Java”,可以去看看蔡學(xué)庸在CSDN上的專欄文章,里面講得很詳細(xì)了。
“網(wǎng)絡(luò)編程”。。這個(gè)東西我想很多人都是比較向往的。我建議如果想做到對(duì)網(wǎng)絡(luò)編程“比較精通”的話,應(yīng)該去看看《Windows 網(wǎng)絡(luò)編程技術(shù)》(第二版),作者Anthony Jones。這本書(shū)和上面講的《Windows 程序設(shè)計(jì)》屬于同一個(gè)技術(shù)層次,都是用“Windows API”直接編程,學(xué)這類東西的好處是能使你不僅“知其然”而且“知其所以然”。但是,如果立志要學(xué)“Java”的,也可以跳過(guò)這本書(shū),直接看《Java Network Programming》,是O'Reilly的書(shū),作者我忘記了。至于“.NET”方面,我還沒(méi)發(fā)現(xiàn)專門(mén)講網(wǎng)絡(luò)編程講得特別好的書(shū),自己去找找吧。(其實(shí)一般的“.NET”書(shū)籍中已經(jīng)有大量關(guān)于網(wǎng)絡(luò)編程的內(nèi)容了)
“COM”。?!耙郧暗膶W(xué)習(xí)方法”是先看《深度探索C++ 對(duì)象模型》,作者Stanley B.Lippman;再看《COM 本質(zhì)論》(作者Don Box)的前面兩章,然后看《COM 原理與應(yīng)用》(作者潘愛(ài)民),再回過(guò)頭來(lái)看《COM 本質(zhì)論》的后面部分。《COM 本質(zhì)論》的前面兩章講得極好,它用最能讓人理解的方式講述了“什么是COM”,但這本書(shū)的后面部分比較晦澀,如果沒(méi)有一點(diǎn)實(shí)際的“COM程序編寫(xiě)經(jīng)驗(yàn)”,就很難理解了,所以我提到這里要插進(jìn)來(lái)看一看潘愛(ài)民的《COM 原理與應(yīng)用》。但是,這里有一個(gè)問(wèn)題,《COM 原理與應(yīng)用》里的應(yīng)用部分使用的是MFC和ATL(抱歉我又提到了這些過(guò)時(shí)的東西,我只是對(duì)它們太熟悉了),我前面曾建議大家不要去學(xué)MFC了,于是產(chǎn)生了矛盾,請(qǐng)恕我無(wú)知,在當(dāng)前的情況下,我不太能肯定要怎么學(xué)習(xí)“COM”才是最有效的,這里我確實(shí)不能給大家“更新的方法”了。但是現(xiàn)在隨著“.NET”的推進(jìn),“COM”的生存空間似乎是越來(lái)越小了,因此“到底要把COM學(xué)到什么程度”也幾乎成了“到時(shí)候看情況再說(shuō)”的問(wèn)題了。但是,我覺(jué)得無(wú)論如何了解一下“COM的基本思想”還是能帶來(lái)莫大的好處,它太經(jīng)典了!也就是我上面說(shuō)的《COM 本質(zhì)論》的前面兩章。
“DDK”。。所謂“DDK”就是“設(shè)備驅(qū)動(dòng)程序”,這屬于一個(gè)相對(duì)冷僻的方面,但事實(shí)是“正因?yàn)樗淦?,所以這方面的技術(shù)人員的收入還是不錯(cuò)的”,但是“DDK”的知識(shí)對(duì)你學(xué)習(xí)別的很多東西(比如“.NET”、“Java”)都不會(huì)帶來(lái)任何的幫助,它比較獨(dú)立。所以我的建議是“在你還沒(méi)有能力確定以后自己的專攻方向時(shí),不要去學(xué)它”,因?yàn)樗鼘?shí)在也不太好學(xué)。我對(duì)它只是略知一二,所以也只能說(shuō)到這里就作罷了。不過(guò)可以給你推薦一本書(shū):《Programming Microsoft Windows Driver Model》,(作者Walter Oney)。
好了好了,再下面就絕對(duì)要超出“初學(xué)者”的范疇了。其實(shí)學(xué)到這里,再加上你已經(jīng)積累了一定的實(shí)際經(jīng)驗(yàn)了,那下面再要學(xué)些什么,路要怎么走,就一定會(huì)有自己獨(dú)立的想法了。我就不再?gòu)U話了。
三。幾個(gè)初學(xué)者要注意的問(wèn)題
1。無(wú)論在學(xué)基礎(chǔ)課的時(shí)候,還是在學(xué)實(shí)際的編程的時(shí)候,都是重在理解,千萬(wàn)不要死記硬背。比如上面說(shuō)的“軟件工程”就是最好的例子。有一次,我碰到兩個(gè)人正在討論MFC,“甲”說(shuō):“我覺(jué)得MFC真是復(fù)雜,這么多的類和方法,根本不知道怎么去學(xué)。”這時(shí)“乙”表示他也有同感,但是已經(jīng)找到了學(xué)習(xí)的方法,于是“乙”很誠(chéng)懇的對(duì)“甲”說(shuō):“其實(shí)有時(shí)候還是要背一些東西的,你可以去買一本中文版的MFC類庫(kù)手冊(cè),天天背,天天記,慢慢的就好了。”。我當(dāng)時(shí)從旁邊走過(guò),打了一個(gè)冷顫。。對(duì)于MFC這種東西,除了理解還要多用,很多東西自然就記住了,當(dāng)然這么多的類和函數(shù)還是沒(méi)能記住它們的確切名字和用法,但是別著急,你已經(jīng)知道了有哪些類和方法大概是存在的,所以真到用的時(shí)候再到“MSDN”里去找唄,怕什么呢。
2。我前面提到了《Windows 程序設(shè)計(jì)》和《Windows 核心編程》這兩本書(shū)是必看的,它們都是在介紹基于“Win32 SDK” 平臺(tái)(或者說(shuō)是接口)的編程,也就是用“Windows API”直接編程,這是一種十分底層的Windows編程方法。就今天來(lái)說(shuō),學(xué)習(xí)“Win32 SDK”編程的意義更大的在于“使你能夠更徹底的理解基于它們之上的、包裝得更好的、更易于使用和效率更高的各種技術(shù),以便能更好的使用它們”,比如“MFC”、“.NET”等等。如果你一定要在實(shí)際的開(kāi)發(fā)中也直接用“Windows API”來(lái)編程,無(wú)疑是自討苦吃。因此,我們要鼓勵(lì)使用各種開(kāi)發(fā)效率更高的工具,當(dāng)然,理解“Win32 SDK” 平臺(tái)的編程能在你使用這些高級(jí)工具的時(shí)候給你帶來(lái)巨大的好處。“網(wǎng)絡(luò)編程”也是同理,我上面提到的那本《Windows 網(wǎng)絡(luò)編程技術(shù)》也是基于Winsock(它是Win32 SDK的一部分)的書(shū),實(shí)際編程的時(shí)候,你也許不太會(huì)直接去用它。
3。實(shí)踐很重要。這個(gè)道理是很明顯的,比如C++的語(yǔ)法,如果你不去用它的話,就算你當(dāng)初能把整本書(shū)都背下來(lái),到了大四的時(shí)候肯定也忘得差不多了。用的過(guò)程其實(shí)就是熟悉的過(guò)程,在用的時(shí)候可能會(huì)發(fā)現(xiàn)自己某一個(gè)細(xì)節(jié)怎么又想不起來(lái)了,沒(méi)關(guān)系,正常的,再拿來(lái)書(shū)翻開(kāi)看看,如此反復(fù)幾次也就記住了。
4。堅(jiān)持很重要。這里有一個(gè)前提,就是“你是真的對(duì)編程很有興趣”,如果確實(shí)如此,那不用說(shuō)你也會(huì)去不斷的學(xué)習(xí)的。但如果不是這樣,那就很糟糕了,就像我開(kāi)頭的時(shí)候提到的那個(gè)人,他就是“實(shí)在對(duì)編程沒(méi)興趣呀”,所以一直工作的很辛苦,感到身心疲憊,還總是落在別人后面,現(xiàn)在終于不得以該行去作“信貸”了。
5。關(guān)于“高級(jí)程序員”考試。這個(gè)考試其實(shí)是名不副實(shí)的,他分上午場(chǎng)和下午場(chǎng),上午考一些基礎(chǔ)概念,也就是上面提到的那些本科課程中比較重要的幾門(mén)課,考試難度和形式都和你們的期末考試差不多,下午考編程,其實(shí)就和你們的“程序設(shè)計(jì)”期末考試最后的幾道編程題差不多。一句話,考的是很理論的東西,死讀書(shū)的人一般都能通過(guò)的:)。如果你了解到你以后要去應(yīng)聘的公司對(duì)這張證書(shū)比較看重的話,那就花一些時(shí)間去復(fù)習(xí)一下以前的課程,去拿一張證書(shū),像我的兩個(gè)去當(dāng)公務(wù)員的同學(xué)居然也都通過(guò)了這個(gè)考試。但是如果這張證書(shū)不是你就業(yè)的前提的話,我建議你不要在這上面花時(shí)間了,因?yàn)樗?jiǎn)單了,對(duì)提高你的實(shí)際水平?jīng)]有幫助的。當(dāng)然這只是我的個(gè)人觀點(diǎn),沒(méi)有蔑視這項(xiàng)考試的意思。
6。也許你的志向是當(dāng)一個(gè)“技術(shù)總監(jiān)”,或是“XX主管”之類的,也就是所謂的“不寫(xiě)代碼的人”,當(dāng)然,很多人都這么想。但是,請(qǐng)記住,這些人其實(shí)都有著很好的實(shí)際編程經(jīng)驗(yàn),如果沒(méi)有這段經(jīng)歷和積累,他們根本就到達(dá)不了現(xiàn)在的境界,也不能服眾。所以,趁早多學(xué)一些“技術(shù)”是很必要的。
7。最后我想提醒各位,雖然至此你可能已經(jīng)覺(jué)得自己“學(xué)識(shí)滿腹”了,但是千萬(wàn)不要以為自己懂的多了,就開(kāi)始自以為是,開(kāi)始看不起別人了。我曾經(jīng)有幸聽(tīng)過(guò)“錢(qián)能”老師的課,他給我印象最深的一句話就是:“你越學(xué)就應(yīng)該越是覺(jué)得自己無(wú)知啊,怎么這么多東西自己都不懂呢?所以要謙虛啊,要謙虛啊,千萬(wàn)不能學(xué)了一點(diǎn)點(diǎn)東西就自認(rèn)為了不起了?!保ㄟ@是他在課堂上的原話。。。)
分類:
網(wǎng)摘綠色通道:
與我聯(lián)系Rechro關(guān)注 - 1粉絲 - 10
0
(請(qǐng)您對(duì)文章做出評(píng)價(jià))
博主上一篇:
各種計(jì)算機(jī)語(yǔ)言的經(jīng)典書(shū)籍 博主下一篇:
iframe自動(dòng)適應(yīng)其內(nèi)src中內(nèi)容大小posted @ 2006-11-24 14:56
Rechro 閱讀(1217) 評(píng)論(5)
編輯 收藏