|
|
錯(cuò)誤認(rèn)識(shí)1. C/C++太老了,過(guò)時(shí)了,平時(shí)用得很少,現(xiàn)在流行都Java、C#等等。
解惑:不要?jiǎng)硬粍?dòng)覺(jué)得什么東西過(guò)時(shí)了,COBOL還有OO版本面世,還有FORTRAN,LISP,好古老的語(yǔ)言吧,現(xiàn)在還用得很廣呢。楊中科老師經(jīng)常提醒我們“一切語(yǔ)言都是紙老虎,一通百通”,學(xué)校已經(jīng)開(kāi)了 C/C++的課,并且想繼續(xù)深入學(xué)習(xí)編程,那么就繼續(xù)使用學(xué)過(guò)的語(yǔ)言來(lái)學(xué)習(xí),不要再去學(xué)一門(mén)新的語(yǔ)言。等把C/C++弄熟了以后,回頭一看,相信你也能像楊中科老師那樣“半天學(xué)會(huì)一門(mén)新語(yǔ)言”了吧。
錯(cuò)誤認(rèn)識(shí)2.入門(mén)要從OO開(kāi)始,培養(yǎng)用OO方式思考的習(xí)慣。
解惑:初學(xué)者一入門(mén)便擺弄Java、C++等很容易形成誤解,似乎OO=Java, C++...。一切編程語(yǔ)言的根本都是面向過(guò)程的,Java、C++等語(yǔ)言也是支持面向?qū)ο筇匦缘拿嫦蜻^(guò)程的語(yǔ)言。面向過(guò)程就是if……else……、while、for這些東西,Java、C++等語(yǔ)言中難道就沒(méi)有這些語(yǔ)句了嗎?
過(guò)程式語(yǔ)言(或者說(shuō)結(jié)構(gòu)化方法)的精髓不會(huì)消亡,OO里面也不可能擺脫掉一條條的語(yǔ)句、函數(shù)調(diào)用,結(jié)構(gòu)化方法還是需要提倡的。OO方法不是那么容易學(xué)會(huì)的(OO語(yǔ)言的語(yǔ)法弄得很熟練不代表你懂OO),而結(jié)構(gòu)化那套方法,自個(gè)寫(xiě)個(gè)千把行的程序就很能體會(huì)了,我是說(shuō)寫(xiě)個(gè)實(shí)用點(diǎn)的東西,比如試著自個(gè)實(shí)現(xiàn)一些數(shù)據(jù)結(jié)構(gòu)和算法,寫(xiě)幾個(gè)小游戲等。寫(xiě)個(gè)一千行Hello world等于沒(méi)寫(xiě)。
我覺(jué)得方法是實(shí)踐中體會(huì)出來(lái)的,不是看看書(shū)就能學(xué)會(huì)的。過(guò)程式語(yǔ)言的代碼一般比較簡(jiǎn)練,我們編程序最終的目的是要解決問(wèn)題,是要計(jì)算,是要獲取信息,不要被OO, 設(shè)計(jì)模式等迷糊了。
錯(cuò)誤認(rèn)識(shí)3.過(guò)程式語(yǔ)言弄久了,很難轉(zhuǎn)入OO的思維模式
解惑:我以前也沒(méi)有深想過(guò)這個(gè)理由,不過(guò)時(shí)間久了,發(fā)覺(jué)自己不過(guò)是把數(shù)據(jù)和方法集中在一起而已,看著方便,其實(shí)有很多不合理的東西,這里頭就需要OO的理論指導(dǎo)了,還是需要時(shí)間來(lái)體會(huì)。我相信有很多用OO語(yǔ)言的人也不過(guò)是在框架里頭添添代碼,調(diào)用來(lái)調(diào)用去而已,把人類當(dāng)作數(shù)據(jù)和操作的打包器。
個(gè)人覺(jué)得只有在用過(guò)程式方法做了十來(lái)年,編碼上十萬(wàn)行后才有思維定勢(shì),難以習(xí)慣用OO的眼光看待系統(tǒng),然而這個(gè)轉(zhuǎn)變,我仍覺(jué)得比改變一個(gè)人的惡習(xí)容易許多。OO方法不是學(xué)了個(gè)Java,C++等就能掌握的,需要實(shí)踐,需要時(shí)間。過(guò)程式語(yǔ)言也容易培養(yǎng)一個(gè)人嚴(yán)謹(jǐn)?shù)淖鍪聭B(tài)度,比如用匯編, C等寫(xiě)代碼,沒(méi)有命名空間、沒(méi)有一大堆類庫(kù),沒(méi)有模板、沒(méi)有異常, 你要花很多心思處理一些細(xì)節(jié),比如警惕數(shù)組索引越界、懸掛指針、野指針等等,請(qǐng)不要覺(jué)得麻煩,這個(gè)就是計(jì)算機(jī)啊,底層就是這樣的啊。
錯(cuò)誤認(rèn)識(shí)4.別用C了,看我用Java、 VC等輕輕松松就寫(xiě)了個(gè)漂亮的圖形界面
這篇文章是給初學(xué)者看的,也可以給一些浮躁的人看看,初學(xué)編程的人精力應(yīng)該放在數(shù)據(jù)結(jié)構(gòu)、算法上面,盡量多看一些底層的東西,數(shù)字邏輯,操作系統(tǒng),編譯原理,計(jì)算機(jī)組成、體系結(jié)構(gòu),計(jì)算機(jī)網(wǎng)絡(luò)等等基礎(chǔ)知識(shí)。編寫(xiě)GUI拖幾個(gè)控件有什么好吹的,既然你會(huì)拖幾個(gè)控件那么一個(gè)初中都沒(méi)畢業(yè)的也會(huì)拖控件,你和他的差異性體現(xiàn)在哪里?你知道窗口消息怎么回事么,你編的界面是把易用放在第一位呢還是把漂亮放在第一位呢,你的GUI程序容易修改嗎?比如我一會(huì)要加個(gè)button,一會(huì)去個(gè)listbox,你會(huì)不會(huì)改的瘋掉呢?你是不是在OnClick里頭寫(xiě)了大段大段的代碼,做類似“從edit1.text中去掉不是數(shù)字的字符,搜索xxx再轉(zhuǎn)成16進(jìn)制,再?gòu)?fù)制到edit2.text”的事?
學(xué)習(xí)還是找紙版的書(shū)老實(shí)的看比較好,想想你積攢了多少電子書(shū)而又看了多少。
底層不了解,僅多也就飄在別人上頭,別人一閃身,你就得摔下來(lái)。
初學(xué)編程的人一來(lái)就IDE, GUI, Network啥的猛搞,能不浮躁么?還是沉下心來(lái)研究一下基礎(chǔ)知識(shí)吧,我以腦袋擔(dān)保你有生之年會(huì)覺(jué)得他們有用的(呵呵,你轉(zhuǎn)行我就沒(méi)轍了),別看著別人弄JFC, Socket了你還在頭大這個(gè)quick sort怎么就不對(duì)呢就心里惶惶的,你要知道在一批API不被支持后不少人心里空空的沒(méi)個(gè)著落:天啊,我除了那個(gè)就啥都不會(huì)了,郁悶啊,花了我那么久時(shí)間鉆研那套API,嗚嗚。。。。
錯(cuò)誤認(rèn)識(shí)5. C好難啊,我入門(mén)還是從Java,C#開(kāi)始吧
解惑:語(yǔ)言只是表達(dá)思想的工具,不要只局限于一種語(yǔ)言,不要狂熱于某一門(mén)語(yǔ)言。記住楊中科老師說(shuō)那句話“價(jià)值規(guī)律就是——越是容易得到的越不值錢(qián)”。
|
評(píng)分
-
查看全部評(píng)分
|