新聞中心
本文轉(zhuǎn)載自微信公眾號(hào)「TechFlow」,作者梁唐。轉(zhuǎn)載本文請(qǐng)聯(lián)系TechFlow公眾號(hào)。

成都創(chuàng)新互聯(lián)公司專(zhuān)注于企業(yè)網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、連云港網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為連云港等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
大家好,最近有小伙伴在后臺(tái)問(wèn)我,大一新生學(xué)校在教C語(yǔ)言,是不是已經(jīng)過(guò)時(shí)了?第一門(mén)語(yǔ)言應(yīng)該學(xué)什么比較好?大學(xué)期間什么課程對(duì)于畢業(yè)之后的從業(yè)幫助比較大呢?
今天這篇文章就和大家簡(jiǎn)單聊聊這個(gè)問(wèn)題。
關(guān)于我
先給大家講講我自己的一些情況吧,掐指一算才發(fā)現(xiàn),從我初學(xué)編程至今已經(jīng)超過(guò)十年了。
我是高中的時(shí)候?qū)W習(xí)編程的,那時(shí)候我們學(xué)的是Pascal。大家沒(méi)聽(tīng)說(shuō)過(guò)是很正常的,這是一門(mén)非常古老的語(yǔ)言。這門(mén)語(yǔ)言古老到什么程度呢?古老到它的IDE都是藍(lán)屏的,看起來(lái)就像是死機(jī)了一樣。大概長(zhǎng)這樣,當(dāng)時(shí)我們?cè)跈C(jī)房里寫(xiě)代碼的時(shí)候,一片藍(lán)光,跟進(jìn)了鬼片現(xiàn)場(chǎng)似的。
當(dāng)時(shí)學(xué)Pascal也是淺嘗輒止,只是學(xué)了一些基礎(chǔ)的用法,連結(jié)構(gòu)體我都不太會(huì)用。很多人都說(shuō)Pascal是一門(mén)非常適合新手入門(mén)的語(yǔ)言,不知道是不是我太菜了,我至今也沒(méi)get到。從那之后我又陸續(xù)學(xué)過(guò)很多語(yǔ)言,比如C/C++,Java、Python、JS還有最近學(xué)的Go。十年前學(xué)的Pascal的語(yǔ)法早已忘得精光,當(dāng)時(shí)的編程習(xí)慣也都很挫,基本上也改得差不多了。
如果非要說(shuō)學(xué)了Pascal對(duì)我現(xiàn)在有什么幫助的話,唯一的幫助應(yīng)該是它讓我學(xué)C語(yǔ)言的過(guò)程變得非常簡(jiǎn)單?;旧现皇呛?jiǎn)單看了一下C的語(yǔ)法,做了一些練習(xí)就掌握了。其實(shí)這也是大多數(shù)人學(xué)習(xí)的第一門(mén)語(yǔ)言的意義,不是為了學(xué)到了就能上手做事情,更多的是為以后學(xué)習(xí)其他的內(nèi)容打基礎(chǔ)。
所以嚴(yán)格說(shuō)起來(lái)C語(yǔ)言是我第二門(mén)學(xué)習(xí)的語(yǔ)言,但是我第一門(mén)掌握得比較完善的語(yǔ)言。
C語(yǔ)言適合入門(mén)嗎
關(guān)于這個(gè)問(wèn)題我是有過(guò)反轉(zhuǎn)的,我曾經(jīng)有一段時(shí)間覺(jué)得是不合適的。因?yàn)閷W(xué)習(xí)C語(yǔ)言的過(guò)程就是面對(duì)一個(gè)黑框框?qū)懜鞣N數(shù)學(xué)題的過(guò)程,挺枯燥和無(wú)聊的,很多人都是這樣被勸退的。如果是Python、JS等語(yǔ)言的話,則可以做的事情就很多,學(xué)習(xí)者會(huì)有極大的熱情繼續(xù)學(xué)習(xí)下去,這樣入門(mén)的門(mén)檻可能會(huì)低一些。
我想很多人也是這么覺(jué)得的,因?yàn)閷W(xué)習(xí)了C語(yǔ)言會(huì)有一種無(wú)處施展的感覺(jué)。我們花了很大精力學(xué)了編程這么黑科技的東西,搞半天居然除了對(duì)著黑框框做題什么也做不了,這太不炫酷了。你看看Python,學(xué)會(huì)了之后又可以爬圖片又可以處理文檔,難道不香嗎?還有些人可能也不太懂,就覺(jué)得Python、Java這些新興語(yǔ)言要比老舊的C語(yǔ)言厲害一點(diǎn)。
最近幾年我的看法又再次翻轉(zhuǎn)了回來(lái),我現(xiàn)在覺(jué)得C語(yǔ)言其實(shí)挺適合初學(xué)者入門(mén)的,它也是有很多其他語(yǔ)言沒(méi)有的好處的。同樣Python、Java這些看起來(lái)濃眉大眼魅力十足的語(yǔ)言,其實(shí)也是有很多缺陷的。
C語(yǔ)言最大的好處是什么?我個(gè)人覺(jué)得有兩點(diǎn),第一點(diǎn)是它的語(yǔ)法很干凈,C語(yǔ)言當(dāng)中基本的語(yǔ)法幾乎都能在其他所有語(yǔ)言當(dāng)中找到。這一點(diǎn)在Go語(yǔ)言上同樣有所體現(xiàn),精簡(jiǎn)到極致,多余的一點(diǎn)也沒(méi)有。也就是說(shuō)你在C語(yǔ)言上積累的編程功底換了其他的語(yǔ)言基本上都能用上,但像是Python這樣的語(yǔ)言可能就不是如此。Python當(dāng)中的新特性非常多,換一門(mén)語(yǔ)言可能就玩不轉(zhuǎn)了。
第二點(diǎn)是C語(yǔ)言區(qū)分了引用和指針,了解這點(diǎn)對(duì)于初學(xué)者而言非常重要。引用和指針直接關(guān)系到傳參以及函數(shù)內(nèi)的變量處理邏輯,但很多語(yǔ)言這兩者只涉及一個(gè),比如Java當(dāng)中就只有引用,Go語(yǔ)言當(dāng)中就只有指針。如果搞不清楚引用和指針的區(qū)別會(huì)埋下很多隱患,比如參數(shù)傳遞的時(shí)候?qū)戝e(cuò)了邏輯,再比如完全沒(méi)有內(nèi)存使用的概念,寫(xiě)出來(lái)的代碼內(nèi)存泄漏嚴(yán)重。
當(dāng)然C語(yǔ)言存在的問(wèn)題也不少,比如應(yīng)用場(chǎng)景太少,庫(kù)函數(shù)也不多,寫(xiě)起代碼來(lái)非常費(fèi)勁。但這不妨礙它非常適合培養(yǎng)編程思想以及良好的編程習(xí)慣,對(duì)于初學(xué)者而言,擁有一個(gè)好的習(xí)慣和意識(shí),其實(shí)要比具體學(xué)到的內(nèi)容更加重要,從這點(diǎn)上來(lái)說(shuō),大一新生的第一門(mén)語(yǔ)言課上C語(yǔ)言其實(shí)是沒(méi)有問(wèn)題的。
語(yǔ)言的選擇
當(dāng)然,也有一些學(xué)校給大一新生開(kāi)設(shè)Python或者是Java的(比如MIT和斯坦福),難道這些學(xué)校就錯(cuò)了嗎?
其實(shí)也沒(méi)有,這是一個(gè)取舍問(wèn)題。比如Python學(xué)起來(lái)可能比較有趣,對(duì)于有些學(xué)院而言可能更加看重學(xué)生的興趣。再比如Java一切面向?qū)ο?,從Java開(kāi)始可能更加有利于之后面向?qū)ο蟮膶W(xué)習(xí)。還有些大牛是從JS入門(mén)的,因?yàn)闀?huì)比較方便之后從事前端。這些其實(shí)都沒(méi)有問(wèn)題,并沒(méi)有一條規(guī)定的所謂正確路線。語(yǔ)言本身并沒(méi)有高下之分,有的只有適用的范圍不同。
所以說(shuō),其實(shí)我們選的不是語(yǔ)言,而是方向。比如你想要以后從事算法,那么Python顯然是必學(xué)的,不僅需要學(xué)還需要比較深入。比如你想要做開(kāi)發(fā),那么就比較推薦Java,入門(mén)的門(mén)檻相對(duì)較低,并且崗位缺口很大,學(xué)得好不愁找不到工作。比如想要做前端,那么顯然Python、Java這些都用不上,HTML+CSS+JS三件套才是王道。
也就是說(shuō)語(yǔ)言是和我們方向掛鉤的,我們想要成為什么領(lǐng)域的工程師,就需要相應(yīng)地進(jìn)行該領(lǐng)域內(nèi)的學(xué)習(xí)和鉆研。嚴(yán)格來(lái)說(shuō)并沒(méi)有一門(mén)語(yǔ)言是普適的,是不管什么方向的工程師都需要掌握的。
另外一點(diǎn)是到了后期學(xué)習(xí)一門(mén)語(yǔ)言遠(yuǎn)遠(yuǎn)不像大家想的那么費(fèi)勁,其實(shí)熟悉了編程的核心邏輯之后,語(yǔ)言之間基本上只有語(yǔ)法的差異。打個(gè)比方來(lái)說(shuō)好了,我在剛?cè)肼毜臅r(shí)候?yàn)榱送瓿扇肼殰y(cè)驗(yàn),在3天內(nèi)學(xué)習(xí)了go語(yǔ)言,并且從無(wú)到有用go語(yǔ)言寫(xiě)了一個(gè)簡(jiǎn)單的后臺(tái)程序。說(shuō)起來(lái)好像3天學(xué)完一門(mén)語(yǔ)言很夸張,其實(shí)不然,我只是看了基礎(chǔ)的語(yǔ)法就開(kāi)始上手了,邊看邊查而已。這并不是我的特殊能力,實(shí)際上大部分入職的新人都做到了這一點(diǎn)。
第一門(mén)的語(yǔ)言選擇重要,但也沒(méi)那么關(guān)鍵,關(guān)鍵還是以后能不能找準(zhǔn)方向。
成長(zhǎng)路線
說(shuō)到方向估計(jì)很多人一聽(tīng)到就頭疼,尤其是學(xué)生黨,很多人可能完全不知道之后要做什么,也不知道這些崗位有哪些能力要求。這其實(shí)也很正常,因?yàn)閷W(xué)校的教育少了工程師培養(yǎng)的部分。它只負(fù)責(zé)授課,并不負(fù)責(zé)工程師的培養(yǎng),這是這個(gè)問(wèn)題的核心原因。
那我們?cè)趺崔k呢?
我想你們一定很想知道答案,但很遺憾的是,每個(gè)人的成長(zhǎng)路線需要自己找,誰(shuí)也不知道你究竟適合做什么。不過(guò)話雖如此,但還是有一些比較萬(wàn)金油的方法的。
如果你學(xué)了C/C++之后不知道學(xué)什么,那就學(xué)Java就好了。學(xué)了Java之后用Java踏踏實(shí)實(shí)做兩個(gè)項(xiàng)目,提升一下項(xiàng)目能力。不管是什么崗位,工程能力都是必須的。而且有了這兩個(gè)項(xiàng)目經(jīng)驗(yàn)之后,其實(shí)也算是一個(gè)保底,最起碼畢業(yè)了以后找個(gè)Java后端的工作基本沒(méi)問(wèn)題了。并且這兩個(gè)項(xiàng)目做下來(lái),你會(huì)對(duì)自己有一個(gè)比較清晰的認(rèn)知,這樣寫(xiě)代碼、調(diào)試程序?qū)ふ覇?wèn)題的工作究竟是不是你喜歡的。
而且關(guān)于做項(xiàng)目還有一個(gè)小技巧,我們做項(xiàng)目也不是盲目做,項(xiàng)目之間是有高低之分的,和公司實(shí)際業(yè)務(wù)越接近的項(xiàng)目面試的時(shí)候吸引力越大。比如你親自做過(guò)一個(gè)推薦系統(tǒng)、搜索系統(tǒng),即使做得很簡(jiǎn)陋,只是勉強(qiáng)能用,這樣的項(xiàng)目在面試的時(shí)候一樣是非常非常具有價(jià)值的。要比做XX管理系統(tǒng)有含金量得多,而且這樣的系統(tǒng)也算是和算法相關(guān),既可以面算法的崗位,也可以面工程的崗位,可以說(shuō)是一舉兩得。
其實(shí)個(gè)人成長(zhǎng)這件事和寫(xiě)文章的邏輯是一樣的,首先要有一個(gè)主線,然后一個(gè)好的開(kāi)頭。之后呢,需要結(jié)合主線適當(dāng)?shù)匕l(fā)散,該覆蓋的點(diǎn)都要覆蓋到。當(dāng)然寫(xiě)文章的時(shí)候,我們是在寫(xiě)之前就有了主線,而成長(zhǎng)的路途中可能一開(kāi)始的時(shí)候一直是一個(gè)尋找主線的過(guò)程,尋找主線其實(shí)并沒(méi)有問(wèn)題。對(duì)于學(xué)生來(lái)說(shuō),還年輕,擁有大把的青春,做一些工程項(xiàng)目進(jìn)行適當(dāng)性的試水完全沒(méi)有問(wèn)題。即使以后選了算法或者其他的方向,當(dāng)初的付出和努力也一樣是有用的。
網(wǎng)站標(biāo)題:80%的學(xué)校還在給新生上C語(yǔ)言,它們OUT了嗎?
瀏覽路徑:http://fisionsoft.com.cn/article/ccocidp.html


咨詢(xún)
建站咨詢(xún)
