一隻編程菜鳥對編程的思考

引言

編程,是一門實踐科學,意味著你學習編程的最好方式就是上手敲代碼,但這意味著我們能因此輕視理論的學習嗎?

入門編程

上各大交流社區,提問該如何入門編程,五花八門的答案蜂擁而來。

但是總結一下,莫不就是一下幾種:

學院派:

推薦入門學習C語言,輔之修以數據結構、操作系統等科班課程,唯有這樣才能得到編程的真諦。

自由派:

推薦入門學習python,認為人生苦短,唯有python才是真正地解放雙手。

現實派:

推薦入門直接JAVA,畢竟JAVA常年盤踞TIOBE排行榜之首,是一個很火的就業語言。

那麼,身為編程小白,該如何選擇?

在這裡我們探討下各個派系。

學院派:

首先,操作系統、數據結構等課程都是需要C語言的基礎,所以這也就是很多學校把C語言排在第一個學期的原因。

學習C語言,是為了更好地理解計算機內部原理,我認為,現在的計算機科學這個專業分類其實還不夠明確,

應該分為計算機理論科學與計算機應用科學,一個研究計算的內部工作原理,一個則是去研究計算機能幹什麼事。

所以,如果你對計算機本身有興趣,就從C語言入手吧。

自由派:

python作為一門膠水語言,它很適合用來解決一些小問題,就像經常在各大資訊平臺上會刷到《10行代碼實現一個微信機器人》

、《看我如何用python黑舍友U盤》等等文章,瞧,python最擅長做的是這些。

python是你提升工作效率的一個不錯選擇。

如果你將來並不打算這個行業,python會是你最好的選擇。

現實派:

可以說,是互聯網成就了JAVA,現在JAVA應用最多的,就是在企業應用方向,為什麼這個派別叫現實派,因為學了JAVA可以很容易找到工作啊!

但是這是因為這樣,很多外行看著這行業的高薪資,不顧一切轉行JAVA,於是這時,培訓機構應運而生了。

這些培訓機構向市場輸出了大量的初級JAVA程序員,那導致的後果是什麼?

初級人才供過於需,高級人才供不應求。

但即使是這樣,如果是身為在校生的你,把JAVA作為你的就業選擇,你仍有優勢,你的優勢就是學校教授的那些計算機基礎知識,掌握好這些,

你就能在百萬大軍中穩步向前。

如果你想依靠以編程為生,就學JAVA吧。

當然這裡的C、python、java只是各個領域編程語言的代表,主流編程語言可不止這些。

實踐OR理論?

正如之前所說,編程是一門實踐科學,這意味著你需要上手敲代碼才能獲得最好的學習效果。

但,在學習的過程中,請記住:千萬不能捨本逐末。

在這裡談談我,我的第一語言是JAVA,跟很多新手一樣,都是從SE學到jsp、servlet再到三大框架,以及最近兩年流行起來的spring boot到spring cloud微服務、

隨著一個個項目的完成,我產生了一種自己很厲害的錯覺,殊不知,我所取得的這些成就,只是建立在別人造好的輪子之上,往下深挖,我的理論基礎幾乎為0.

拿spring舉例,其核心內容就是AOP以及IOC,那麼它們是怎麼實現的?學習java的你,肯定會知道,反射嘛。

反射是怎麼實現的?基於JVM?

那JVM又是怎麼一回事?

JVM的具體實現又和操作系統有何聯繫?

隨著這樣的一層層深入,我發現所謂自己先前建立起來所謂的知識體現,實在是少的可憐。

當然如果你說,我只要會用就行了,原理什麼的不重要。知其然而不知其所以然,編程這條路註定走不遠。

這說明:理論與實踐二者之間相輔相成,互不可割。

軟件開發與編程

乍一看,這兩個詞說的好像都是一回事,就是寫軟件敲代碼嘛?

這只是外行的片面理解。

伴隨著計算機的誕生,就已有為計算機開發程序的人了,那個時候,程序還是一種硬件,

並且是隻有天才個人才能玩的東西,這也就導致那個時候很多的軟件項目都失敗了。

上世紀的軟件危機,讓人們意識到只有工程化,才能取得更好的效益。

於是軟件工程誕生了。

70~80年代,流行著這樣一個東西:程序=算法+數據結構,這足以說明兩者是程序設計的核心內容。

但到了90年代以後,工程化思維對軟件開發的重要性超過了兩者。

但,為什麼各種企業招人都是喜歡考各種算法和數據結構?而不考工程化思維?

這被稱為白板測試,工程化的思維無法在面試內的短時間內考察出來,這就跟很多企業喜歡985 211的學生一樣,

只是為了快速地篩選人才罷了。

當然,以上只是我的一些個人看法,如有錯誤,懇請指出,反正我也不會改的。


分享到:


相關文章: