當前位置:秀麗範 >

情感 >學習 >

學習編程基礎的重要性

學習編程基礎的重要性

學習編程有幾年了,感覺走了不少彎路,而不少的學弟學妹又在重蹈我當初的覆轍,不免有些痛心。最近在網上也看了許多前輩們的經驗建議,再結合自己的學習經歷在這裏談談基礎的重要性,希望幫助大家少走些彎路。

學習編程基礎的重要性

什麼是基礎呢?就是要把我們大學所學的離散數學,算法與數據結構,操作系統,計算機體系結構,編譯原理等課程學好,對計算機的體系、CPU本身、操作系統內核、系統平臺、面向對象編程、程序的性能等要有深層次的掌握。

初學者可能體會不到這些基礎的重要性,學習JSP、DonNet、MFC、VB的朋友甚至會對這些嗤之以鼻,但是一開始沒學好基礎就去學JSP或DonNet會產生很壞的影響,而且陷入其中不能自拔。

我上大二的時候還對編程沒什麼概念,就上了門C++也不知道能幹什麼,老師說MFC也不知道是什麼東西,看別的同學在學asp。net就跟着學了,然後就瞭解到。NET、J2EE、PHP是什麼了,就覺得軟件開發就是用這些了,而上的那些專業課又與我們學的SQLServer啊,CSS啊,Ajax啊,毫無關係,就感慨啊,還不如回家自學去就爲一個文憑嗎?

還不如去培訓,浪費這麼多錢。於是天天基本上沒去上什麼課,天天就在做網站,幾個學期就做了三個網站。感覺做這些網站就是學到些技巧,沒什麼進步,這些技巧就好比別人的名字,告訴你你就知道了,網上也都可以搜到。那時候就覺得把。NET學好就行了,搞J2EE的比較難,搞API編程就別想了,操作系統更是望塵莫及了。後來隨着學習的深入和看了網上許多前輩們的建議纔對這些基礎的重要性有所體會。

雖然。NET或Java的開發並不直接用到彙編,操作系統這些,但是不掌握這些基礎是有很大問題的,因爲你只知其然不知其所有然,在MFC和。NET裏面控件一拖什麼都做好了,很方便,但是出了問題可能就解決不了,有些在網上搜都搜不到。這就是基礎沒打好,不知道它的原理就不知道出錯的原因。在學。NET的時候常會討論那些控件該不該用別人說盡量別用也不知道爲什麼?不讓用是因爲你在高層開發,你不知道它的原理出錯了你可能解決不了,但其實是應該用的,不然人家開發它幹嘛,但要在瞭解它的原理後去用就會很方便。

要編寫出優秀的代碼同樣要紮實的基礎,如果數據結構和算法學的不好,怎麼對程序的性能進行優化,怎樣從類庫中選擇合適的數據結構。如果不瞭解操作系統,怎樣能瞭解這些開發工具的原理,它們都是基於操作系統的。不瞭解彙編,編譯原理,怎麼知道程序運行時要多長時間要多少內存,就不能編出高效的代碼。

如果沒有學好基礎一開始就去學。NET、Java這些越往後就會覺得越吃力,它們涉及的技術太多了,而且不但在更新,對於三層啊,MVC、ORM這些架構,你只會用也不明白爲什麼用,就感覺心裏虛,感覺沒學好。而你把面向對象,軟件工程,設計模式這些基礎學好了再去看這些就可以一不變應萬變。

大家不要被新名詞、新技術所迷惑。NET、XML等等技術固然誘人,可是如果自己的基礎不紮實,就像是在雲裏霧裏行走一樣,只能看到眼前,不能看到更遠的地方。這些新鮮的技術掩蓋了許多底層的原理,要想真正的學習技術還是走下雲端,紮紮實實的把基礎知識學好,有了這些基礎,要掌握那些新技術也就很容易了。

開始編程應該先學C/C++,系統API編程,因爲它們更接近底層,學習他們更能搞清楚原理。學好了C/C++編程和基礎,再去學習MFC、。NET這些就會比較輕鬆,而且很踏實。假設學習VB編程需要4個月,學習基礎課程和VC的程序設計需要1年。那麼如果你先學VB,再來學習後者,時間不會減少,還是1年,而反過來,如果先學習後者,再來學VB,也許你只需要1個星期就能學得非常熟練。

編程就好比練功,如果學習。NET、MFC、VB等具體的語言和工具是外功(招式),對基礎的學習就是內功,只注重招式而內功不紮實是不可能成爲高手的。很多人會認爲《射鵰英雄傳》中馬玉道長什麼都沒有教郭靖,馬道長教的表面看來是馬步衝權實則都是內功心法,郭靖拜師洪七之後開始練習降龍十八掌憑藉的就是這深厚的內功,吞食蝮蛇寶血又加上練習了周博通傳授的九陰真經和外加功夫雙手互博技之後,終於練就行走江湖的武功,由此可見馬玉道長傳授給了郭靖的是最基礎的,也是最重要的觀念,編程也好比蓋高樓,根基沒打好早晚有一天會挎掉的,而且蓋得越高,損失也越慘重。這些底層知識和課本不是沒有用也不是高深的不能學,而是我們必須掌握的基礎。

PS:這些底層知識和課本不是沒有用也不是高深的不能學,而是我們必須掌握的基礎。這句話大家好好理解下,並不是說先生存好才能考慮去研究一些底層,換句話說,如果你底層都不去嘗試研究,那何談發展呢?

標籤: 編程 學習
  • 文章版權屬於文章作者所有,轉載請註明 https://xiulifan.com/qinggan/xuexi/lvvm9m.html