|
原文發(fā)布2009年
一位仁兄說的“程序員寫的程序不是算法+語法,而是要能夠滿足用戶需求的工具”,我非常贊同。要想達(dá)到用戶需求就必須從各個(gè)方面來考慮,如業(yè)務(wù)、人機(jī)交互 、效率等方面,而不只是一個(gè)語言(語法)的問題。語言(語法)只是工具,只知語法不知其他,那就真是編程機(jī)器了! 編程機(jī)器在印度高中生經(jīng)過幾個(gè)月培訓(xùn),按照嚴(yán)謹(jǐn)?shù)能浌し椒ǎ由陷^高的管理 ,就可以勝任了!大家相信嗎,我是相信的!談到這里我就不禁說到了國內(nèi)教育界最近在探討的問題“計(jì)算機(jī)科系的畢業(yè)生特別是本科大專生到底出來干啥,如何適應(yīng)社會(huì)要求”。大家也看到了很多計(jì)科系大學(xué)生說精通N種語言,熟悉N種工具,不知道學(xué)校里的其他知識(shí)到哪里去了,甘愿做編程機(jī)器,浪費(fèi)了人民的納稅 ,干高中生能干的事,比較可惜吧!在國內(nèi)現(xiàn)在就是這樣了,看過一則帖子:清華的計(jì)科系畢業(yè)聲在建筑院里搞開發(fā)還不如建筑專業(yè)的畢業(yè)生。說著說著就岔道 了,國內(nèi)的軟件開發(fā)業(yè)到底是需要那些人:如果僅僅是編碼機(jī)器,那我估計(jì)中國硅谷還是做夢(mèng)去吧!
社會(huì)似乎也需要編碼機(jī)器,翻翻招聘廣告,做應(yīng)用開發(fā)的都要求精通某某語言,熟悉某某工具,很少需要懂管理懂軟工的人。以我個(gè)人一點(diǎn)偏激的想法,民族軟件產(chǎn)業(yè)要騰飛,更需要的是能管理使用編碼機(jī)器的人,即管理人員,國內(nèi)軟件產(chǎn)業(yè)編碼機(jī)器已經(jīng)很多了。希望不要惹怒了那些編程高手! System Develop與Application Develop在國內(nèi)到底哪個(gè)能養(yǎng)活你,能賺錢,諸位仁兄想必也知道,況且俺也沒發(fā)現(xiàn)幾家水平高的公司招這方面的人,畢竟OS,DB MS,COMPILER都被國外做了,另外也別跟我談LINUX,畢竟還是少數(shù)燒錢的人做的事情,我先喂飽肚皮再說。我手下的很多搞4GL語言的程序員都想轉(zhuǎn)行學(xué)VC等所謂的更低級(jí)的語言,我總是說“在XX城市,先用4GL工具生存,以后再學(xué)習(xí)VC吧!” ,說的簡(jiǎn)單一點(diǎn)先解決肚子問題。如何判斷自己是否是編程機(jī)器?
1、面對(duì)需求不考慮用戶,只是考慮用那些程序技術(shù)展示自己的語言語法技巧。
2、學(xué)習(xí)了N種語言
3、從來不學(xué)習(xí)或?qū)嵺`軟工
4、語法語言水平在眾人中遙遙領(lǐng)先、特別是一些稀奇古怪的語法。憑著興趣和創(chuàng)造力去干,卻重復(fù)繁瑣的勞動(dòng)。 做著沒有意義——唯一意義是賺錢,而且真是出了半斤力, 拿不足八兩。 終日勞累,卻不能學(xué)自己想學(xué)的。最終結(jié)果是跟不上社會(huì)科技的發(fā)展 ,人已衰老。悲哀!!!
開發(fā)軟件的關(guān)鍵是要有想法,一個(gè)好的想法比什么都重要。尤其是有關(guān)網(wǎng)絡(luò)方面的就更是如此。
入門還可以,但是要繼續(xù)深入了解可能要難點(diǎn)。 未必吧,偶覺得大學(xué)里的高數(shù)、數(shù)理方法之類的,如果你不是做研究的話,應(yīng)該是很少能用到的,不過如果說到離散之類的,倒還是時(shí)不時(shí)的能有點(diǎn)用。現(xiàn)在的程序員比起十年前是不是要花更多的時(shí)間來查幫助呢,系統(tǒng)越來越大,手冊(cè)越來越厚,軟件開發(fā)的周期是不是越來越多的淹沒在查幫助之中了呢
實(shí)際上一個(gè)程序員最終的技術(shù)需要和實(shí)際相結(jié)合。真正在編寫程序到達(dá)一定時(shí)候,語言的使用并不是最大的障礙,對(duì)整個(gè)項(xiàng)目的把握、軟件工程的把握、數(shù)據(jù)庫的設(shè)計(jì)以及執(zhí)行效果的分析等等才是需要進(jìn)一步考慮的東東!否則,為何大多數(shù)公司到要求有編程經(jīng)驗(yàn)了!這些不是程序員必須學(xué)的。但數(shù)據(jù)結(jié)構(gòu)、編譯原理、操作系統(tǒng)原理等是必須要學(xué)好的,英文的多看,不懂計(jì)算機(jī)英語可不行。其實(shí)我不是什么中專生,而是我讀的中學(xué)和一個(gè)私人辦的電腦學(xué)校聯(lián)合開的電腦專業(yè)(并不是我中考考的差,而是這個(gè)學(xué)校太貪錢了,才被錄取到這里,惱火!我們班里中考成績(jī)從兩百多到四百多的都有,我就是四百多分(重理輕文的結(jié)果,要不然...)。當(dāng)時(shí)讀書的時(shí)候,我是班里的高手(其實(shí)只是比其它同學(xué)懂而已),大家叫我DOS,因?yàn)楫?dāng)時(shí)學(xué)的都是DOS的內(nèi)容。畢業(yè)后還沒有對(duì)編程很感興趣,只想找一個(gè)電腦的工作就可以了,哪怕是打字的。可是看報(bào)紙,去人才中心,看到都是要大學(xué)的,為此感到很失望,也對(duì)電腦失去了興趣。后來學(xué)校打電話到我家,說廈門廈華公司要招工,要不要去,我很快就答應(yīng)了,因?yàn)楫?dāng)時(shí)沒工作,天天呆在家里。后來打工的時(shí)候,天天象一個(gè)機(jī)械人一樣,重復(fù)著同一道工序。因此經(jīng)常在深夜的時(shí)候,思索著自己的未來,由此重新生起了對(duì)電腦的感情。因此經(jīng)常買電腦雜志和報(bào)紙看(可以堆成一座山了)。由于離我住的地方不遠(yuǎn)處,有一個(gè)電腦培訓(xùn)的,所以經(jīng)常到那里上機(jī)。而在學(xué)校里學(xué)過的軟件也只有FOXBASE和WPS,其它的不值一提,所以上機(jī)經(jīng)常用foxbase,直到這時(shí)候,才對(duì)編程產(chǎn)生了濃厚的興趣。一年后,自已買了一臺(tái)電腦,開始認(rèn)真學(xué)習(xí)編程。由于我是屬于職業(yè)中專的,因此經(jīng)常想,就算學(xué)得再好也沒有用,所以想考程序員,而考程序員要懂得C語言,所以就學(xué)習(xí)Turbo C。學(xué)完了,學(xué)數(shù)據(jù)結(jié)構(gòu),同時(shí)看《C高級(jí)實(shí)用程序設(shè)計(jì)》,澳門回歸和2000年的兩個(gè)晚上,我都是在編程中度過的。由于我這個(gè)人對(duì)書很感興趣,經(jīng)常在星期六、星期日去書店,而在書店里,也是看編程方面的書,而看到的編程書籍大部分都是Windows方面的,為此也經(jīng)常思索著學(xué)DOS編程到底有沒有用。后來,春節(jié)放假(要2月13日上班)回老家,天天去新華書店(正月初一也去),看到也都是Windows編程方面的書多得像狗屎一樣,所以就下決心學(xué)Windows編程。因此正月初四(快餐店還沒有開張)就去廈門了,很快買了Delphi的書和D版Delphi5,瘋狂地學(xué)習(xí)(到目前為止,買了8本Delphi的書,因?yàn)閲说膶懙臅鴮?shí)在太爛)。而由于遇到不懂的又不知道怎么辦,為此想到了網(wǎng)絡(luò),但在外打工不可能上網(wǎng)(上網(wǎng)吧太貴),所以就辭職了(4月21日)。現(xiàn)在,程序員考試快到了,是報(bào)還是不報(bào)一直猶豫不覺。困此才有此問題。打工的歲夜,我永遠(yuǎn)不會(huì)忘記,因?yàn)楦冻鎏嗔耍彩チ颂啵▔牧藘蓚€(gè)光驅(qū),瘦了幾斤)。直到現(xiàn)在,腦海里還不時(shí)浮現(xiàn)起那幾個(gè)無眠的夜晚。忠心感謝大家,我不認(rèn)為編碼的人就是機(jī)器,而系統(tǒng)分析就不是機(jī)器,其實(shí)系統(tǒng)分析員就是銷售的機(jī)器,所有職員有是老板的機(jī)器。它們之間這是不同工種吧了,當(dāng)然對(duì)系統(tǒng)分析要求要高一些,薪水也高一些,但更讓人佩服的是銷售,是他們驅(qū)動(dòng)了整個(gè)的運(yùn)作。我也是個(gè)中專生,還是學(xué)機(jī)械的(后來自學(xué)了計(jì)算機(jī)),我非常了解在傳統(tǒng)的制造業(yè)是如何的規(guī)范,設(shè)計(jì)人員設(shè)計(jì)圖紙,然后經(jīng)審核,再到車間試樣,再根據(jù)情況,修改圖紙,如此反復(fù)幾次后才能一個(gè)產(chǎn)品定型。而在軟件界,就沒那么好了,領(lǐng)導(dǎo)會(huì)說,這個(gè)你做,那個(gè)他做,也沒有經(jīng)過很細(xì)的分析(國內(nèi)很多都是這樣)。在我們這里也沒有系統(tǒng)分析員,每個(gè)人都是設(shè)計(jì)員,也是編程員,雖然這樣對(duì)個(gè)人來說,能學(xué)到很多東西,但不利于項(xiàng)目。我國的軟件過程水平,確實(shí)令人擔(dān)憂,目前為止只是幾個(gè)人十幾個(gè)人的小軟件,還沒有能拿得手的大型軟件。至于中專生編程問題,我認(rèn)為只要入了這個(gè)行,就不會(huì)比本科生差,因?yàn)閷?duì)他來說沒有優(yōu)越的學(xué)歷條件,那么只好埋頭苦學(xué),但這正好適應(yīng)當(dāng)前計(jì)算機(jī)軟件迅速發(fā)展的今天,學(xué)歷只能代表過去和基礎(chǔ),更需要的是有能力的人、解決問題的人、實(shí)干的人。對(duì)我來說確實(shí)有時(shí)有點(diǎn)自卑,沒有上過高中和大學(xué)(由于那個(gè)年代,我只知道能為父母減少一點(diǎn)負(fù)擔(dān)就行了), 所有我一直在努力的學(xué)習(xí)(CORBA, UML, Java, 軟件過程等),目前為止我并沒有覺得我的構(gòu)架能力和編碼水平比他們差,只是覺得E語言實(shí)在太差。讀過計(jì)算機(jī)本科又如何?我有幾個(gè)同學(xué)到銀行去搞業(yè)務(wù)了,有同學(xué)任教,有同學(xué)收稅去了......60多個(gè)人真正現(xiàn)在搞計(jì)算機(jī)的還就只有幾個(gè)人,再看看當(dāng)時(shí)這些計(jì)算機(jī)本科生的畢業(yè)設(shè)計(jì),//faint有的人到最后連VB都搞不定,但他們什么編譯原理啦什么組成原理啦什么軟件工程啦學(xué)的(應(yīng)該是考試的分?jǐn)?shù))真還不錯(cuò),至少我感覺有些概念比我清楚。所以我覺的中專生并不比一般大學(xué)生差(當(dāng)然有些重點(diǎn)學(xué)校除外//hehe),有時(shí)中專生有更大的壓力逼迫自己去學(xué)習(xí),學(xué)歷不是重要的,關(guān)鍵是一個(gè)人的素質(zhì)。我們不能將目標(biāo)定位在做程序員或編碼員(Coder)上,光會(huì)寫代碼有什么用?那叫“編碼員”,在國外是屬于體力勞動(dòng)的,不像國內(nèi),會(huì)寫程序的就叫高科技。重要的是分析問題、解決問題和規(guī)劃的能力,系統(tǒng)分析、系統(tǒng)設(shè)計(jì)及項(xiàng)目規(guī)劃才是正途。這就需要學(xué)習(xí)所謂的基礎(chǔ)課程了,如:軟件工程、離散數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)等等。從VB到現(xiàn)在開始學(xué)BC后,一個(gè)人搗鼓了幾天也沒有什么新發(fā)現(xiàn)。根本不知道VC的編程思想是什么,請(qǐng)大蝦們告訴我,它和VB的差別真是太大了。VC的博大在于MFC的操縱,它是Win32API的封裝。思想在于怎樣了解MFC的內(nèi)幕,它的運(yùn)行機(jī)制。差別也大,差別也不大!這要看你對(duì)API的理解了,雖然VC++的可視化沒有VB的好,但是不是絕對(duì)沒有的,對(duì)話框的編輯是跟VB一樣的,不過不是像VB那樣放在第一個(gè)界面罷了,VC++的博大精深是VB難以望其項(xiàng)背的!:)而且VC++是完全面向?qū)ο蟮木幊坦ぞ撸鳹B是不夠完全的面向?qū)ο缶幊坦ぞ撸籚C++是完全編譯語言,VB是本地編譯語言,不夠完全;VC++效率高,封裝性好,繼承性高,VB效率相對(duì)低了很多,但界面友好;二者只能取其一,或者使用VC++,VB輔助(因?yàn)閂B開發(fā)快),當(dāng)然Delphi,BCB也是不錯(cuò)的選擇。
程序員不應(yīng)依賴開發(fā)工具,程序員更應(yīng)該擁有的是一種思維、一種精神、一種觀念。就像Richard.M.Stallman一樣,有自己的精神,為自由軟件而奮斗。就像求伯君,為民族軟件的振興而奮斗。這才是真正的程序員。
應(yīng)該說,他們更注重的不是技術(shù),而是軟件的思維,軟件的靈魂!!我剛學(xué)VC的時(shí)候,還沒有上網(wǎng),身邊也沒有一個(gè)可以問的朋友,所以大部份都是自己啃的,那種感覺真是很痛苦。現(xiàn)在在網(wǎng)上就不同了,可以得到太多的資料了,而且還可以得到在線幫助,但這些都不是學(xué)習(xí)的關(guān)鍵。相信各位也知道VC的難度,并不是那么容易上手的,所以要想學(xué)會(huì)、學(xué)好VC,靠外力是不可能的,主要得靠自己。自己要有一份難得的毅力,對(duì)編程的狂熱也可以在一定程序上起到幫助,我就是這樣的。起初,沒有人幫我,我學(xué)習(xí)VC是三天打魚兩天曬網(wǎng),學(xué)習(xí)進(jìn)度很慢,幸好對(duì)編程的執(zhí)著,使得自己堅(jiān)持下來了。如果你從來就沒有接觸過編程,那你學(xué)習(xí)VC的速度可能會(huì)比學(xué)過面向過程編程的人要慢一些,因?yàn)槟阋ダ斫饷罴罢Z句的含義。但只要你努力,并且可以得到別人的幫助,我相信在半年內(nèi)會(huì)對(duì)VC有一定的認(rèn)識(shí)。請(qǐng)學(xué)過面向過程編程的朋友也不要笑,因?yàn)槊嫦蜻^程與面向?qū)ο髮?shí)在是區(qū)別太大了,就拿封裝一詞來說吧,當(dāng)初我是左想右想才想通的。所以不要覺得自己學(xué)過編程,就會(huì)在學(xué)習(xí)VC的道路上比別人輕松。現(xiàn)在有一種現(xiàn)狀應(yīng)該讓我們注意,我發(fā)現(xiàn)有很大一部分初學(xué)者覺得VC是一種語言,C++又是另一各語言。我在和一些初學(xué)者的交談當(dāng)中,察覺到了這一點(diǎn)。有的初學(xué)者竟然還認(rèn)為我學(xué)VC為什么就一定要學(xué)C++?我想這個(gè)問題是我們大家都沒有注意到的一個(gè)問題,就是向初學(xué)者講述C++對(duì)VC學(xué)習(xí)的重要性。我這有個(gè)例子,跟大家講一下。我有個(gè)同學(xué),他接觸編程比我要早,在我還在為VC中"::"符號(hào)怎么標(biāo)記的時(shí)候,他已經(jīng)在學(xué)習(xí)C了。后來,我對(duì)VC稍有理解的時(shí)候,他也發(fā)覺C的跟不上時(shí)代的腳步了。我便提議他從C++語言學(xué)起,可他認(rèn)為自己有C的學(xué)習(xí)功底,根本就用不著再去學(xué)習(xí)C++,可在學(xué)習(xí)VC的當(dāng)中,遇到的困難真是數(shù)不勝數(shù)。最近,他還是去買了一本學(xué)習(xí)C++的書,從頭再來學(xué)習(xí)C++。我希望通過這個(gè)例子,能讓廣大的初學(xué)者知道,C++對(duì)VC學(xué)習(xí)的重要性。
學(xué)習(xí)VC必須有狂熱的編程熱情,否則是很難堅(jiān)持下來的。我周圍就有幾個(gè)這樣的人,他們比我先學(xué)VC近半年,但現(xiàn)在仍然學(xué)不會(huì)。而我現(xiàn)在雖說不是很厲害,但基本的應(yīng)用程序是不在話下,我就是天天看書,上機(jī)實(shí)踐,幾乎所有的時(shí)間都泡在里面,有時(shí)連吃飯都在想。為什么,因?yàn)槲掖_實(shí)想啃下這塊硬骨頭,我不想半途而廢,我覺得學(xué)習(xí)VC不僅僅是學(xué)到了更多的東西,最主要的是培養(yǎng)了我們自己一種堅(jiān)持克服困難的毅力。
對(duì)于VC,我有幾點(diǎn)經(jīng)驗(yàn):
1、技術(shù)為本,語言為次。
2、MFC的單個(gè)類有用,DOC/VIEW要小心。
3、OOP要小心,使用不當(dāng)反而造成大量的工作和糟糕的代碼。
4、如果可能,考慮選擇使用Delphi(CBuilder+VCL)。
5、到了一定程度,一定要學(xué)COM。
要學(xué)VC,必須有對(duì)C++深刻的理解,對(duì)Windwos運(yùn)行機(jī)制的深刻理解,尤其想成為VC高手。舉例,對(duì)于虛函數(shù),不僅要知道有這么一個(gè)東東,更要知道它的內(nèi)存鏡像。這樣才能對(duì)VC中很多的東西舉一反三,事半功倍。本人學(xué)習(xí)VC近2年,但自覺第一年由于心情浮躁,把VC的書翻了一遍又一遍,卻每次都只看了一點(diǎn)就無法再深入。直到畢業(yè)前夕,痛定思痛,克服浮躁,認(rèn)認(rèn)真真的從最基本的開始學(xué),把每一點(diǎn)都搞的水落石出,經(jīng)過三個(gè)月的刻苦,終于大成。直到現(xiàn)在,半月搞定COM/DCOM,都托當(dāng)日刻苦之福,因此勸告想學(xué)VC的朋友,一定要頂住開始的艱難歲月。成功屬于刻苦者。
每個(gè)人都有自己的學(xué)習(xí)方法,也許這種方法對(duì)我來說有用,但不見 得就對(duì)所有的人有用。所以,請(qǐng)不要盲目的跟著別人的學(xué)習(xí)方法學(xué)習(xí),要思考屬于自己的學(xué)習(xí)方法。但我還是會(huì)向大家說出我自己認(rèn)為比較好的一種方法,學(xué)習(xí)編程其實(shí)與學(xué)習(xí)其它東西一樣,要想掌握它,就要實(shí)踐、實(shí)踐、再實(shí)踐。當(dāng)你學(xué)到了一種新的技術(shù)或知識(shí)時(shí),多實(shí)踐是鞏固學(xué)習(xí)的一種最好最有效的方法。. 這個(gè)實(shí)踐不是照著書上的例子做一遍,而是根據(jù)自己的能力,給自己出題,然后去完成它。只有這樣,你才能發(fā)現(xiàn)自己的不足,同時(shí)又增加了自己的編程經(jīng)驗(yàn).。但要成為合格的程序員,光會(huì)寫代碼是遠(yuǎn)遠(yuǎn)不夠的,更重要的是思考,謀定而后動(dòng),是不變的真理。
在我的理解,VC只是一個(gè)編程工具,就如BC、BCB、Delphi一樣,其實(shí)對(duì)于編程最根本的就是三個(gè)方面,語言、開發(fā)包、 操作系統(tǒng)API,他們?nèi)齻€(gè)方面應(yīng)該說是相對(duì)比較獨(dú)立的。
VC是MS開發(fā)的,所以針對(duì)的是Windows APO,你可以不會(huì)C++, 也可以在VC下用C寫出很優(yōu)秀的程序,當(dāng)然如果你比較熟練C++, 并且熟悉開發(fā)包MFC的話,工作可能要輕松不少。所以在我看來,學(xué)習(xí)的過程可以是這樣的:
1、先學(xué)習(xí)C或C++,在Windows的Console環(huán)境下編寫不太深入涉及API的程序。
2、在基本上掌握了語法之后,開始接觸簡(jiǎn)單的系統(tǒng)API,學(xué)習(xí)Windows的編程原理和機(jī)制;
3、在可以編寫簡(jiǎn)單的菜單程序,可以簡(jiǎn)單地在WM_PAINT下操作GDI函數(shù)后,開始學(xué)習(xí)MFC。可以從Step tourist學(xué)起,看MFC的源代碼,理解幾個(gè)關(guān)鍵的宏的定義與實(shí)現(xiàn),特別是MESSAGE MAP。在學(xué)習(xí)的過程中為了給自己增加點(diǎn)挑戰(zhàn),盡量不要使用Resource Edit,試著自己編碼實(shí)現(xiàn)控件的創(chuàng)建,消息的響應(yīng)。再就是看自己的造化了,動(dòng)手做一些小工具,特別是自己平常需要的,對(duì)自己的提高也應(yīng)該是很有幫助。 究竟我們要的是結(jié)果!良好的分析問題、高效清晰地肢解問題的能力才是我們真正要不斷學(xué)習(xí)的吧。
和學(xué)習(xí)其他知識(shí)一樣,重要的是獲得提出問題、分析問題、解決問題的能力,不是為編程而學(xué)習(xí)。你具有什么樣的思想,就會(huì)寫出什么樣的程序。學(xué)一門語言,不能僅僅是語言,要注重語言背后的思想方法,看他是如何來解決某一問題的,為什么要這樣去做,他總是要符合客觀事實(shí)的,就像人說的話一樣,存在某種邏輯,數(shù)據(jù)的組織,信息的傳遞,靠你自己的頭腦去建立,然后看C++中有什么可以幫你的,該怎么樣用他來表達(dá)自己的想法。只要你認(rèn)真實(shí)踐,努力去做,尋求樂趣,就會(huì)達(dá)到目標(biāo)。我雖然真正認(rèn)真學(xué)習(xí)編程的時(shí)間不長(zhǎng),但現(xiàn)在我是認(rèn)真的,就有了以上的體會(huì)。
學(xué)習(xí)VC++有相當(dāng)?shù)膬?nèi)容要學(xué),而最后的深度則看個(gè)人的悟性與勤奮了。
1)掌握最新標(biāo)準(zhǔn)的C++(2個(gè)月)
如果曾經(jīng)在大學(xué)里自以為學(xué)過C/C++,還對(duì)dynamic_cast/static_cast/template/try/catch/throw/stl/...感到陌生,那你該Refresh一下新的ANSI C++標(biāo)準(zhǔn)了(此與VC++無甚關(guān)聯(lián),G++/BCB均有所支持)。
2) 學(xué)習(xí)SDK編程;:-O (6個(gè)月) 痛苦是暫時(shí)的,必要的,堅(jiān)持就是勝利! 建議用Lccwin32/Masm32/Tasm編寫小而精的工具軟件; ("Windows Programming Guide." "Advanced Windows programming ")
3) 研究MFC源代碼(6個(gè)月)
不要被一大堆的宏所蒙蔽,just track and dig into it!! 在知道MFC如何擴(kuò)展,包裝SDK之后,自可功力漸進(jìn),不被其MFC系統(tǒng)框架所困繞。("MFC Internals")
4) 研究OLE/COM技術(shù)
COM/ActiveX技術(shù)是MS的核心技術(shù),只有徹底洞察其理論精髓才可以體會(huì)現(xiàn)在的操作系統(tǒng)的技術(shù)趨勢(shì),以不變應(yīng)萬變。("Inside Ole 2")
***幾點(diǎn)建議***:
1) Delphi/BCB/VB可以很快構(gòu)筑界面,但對(duì)于想真正學(xué)習(xí)、理解系統(tǒng)不是一個(gè)好的平臺(tái),但如果有時(shí)間讀一讀VCL的源碼,看看Borland是如何封裝系統(tǒng)的,也可借鑒不少。
2) 學(xué)習(xí)ASM對(duì)理解C++有很大益處。Soft-ICE也是和VC++結(jié)合在一起的好工具。
3) 語言本身是皮毛,算法是筋骨;無論高級(jí)語言如何發(fā)展,在理解操作系統(tǒng)的基礎(chǔ)上不斷自我創(chuàng)新的能力是源源不斷的;如果精髓一旦了然于胸,選擇何種開發(fā)工具都可以駕御,一見如故了。
每個(gè)人學(xué)習(xí)的過程都會(huì)不同吧,我在98從TC轉(zhuǎn)向VC時(shí),對(duì)Windows的消息機(jī)制一點(diǎn)概念也沒有,對(duì)著個(gè)MFC不知所措,幾個(gè)月下來一點(diǎn)進(jìn)展也沒有。我于是暫時(shí)轉(zhuǎn)向Win32位編程。整整一年時(shí)間吧,我就是與API打交道,連編輯菜單條對(duì)話框等資源文件時(shí)也用Uedit32手工編寫,為的是希望能對(duì)編譯器的全過程有個(gè)感性的了解。之后我再轉(zhuǎn)向MFC時(shí),果然發(fā)現(xiàn)兩者是相通的,雖然有一定的區(qū)加,不過有了Win32位編程的基礎(chǔ)再看MFC 時(shí)會(huì)發(fā)現(xiàn)它比Win32位編程要方便了太多。現(xiàn)在市面上的VC書很多,不過大多是入門書。我以為要精通VC(只是以為,本人自已距精通還遠(yuǎn)的很)應(yīng)該多看多寫程序,看書只能是入門,會(huì)用了而已。我不贊成濫用ActiveX,一來我以為它的性能很成問題,真是又大又慢又不穩(wěn)定(可能是我有點(diǎn)偏激了吧),二來用了它您的程序今后就要被別人牽著鼻子走了。有次我用了個(gè)控件,程序都寫了大半了,它給我來個(gè)繼續(xù)使用請(qǐng)支付333美元,我兩個(gè)多月的工錢,煩不煩人?現(xiàn)在我盡可能用別人寫的類源代碼(我已收集各類代碼3~400MB了),一樣用起來方便,還能邊用邊學(xué),必要時(shí)還能自已改造。我以為在現(xiàn)代的網(wǎng)絡(luò)時(shí)代,資料到處都有,無論什么先進(jìn)的技術(shù),今天我不會(huì)我只要查到資料,快的學(xué)上幾天慢的一兩個(gè)月我也能學(xué)會(huì),現(xiàn)在已沒有寫不出的程序了,寫不出是因?yàn)槟銢]有耐心寫完它。我以為現(xiàn)在的程序員不一定要多么聰明,而更需要他有完成枯燥項(xiàng)目的耐心,找BUG的細(xì)心,對(duì)于金錢的平常心(不要為了早日拿到錢而趕進(jìn)度),最后最重要是有顧全大局,團(tuán)隊(duì)協(xié)作的精神。 最后,王靖朋友的經(jīng)歷與我實(shí)在是有點(diǎn)相似,算是同病相伶吧,真心祝您早日實(shí)現(xiàn)自已的人生目標(biāo)!學(xué)習(xí)VC是一項(xiàng)費(fèi)時(shí)費(fèi)力的艱苦學(xué)習(xí)過程。為了真正用好VC,你不得不先從OOP開始學(xué)起,也許瀏覽一本純理論的書要更有意思。 你將從另外的角度考察OO思想。接下來學(xué)習(xí)C++,學(xué)習(xí)WindowsAPI,學(xué)習(xí)MFC,剖析MFC,擴(kuò)充MFC,創(chuàng)造自己的類庫(不要企圖寫一個(gè)和MFC同重量級(jí)的類庫)。如果能夠精通Microsoft C編譯器的各種參數(shù),你就可以開始研究微軟C/C++語言編譯器的進(jìn)化歷史(結(jié)合各種背景知識(shí))。 掌握了編程的思想,征服VC只是時(shí)間問題。
學(xué)習(xí)VC是接受微軟技術(shù)體系的過程,所需要學(xué)習(xí)的不僅僅是C++、MFC,需要學(xué)習(xí)所有微軟的技術(shù),包括Windows編程,Win32系統(tǒng)(實(shí)際上Win32系統(tǒng)實(shí)現(xiàn)了很多我們?cè)谄聊簧夏芸吹降臇|西,最起碼NT的內(nèi)核并不大),COM(深入研究它,理解對(duì)象是如何跨越進(jìn)程邊界的,最終能夠自如地在Exe中實(shí)現(xiàn)自己定義的接口才算到家了。不過這多少有些不太必要。),DCOM,ActiveX,Windows DNA... 如果你想成為大拿,學(xué)吧,沒完沒了。最起碼,使用VC,你甚至于可以開發(fā)自己的操作系統(tǒng)(當(dāng)然與MFC沒有一點(diǎn)關(guān)系)。
it知識(shí)庫:如何成為一名優(yōu)秀的程序員,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。