1. 程式人生 > >一隻程式設計菜鳥對程式設計的思考

一隻程式設計菜鳥對程式設計的思考

引言

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

入門程式設計

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

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

    學院派:

        推薦入門學習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的學生一樣,

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

 

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