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