80%的學校還在給新生上C語言,它們OUT了嗎?

你們好,最近有小夥伴在後臺問我,大一新生學校在教C語言,是否是已通過時了?第一門語言應該學什麼比較好?大學期間什麼課程對於畢業以後的從業幫助比較大呢?前端

今天這篇文章就和你們簡單聊聊這個問題。web

關於我

最後給你們講講我本身的一些狀況吧,掐指一算才發現,從我初學編程至今已經超過十年了。面試

我是高中的時候學習編程的,那時候咱們學的是Pascal。你們沒據說過是很正常的,這是一門很是古老的語言。這門語言古老到什麼程度呢?古老到它的IDE都是藍屏的,看起來就像是死機了同樣。大概長這樣,當時咱們在機房裏寫代碼的時候,一片藍光,跟進了鬼片現場似的。算法

當時學Pascal也是淺嘗輒止,只是學了一些基礎的用法,連結構體我都不太會用。不少人都說Pascal是一門很是適合新手入門的語言,不知道是否是我太菜了,我至今也沒get到。從那以後我又陸續學過不少語言,好比C/C++,Java、Python、JS還有最近學的Go。十年前學的Pascal的語法早已忘得精光,當時的編程習慣也都很挫,基本上也改得差很少了。編程

若是非要說學了Pascal對我如今有什麼幫助的話,惟一的幫助應該是它讓我學C語言的過程變得很是簡單。基本上只是簡單看了一下C的語法,作了一些練習就掌握了。其實這也是大多數人學習的第一門語言的意義,不是爲了學到了就能上手作事情,更多的是爲之後學習其餘的內容打基礎後端

因此嚴格提及來C語言是我第二門學習的語言,可是我第一門掌握得比較完善的語言。編輯器

C語言適合入門嗎

關於這個問題我是有過翻轉的,我曾經有一段時間以爲是不合適的。由於學習C語言的過程就是面對一個黑框框寫各類數學題的過程,挺枯燥和無聊的,不少人都是這樣被勸退的。若是是Python、JS等語言的話,則能夠作的事情就不少,學習者會有極大的熱情繼續學習下去,這樣入門的門檻可能會低一些。函數

我想不少人也是這麼以爲的,由於學習了C語言會有一種無處施展的感受。咱們花了很大精力學了編程這麼黑科技的東西,搞半天竟然除了對着黑框框作題什麼也作不了,這太不炫酷了。你看看Python,學會了以後又能夠爬圖片又能夠處理文檔,難道不香嗎?還有些人可能也不太懂,就以爲Python、Java這些新興語言要比老舊的C語言厲害一點。學習

最近幾年個人見解又再次翻轉了回來,我如今以爲C語言其實挺適合初學者入門的,它也是有不少其餘語言沒有的好處的。一樣Python、Java這些看起來濃眉大眼魅力十足的語言,其實也是有不少缺陷的。flex

C語言最大的好處是什麼?我我的以爲有兩點,第一點是它的語法很乾淨,C語言當中基本的語法幾乎都能在其餘全部語言當中找到。這一點在Go語言上一樣有所體現,精簡到極值,多餘的一點也沒有。也就是說你在C語言上積累的編程功底換了其餘的語言基本上都能用上,但像是Python這樣的語言可能就不是如此。Python當中的新特性很是多,換一門語言可能就玩不轉了。

第二點是C語言區分了引用和指針,瞭解這點對於初學者而言很是重要。引用和指針直接關係到傳參以及函數內的變量處理邏輯,但不少語言這二者只涉及一個,好比Java當中就只有引用,Go語言當中就只有指針。若是搞不清楚引用和指針的區別會埋下不少隱患,好比參數傳遞的時候寫錯了邏輯,再好比徹底沒有內存使用的概念,寫出來的代碼內存泄漏嚴重。

固然C語言存在的問題也很多,好比應用場景太少,庫函數也很少,寫起代碼來很是費勁。但這不妨礙它很是適合培養編程思想以及良好的編程習慣,對於初學者而言,擁有一個好的習慣和意識,其實要比具體學到的內容更加劇要,從這點上來講,大一新生的第一門語言課上C語言實際上是沒有問題的。

語言的選擇

固然,也有一些學校給大一新生開設Python或者是Java的(好比MIT和斯坦福),難道這些學校就錯了嗎?

其實也沒有,這是一個取捨問題。好比Python學起來可能比較有趣,對於有些學院而言可能更加看重學生的興趣。再好比Java一切面向對象,從Java開始可能更加有利於以後面向對象的學習。還有些大牛是從JS入門的,由於會比較方便以後從事前端。這些其實都沒有問題,並無一條規定的所謂正確路線。語言自己並無高下之分,有的只有適用的範圍不一樣。

因此說,其實咱們選的不是語言,而是方向。好比你想要之後從事算法,那麼Python顯然是必學的,不只須要學還須要比較深刻。好比你想要作開發,那麼就比較推薦Java,入門的門檻相對較低,而且崗位缺口很大,學得好不愁找不到工做。好比想要作前端,那麼顯然Python、Java這些都用不上,HTML+CSS+JS三件套纔是王道。

也就是說語言是和咱們方向掛鉤的,咱們想要成爲何領域的工程師,就須要相應地進行該領域內的學習和鑽研。嚴格來講並無一門語言是普適的,是無論什麼方向的工程師都須要掌握的。

另一點是到了後期學習一門語言遠遠不像你們想的那麼費勁,其實熟悉了編程的核心邏輯以後,語言之間基本上只有語法的差別。打個比方來講好了,我在剛入職的時候爲了完成入職測驗,在3天內學習了go語言,而且從無到有用go語言寫了一個簡單的後臺程序。提及來好像3天學完一門語言很誇張,其實否則,我只是看了基礎的語法就開始上手了,邊看邊查而已。這並非個人特殊能力,實際上大部分入職的新人都作到了這一點。

第一門的語言選擇重要,但也沒那麼關鍵,關鍵仍是之後能不能找準方向。

成長路線

說到方向估計不少人一聽到就頭疼,尤爲是學生黨,不少人可能徹底不知道以後要作什麼,也不知道這些崗位有哪些能力要求。這其實也很正常,由於學校的教育少了工程師培養的部分。它只負責授課,並不負責工程師的培養,這是這個問題的核心緣由。

那咱們怎麼辦呢?

我想大家必定很想知道答案,但很遺憾的是,每一個人的成長路線須要本身找,誰也不知道你究竟適合作什麼。不過話雖如此,但仍是有一些比較萬金油的方法的。

若是你學了C/C++以後不知道學什麼,那就學Java就行了。學了Java以後用Java踏踏實實作兩個項目,提高一下項目能力。無論是什麼崗位,工程能力都是必須的。並且有了這兩個項目經驗以後,其實也算是一個保底,最起碼畢業了之後找個Java後端的工做基本沒問題了。而且這兩個項目作下來,你會對本身有一個比較清晰的認知,這樣寫代碼、調試程序尋找問題的工做到底是不是你喜歡的。

並且關於作項目還有一個小技巧,咱們作項目也不是盲目作,項目之間是有高低之分的,和公司實際業務越接近的項目面試的時候吸引力越大。好比你親自作過一個推薦系統、搜索系統,即便作得很簡陋,只是勉強能用,這樣的項目在面試的時候同樣是很是很是具備價值的。要比作XX管理系統有含金量得多,並且這樣的系統也算是和算法相關,既能夠面算法的崗位,也能夠面工程的崗位,能夠說是一箭雙鵰。

其實我的成長這件事和寫文章的邏輯是同樣的,首先要有一個主線,而後一個好的開頭。以後呢,須要結合主線適當地發散,該覆蓋的點都要覆蓋到。固然寫文章的時候,咱們是在寫以前就有了主線,而成長的路途中可能一開始的時候一直是一個尋找主線的過程,尋找主線其實並無問題。對於學生來講,還年輕,擁有大把的青春,作一些工程項目進行適當性的試水徹底沒有問題。即便之後選了算法或者其餘的方向,當初的付出和努力也同樣是有用的。

今天的文章就到這裏,衷心祝願你們天天都有所收穫。若是還喜歡今天的內容的話,請來一個三連支持吧~(點贊、關注、轉發

相關文章
相關標籤/搜索