迷茫中的啓蒙之路(特別適合有心無力的小白,站長推薦)

學習編程有幾年了,感覺當初走了不少彎路。而每當看到不少的學弟學妹卻還在重蹈我的覆轍,不免有些痛心疾首。最近在網上也看了許多前輩們的經驗建議,再結合自己的學習經歷在這裏跟大家談談基礎的重要性,如若這篇文章能幫助大家少走些彎路,我也就心滿意足了。

注重基礎,是大部分同學都知道卻往往做不到的。

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

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

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

於是乎天天基本上沒去上什麼課,天天就在做網站,幾個學期就做了三個網站。感覺做這些網站就是學到些技巧,沒什麼進步。這些技巧就好比別人的名字,告訴你你就知道了,網上也都可以搜得到。

那時候就覺得把.NET學好就行了,搞J2EE的比較難,搞API編程就別想了,操作系統更是望塵莫及了。後來隨着學習的深入和看了網上許多前輩們的建議後恍然大悟,明白過來這些基礎其實是如此重要。

雖然.net或java的開發並不直接用到彙編,操作系統這些,但是不掌握這些基礎是有很大問題的。因爲你只知其然而不知其所有然,在mfc和.net裏面控件一拖什麼都做好了,很方便,但是出了問題可能就解決不了,有些甚至在網上搜都搜不到。這就是基礎沒打好,不知道它的原理肯定就不知道出錯的原因。

在學.net的時候常會討論那些控件該不該用,別人說盡量別用其實你也並不知道是爲什麼?不讓用是因爲你在高層開發,你不知道它的原理萬一出錯了,你基本上就解決不了。但其實還是應該用的,不然人家開發它幹嘛。在瞭解它的原理後再去用你就會發現,用了比不用其實真的方便太多了。

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

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

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

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

編程就好比練功,如果學習.net,mfc,vb等具體的語言和工具是外功(招式),對基礎的學習就是內功,只注重招式而內功不紮實是不可能成爲高手的。很多人會認爲《射鵰英雄傳》中馬玉道長什麼都沒有教給郭靖,我個人覺得此言差矣。馬道長教的表面看來是馬步衝拳,實則都是內功心法。郭靖拜師洪七之後開始練習降龍十八掌憑藉的就是這深厚的內功,吞食蝮蛇寶血又加上練習了周伯通傳授的九陰真經和外加功夫雙手互博技之後,終於練就了行走江湖的武功。由此可見馬玉道長傳授給了郭靖的是最基礎的,但也是最重要的。

編程又何嘗不是如此呢?編程就好比蓋高樓,根基沒打好早晚有一天會挎掉的,而且蓋得越高,損失也越慘重。這些底層知識和課本不是沒有用,也並不是高深得不能學,而是我們必須掌握的基礎。

既然基礎這麼重要,那麼怎樣才能學好它呢?我個人覺得,學好它們應該對照這些基礎課程所涉及的方面,多瞭解相關的新技術,多看一些經典書籍,像《算法導論》,《編程珠璣》,《代碼大全》等。這些經典書籍不僅能幫助我們打好基礎,而且還能開闊我們的視野,對我們的程序人生會產生莫大的影響。

我永遠相信:機會都是留給有準備的人的。

只要你現在能在大學打下堅實的基礎,你的未來必定不是夢!


如果您讀後覺得有幫助或者有啓發,請關注微信公衆號: IT微視界 ,裏面都是滿滿的乾貨哦。)

發佈了42 篇原創文章 · 獲贊 78 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章