來(lái)源:IT學(xué)習(xí)樂(lè)園 2018-06-17 10:43:40
學(xué)習(xí)編程有幾年了,感覺(jué)走了不少?gòu)澛,而不少的學(xué)弟學(xué)妹又在重蹈我當(dāng)初的覆轍,不免有些痛心。最近在網(wǎng)上也看了許多前輩們的經(jīng)驗(yàn)建議,再結(jié)合自己的學(xué)習(xí)經(jīng)歷在這里談?wù)劵A(chǔ)的重要性,希望幫助大家少走些彎路。
什么是基礎(chǔ)呢?就是要把我們大學(xué)所學(xué)的離散數(shù)學(xué),算法與數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),計(jì)算機(jī)體系結(jié)構(gòu),編譯原理等課程學(xué)好,對(duì)計(jì)算機(jī)的體系、CPU本身、操作系統(tǒng)內(nèi)核、系統(tǒng)平臺(tái)、面向?qū)ο缶幊、程序的性能等要有深層次的掌握?br />
初學(xué)者可能體會(huì)不到這些基礎(chǔ)的重要性,學(xué)習(xí)JSP、DonNet、MFC、VB的朋友甚至?xí)䦟?duì)這些嗤之以鼻,但是一開(kāi)始沒(méi)學(xué)好基礎(chǔ)就去學(xué)JSP或DonNet會(huì)產(chǎn)生很壞的影響,而且陷入其中不能自拔。
我上大二的時(shí)候還對(duì)編程沒(méi)什么概念,就上了門(mén)C++也不知道能干什么,老師說(shuō)MFC也不知道是什么東西,看別的同學(xué)在學(xué)asp.net就跟著學(xué)了,然后就了解到.NET、J2EE、PHP是什么了,就覺(jué)得軟件開(kāi)發(fā)就是用這些了,而上的那些專(zhuān)業(yè)課又與我們學(xué)的SQLServer啊,CSS啊,Ajax啊,毫無(wú)關(guān)系,就感慨啊,還不如回家自學(xué)去就為一個(gè)文憑嗎?
還不如去培訓(xùn),浪費(fèi)這么多錢(qián).于是天天基本上沒(méi)去上什么課,天天就在做網(wǎng)站,幾個(gè)學(xué)期就做了三個(gè)網(wǎng)站。感覺(jué)做這些網(wǎng)站就是學(xué)到些技巧,沒(méi)什么進(jìn)步,這些技巧就好比別人的名字,告訴你你就知道了,網(wǎng)上也都可以搜到。那時(shí)候就覺(jué)得把.NET學(xué)好就行了,搞J2EE的比較難,搞API編程就別想了,操作系統(tǒng)更是望塵莫及了。后來(lái)隨著學(xué)習(xí)的深入和看了網(wǎng)上許多前輩們的建議才對(duì)這些基礎(chǔ)的重要性有所體會(huì)。
雖然.NET或Java的開(kāi)發(fā)并不直接用到匯編,操作系統(tǒng)這些,但是不掌握這些基礎(chǔ)是有很大問(wèn)題的,因?yàn)槟阒恢淙徊恢渌腥,在MFC和.NET里面控件一拖什么都做好了,很方便,但是出了問(wèn)題可能就解決不了,有些在網(wǎng)上搜都搜不到。這就是基礎(chǔ)沒(méi)打好,不知道它的原理就不知道出錯(cuò)的原因。在學(xué).NET的時(shí)候常會(huì)討論那些控件該不該用別人說(shuō)盡量別用也不知道為什么?不讓用是因?yàn)槟阍诟邔娱_(kāi)發(fā),你不知道它的原理出錯(cuò)了你可能解決不了,但其實(shí)是應(yīng)該用的,不然人家開(kāi)發(fā)它干嘛,但要在了解它的原理后去用就會(huì)很方便。
要編寫(xiě)出優(yōu)秀的代碼同樣要扎實(shí)的基礎(chǔ),如果數(shù)據(jù)結(jié)構(gòu)和算法學(xué)的不好,怎么對(duì)程序的性能進(jìn)行優(yōu)化,怎樣從類(lèi)庫(kù)中選擇合適的數(shù)據(jù)結(jié)構(gòu)。如果不了解操作系統(tǒng),怎樣能了解這些開(kāi)發(fā)工具的原理,它們都是基于操作系統(tǒng)的。不了解匯編,編譯原理,怎么知道程序運(yùn)行時(shí)要多長(zhǎng)時(shí)間要多少內(nèi)存,就不能編出高效的代碼。
如果沒(méi)有學(xué)好基礎(chǔ)一開(kāi)始就去學(xué).NET、Java這些越往后就會(huì)覺(jué)得越吃力,它們涉及的技術(shù)太多了,而且不但在更新,對(duì)于三層啊,MVC、ORM這些架構(gòu),你只會(huì)用也不明白為什么用,就感覺(jué)心里虛,感覺(jué)沒(méi)學(xué)好。而你把面向?qū)ο,軟件工程,設(shè)計(jì)模式這些基礎(chǔ)學(xué)好了再去看這些就可以一不變應(yīng)萬(wàn)變。
大家不要被新名詞、新技術(shù)所迷惑.NET、XML等等技術(shù)固然誘人,可是如果自己的基礎(chǔ)不扎實(shí),就像是在云里霧里行走一樣,只能看到眼前,不能看到更遠(yuǎn)的地方。這些新鮮的技術(shù)掩蓋了許多底層的原理,要想真正的學(xué)習(xí)技術(shù)還是走下云端,扎扎實(shí)實(shí)的把基礎(chǔ)知識(shí)學(xué)好,有了這些基礎(chǔ),要掌握那些新技術(shù)也就很容易了。
開(kāi)始編程應(yīng)該先學(xué)C/C++,系統(tǒng)API編程,因?yàn)樗鼈兏咏讓樱瑢W(xué)習(xí)他們更能搞清楚原理。學(xué)好了C/C++編程和基礎(chǔ),再去學(xué)習(xí)MFC、.NET這些就會(huì)比較輕松,而且很踏實(shí)。假設(shè)學(xué)習(xí)VB編程需要4個(gè)月,學(xué)習(xí)基礎(chǔ)課程和VC的程序設(shè)計(jì)需要1年。那么如果你先學(xué)VB,再來(lái)學(xué)習(xí)后者,時(shí)間不會(huì)減少,還是1年,而反過(guò)來(lái),如果先學(xué)習(xí)后者,再來(lái)學(xué)VB,也許你只需要1個(gè)星期就能學(xué)得非常熟練 。
編程就好比練功,如果學(xué)習(xí).NET、MFC、VB等具體的語(yǔ)言和工具是外功(招式),對(duì)基礎(chǔ)的學(xué)習(xí)就是內(nèi)功,只注重招式而內(nèi)功不扎實(shí)是不可能成為高手的。很多人會(huì)認(rèn)為《射雕英雄傳》中馬玉道長(zhǎng)什么都沒(méi)有教郭靖,馬道長(zhǎng)教的表面看來(lái)是馬步?jīng)_權(quán)實(shí)則都是內(nèi)功心法,郭靖拜師洪七之后開(kāi)始練習(xí)降龍十八掌憑借的就是這深厚的內(nèi)功,吞食蝮蛇寶血又加上練習(xí)了周博通傳授的九陰真經(jīng)和外加功夫雙手互博技之后,終于練就行走江湖的武功,由此可見(jiàn)馬玉道長(zhǎng)傳授給了郭靖的是最基礎(chǔ)的,也是最重要的觀念,編程也好比蓋高樓,根基沒(méi)打好早晚有一天會(huì)挎掉的,而且蓋得越高,損失也越慘重。這些底層知識(shí)和課本不是沒(méi)有用也不是高深的不能學(xué),而是我們必須掌握的基礎(chǔ)。
PS:這些底層知識(shí)和課本不是沒(méi)有用也不是高深的不能學(xué),而是我們必須掌握的基礎(chǔ)。這句話大家好好理解下,并不是說(shuō)先生存好才能考慮去研究一些底層,換句話說(shuō),如果你底層都不去嘗試研究,那何談發(fā)展呢?
相關(guān)推薦:
小升初試題、期中期末題、小學(xué)奧數(shù)題
盡在奧數(shù)網(wǎng)公眾號(hào)
歡迎使用手機(jī)、平板等移動(dòng)設(shè)備訪問(wèn)幼教網(wǎng),幼兒教育我們一路陪伴同行!>>點(diǎn)擊查看