大家好,最近有小伙伴在后臺問我,大一新生學校在教C語言,是不是已經過時了?第一門語言應該學什么比較好?大學期間什么課程對于畢業之后的從業幫助比較大呢?
今天這篇文章就和大家簡單聊聊這個問題,
本人是高中的時候學習編程的,那時候我們學的是Pascal,
大家沒聽說過是很正常的,這是一門非常古老的語言,這門語言古老到什么程度呢?古老到它的IDE都是藍屏的,看起來就像是死機了一樣,大概長這樣,當時我們在機房里寫代碼的時候,一片藍光,跟進了鬼片現場似的,
當時學Pascal也是淺嘗輒止,只是學了一些基礎的用法,連結構體我都不太會用,
很多人都說Pascal是一門非常適合新手入門的語言,不知道是不是我太菜了,我至今也沒get到,
從那之后我又陸續學過很多語言,比如C/C++,Java、Python、JS還有最近學的Go,十年前學的Pascal的語法早已忘得精光,當時的編程習慣也都很挫,基本上也改得差不多了,
如果非要說學了Pascal對我現在有什么幫助的話,唯一的幫助應該是它讓我學C語言的程序變得非常簡單,基本上只是簡單看了一下C的語法,做了一些練習就掌握了,其實這也是大多數人學習的第一門語言的意義,不是為了學到了就能上手做事情,更多的是為以后學習其他的內容打基礎,
所以嚴格說起來C語言是我第二門學習的語言,但是我第一門掌握得比較完善的語言,

1、C語言適合入門嗎
關于這個問題我是有過翻轉的,我曾經有一段時間覺得是不合適的,
因為學習C語言的程序就是面對一個黑框框寫各種數學題的程序,挺枯燥和無聊的,很多人都是這樣被勸退的,如果是Python、JS等語言的話,則可以做的事情就很多,學習者會有極大的熱情繼續學習下去,這樣入門的門檻可能會低一些,
我想很多人也是這么覺得的,因為學習了C語言會有一種無處施展的感覺,我們花了很大精力學了編程這么黑科技的東西,搞半天居然除了對著黑框框做題什么也做不了,這太不炫酷了,
你看看Python,學會了之后又可以爬圖片又可以處理檔案,難道不香嗎?還有些人可能也不太懂,就覺得Python、Java這些新興語言要比老舊的C語言厲害一點,
最近幾年我的看法又再次翻轉了回來,我現在覺得C語言其實挺適合初學者入門的,它也是有很多其他語言沒有的好處的,同樣Python、Java這些看起來濃眉大眼魅力十足的語言,其實也是有很多缺陷的,

2、C語言最大的好處是什么?
我個人覺得有兩點:
第一點是它的語法很干凈,C語言當中基本的語法幾乎都能在其他所有語言當中找到,
這一點在Go語言上同樣有所體現,精簡到極值,多余的一點也沒有,也就是說你在C語言上積累的編程功底換了其他的語言基本上都能用上,但像是Python這樣的語言可能就不是如此,Python當中的新特性非常多,換一門語言可能就玩不轉了,
第二點是C語言區分了參考和指標,了解這點對于初學者而言非常重要,
參考和指標直接關系到傳參以及函式內的變數處理邏輯,但很多語言這兩者只涉及一個,比如Java當中就只有參考,Go語言當中就只有指標,
如果搞不清楚參考和指標的區別會埋下很多隱患,比如引數傳遞的時候寫錯了邏輯,再比如完全沒有記憶體使用的概念,寫出來的代碼記憶體泄漏嚴重,
當然C語言存在的問題也不少,比如應用場景太少,庫函式也不多,寫起代碼來非常費勁,
但這不妨礙它非常適合培養編程思想以及良好的編程習慣,對于初學者而言,擁有一個好的習慣和意識,其實要比具體學到的內容更加重要,從這點上來說,大一新生的第一門語言課上C語言其實是沒有問題的,

3、語言的選擇
當然,也有一些學校給大一新生開設Python或者是Java的(比如MIT和斯坦福),難道這些學校就錯了嗎?
其實也沒有,這是一個取舍問題,
? 比如Python學起來可能比較有趣,對于有些學院而言可能更加看重學生的興趣,
? 再比如Java一切面向物件,從Java開始可能更加有利于之后面向物件的學習,
? 還有些大牛是從JS入門的,因為會比較方便之后從事前端,
這些其實都沒有問題,并沒有一條規定的所謂正確路線,語言本身并沒有高下之分,有的只有適用的范圍不同,
所以說,其實我們選的不是語言,而是方向,
? 比如你想要以后從事演算法,那么Python顯然是必學的,不僅需要學還需要比較深入,
? 比如你想要做開發,那么就比較推薦Java,入門的門檻相對較低,并且崗位缺口很大,學得好不愁找不到作業,
? 比如想要做前端,那么顯然Python、Java這些都用不上,HTML+CSS+JS三件套才是王道,
也就是說語言是和我們方向掛鉤的,我們想要成為什么領域的工程師,就需要相應地進行該領域內的學習和鉆研,嚴格來說并沒有一門語言是普適的,是不管什么方向的工程師都需要掌握的,
另外一點是到了后期學習一門語言遠遠不像大家想的那么費勁,其實熟悉了編程的核心邏輯之后,語言之間基本上只有語法的差異,
打個比方來說好了,我在剛入職的時候為了完成入職測驗,在3天內學習了go語言,并且從無到有用go語言寫了一個簡單的后臺程式,
說起來好像3天學完一門語言很夸張,其實不然,我只是看了基礎的語法就開始上手了,邊看邊查而已,這并不是我的特殊能力,實際上大部分入職的新人都做到了這一點,
第一門的語言選擇重要,但也沒那么關鍵,關鍵還是以后能不能找準方向,

4、成長路線
說到方向估計很多人一聽到就頭疼,尤其是學生黨,很多人可能完全不知道之后要做什么,也不知道這些崗位有哪些能力要求,這其實也很正常,因為學校的教育少了工程師培養的部分,它只負責授課,并不負責工程師的培養,這是這個問題的核心原因,
那我們怎么辦呢?
我想你們一定很想知道答案,但很遺憾的是,每個人的成長路線需要自己找,誰也不知道你究竟適合做什么,不過話雖如此,但還是有一些比較萬金油的方法的,
如果你學了C/C++之后不知道學什么,那就學Java就好了,學了Java之后用Java踏踏實實做兩個專案,提升一下專案能力,
不管是什么崗位,工程能力都是必須的,而且有了這兩個專案經驗之后,其實也算是一個保底,最起碼畢業了以后找個Java后端的作業基本沒問題了,并且這兩個專案做下來,你會對自己有一個比較清晰的認知,這樣寫代碼、除錯程式尋找問題的作業究竟是不是你喜歡的,
而且關于做專案還有一個小技巧,我們做專案也不是盲目做,專案之間是有高低之分的,和公司實際業務越接近的專案面試的時候吸引力越大,
比如你親自做過一個推薦系統、搜索系統,即使做得很簡陋,只是勉強能用,這樣的專案在面試的時候一樣是非常非常具有價值的,要比做XX管理系統有含金量得多,而且這樣的系統也算是和演算法相關,既可以面演算法的崗位,也可以面工程的崗位,可以說是一舉兩得,
而成長的路途中可能一開始的時候一直是一個尋找主線的程序,尋找主線其實并沒有問題,對于學生來說,還年輕,擁有大把的青春,做一些工程專案進行適當性的試水完全沒有問題,即使以后選了演算法或者其他的方向,當初的付出和努力也一樣是有用的,
今天的文章就到這里,2020年即將到來,衷心祝愿大家在2020的每一天都有所識訓,
如果還喜歡今天的內容的話,請來一個三連支持吧~(點贊、關注、轉發)

最后,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~
【值得關注】我的 C/C++編程學習交流俱樂部!【點擊進入】
問題答疑,學習交流,技術探討,還有超多編程資源大全,零基礎的視頻也超棒~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245020.html
標籤:C
