{eval=Array;=+count(Array);}
C語言是一門歷史非常悠久的語言,C語言非常的簡潔緊湊、靈活方便;數(shù)據(jù)類型和運(yùn)算符號者非常的豐富;可以直接的操作物理地址,非常適合對硬件直接操作;生成的目標(biāo)代碼質(zhì)量和運(yùn)行效率也非常高。
51單片機(jī)便宜到爆(10元以下大把有),教材多到堆成山,主要是C語言,你可以體會下操控硬件的感覺。譬如操作機(jī)器人小車,遙控飛機(jī)神馬的。即使是‘軟件工程師’也沒關(guān)系,完整的開發(fā)板,你所需要知道的就是插個USB接口就行,也不貴~
還有其他的,stm8s,stm32,都很便宜,而且功能更強(qiáng)大;尤其是stm32,一個指針?biāo)伎臻g也是4字節(jié)喲~~~你學(xué)過的那些神馬的C語言的關(guān)于指針的奇技淫巧,都可以用了哦~
用兩個按鈕做0和1,一塊液晶屏,一個stm8開發(fā)板,所有成本30元可以找到包郵的。輸入、輸出、cpu、內(nèi)存、存儲什么的就都全了,就是一臺‘馮諾依曼’電腦了。要知道美國人送月球上天的處理器也是8位的,小伙子我看好你,上吧。
Arduino,入門太過簡單了,模塊,淘寶上什么模塊都有,簡單的擴(kuò)展板連接,你可以體會 build world的感覺。
你要是想玩玩更復(fù)雜的,現(xiàn)在很多WIFI芯片、GPRS or LTE芯片也都開放固件定制,很多路由器也可以定制其固件與行為,并且是性能還不錯的cpu搭配完整的linux~都可以試試~
這些大部分都是C,或C改,或C++或C++改,stm32其實(shí)你可以使用其函數(shù)固件庫,搭配Eclipse/CDT && gcc for ARM,則完完全全的C/C++了,絕對是學(xué)C語言的利器~
可以深切的體會內(nèi)存只剩下2KB,flash只剩下10KB時,如何存儲,如何設(shè)計(jì)~
另外,如果有時間,給他們寫個操作系統(tǒng)吧,照著RTOS(才幾千行代碼/其實(shí)是9千9百多行~),實(shí)現(xiàn)一個操作系統(tǒng),對課本知識的理解,絕對上升一個檔次了。如果你解決了某個小技術(shù)難題,或者給某款原本沒有OS的芯片加入OS支持,說不定有人感興趣,賣個一二十萬也不是什么難事兒~
其實(shí)很多人都會有這個疑惑:大家都說C語言很好,是編程語言的基礎(chǔ),用途非常廣泛。可是具體到實(shí)際問題上,卻又很難準(zhǔn)確說出C語言可以用在哪些方面。
其實(shí)這個問題就像1+1一樣,都知道1+1是所有算術(shù)運(yùn)算的基礎(chǔ),可是在正規(guī)的教材上(除了幼兒園的教材),基本上不會出現(xiàn)1+1這樣的題目,可是我們都知道,所有的算數(shù)運(yùn)算都是起源于1+1的。
c語言是計(jì)算機(jī)技術(shù)的基礎(chǔ),是信息技術(shù)的基礎(chǔ),是自動化技術(shù)的基礎(chǔ),是很多電子設(shè)備能夠運(yùn)行的基礎(chǔ)。
學(xué)習(xí)C語言可以讓你了解編程,鍛煉編程的邏輯思維,所以C語言也是比較重要的,能夠?yàn)槟銓W(xué)習(xí)好其它編程語言打下基礎(chǔ)。各種語言之間雖說語法不同,但是編程的思維是相通的。
Windows大部分源代碼都是用C語言寫的,Linux也一樣。連操作系統(tǒng)都是C語言寫的,其他軟件之類的更不在話下。C語言可以干幾乎和計(jì)算機(jī)相關(guān)的任何事,編寫任何系統(tǒng)或軟件,實(shí)現(xiàn)任何功能。
像C語言、C++、Python等都是通用性的編程語言,它們不針對某一個特定的方向,能做的事情很多。C語言主要用于底層開發(fā),Windows、Linux、Unix 等操作系統(tǒng)的內(nèi)核90%以上都使用C語言開發(fā),開發(fā)硬件驅(qū)動,讓硬件和操作系統(tǒng)連接起來,這樣用戶才能使用硬件、程序員才能控制硬件。
C語言介于匯編和高級語言之間,屬于最底層的高級語言。因此現(xiàn)在被廣泛用于嵌入式系統(tǒng)開發(fā),各種底層軟件、驅(qū)動程序,等等
各種網(wǎng)絡(luò)設(shè)備,tcp/ip協(xié)議都是用C語言寫的,
服務(wù)器端程序大部分都是用C語言寫的。云服務(wù)也離不開C語言。
C語言的用處還有很多、很多。有人說C語言夠?qū)W一輩子了,誠哉斯言!
C語言能干很多事,往往別的編程語言不能干的事C語言很輕松就解決了。這里我說一個程序員朋友的例子。
這名程序員做的是android手機(jī)研發(fā),開發(fā)方向是做視頻播放器類的。有一次產(chǎn)品經(jīng)理丟來一個需求,就是用戶在看視頻的時候可以一鍵截圖。這個截圖可不能用android自帶的屏幕截圖功能,必須得是播放器自帶的截圖功能。
程序員做上層應(yīng)用開發(fā)比較久,android框架類也比較熟悉,所以第一反應(yīng)就是去找有沒有截圖的方法可以用。讓人失望的是找了半天都沒有找到一個完美的截圖方案的框架類。于是在網(wǎng)上搜索、發(fā)帖咨詢等都沒有找到。
后來是一個高級程序員無意中提到了ffmpeg這個項(xiàng)目,是一個純粹用C語言開發(fā)的音視頻編解碼的項(xiàng)目。好多流行的播放器在編解碼方面都是調(diào)用的ffmpeg的功能。注意哦,這個ffmpeg完全是用C語言開發(fā)的。
有了這個思路之后,下面的事情也就簡單了,讓上層的Java代碼調(diào)用ffmpeg的C語言代碼庫。要把ffmpeg編譯為一個靜態(tài)庫包含在項(xiàng)目中,利用Java的native機(jī)制調(diào)用C語言靜態(tài)庫即可。這個C語言靜態(tài)庫中包含著各種各樣的音視頻編解碼庫,于是程序員完美地完成了這個需求。
所以C語言也許不像其他編程語言那樣可以做出精美的界面,但是很多貼近硬件的、復(fù)雜的功能除了C語言就是做不出來,最后還是得找C語言的解決方案。
C語言是本科階段大多數(shù)專業(yè)的必須科,大學(xué)階段最重要的證書之一計(jì)算機(jī)二級證書大多數(shù)人也都是選擇的C語言方向。據(jù)我了解大學(xué)的理工科專業(yè)在大一階段都會學(xué)習(xí)C語言這門課,而且還是一門必修課。C語言作為一門低級語言,采用面向過程的編程思想,相對來說比較簡單,所以才會作為入門級編程語言,也經(jīng)常作為學(xué)習(xí)其他語言前必須先學(xué)習(xí)的基礎(chǔ)語言。
智能穿戴產(chǎn)品:手環(huán),手表,VR/AR眼鏡。現(xiàn)在智能穿戴產(chǎn)品基于它們的便攜、智能等優(yōu)點(diǎn),在我們身邊已經(jīng)越來越普及了,那么這些產(chǎn)品的構(gòu)成,離不開C語言編寫的各種驅(qū)動、算法等。
嵌入式產(chǎn)品:交換機(jī),路由器,服務(wù)器,車載電腦,智能音箱,智能家居,機(jī)器人,無人機(jī)。
軟件系統(tǒng):windows操作系統(tǒng),Linux操作系統(tǒng)(Ubuntu、Redhat),游戲。
嵌入式軟件工程師
嵌入式軟件工程師通常做一些網(wǎng)絡(luò)服務(wù),數(shù)據(jù)交互等方面的工作,比如做路由器、交換機(jī)等都需要嵌入式軟件開發(fā)工程師。
Linux/Android驅(qū)動開發(fā)工程師
Linux驅(qū)動不用說,肯定是用C語言開發(fā)的,那么Android的底層是Linux,所以Android的底層驅(qū)動同樣是C語言寫的。
window驅(qū)動開發(fā)工程師
windows系統(tǒng)大部分是c寫的,所以基于windows的開發(fā)大多也都是C開發(fā),比如很多的上位機(jī)程序。
單片機(jī)開發(fā)工程師、Linux內(nèi)核工程師、游戲開發(fā)工程師
...
C語言作為一門低級語言,基于其運(yùn)行效率高等特點(diǎn),在智能電子產(chǎn)品中應(yīng)用非常廣泛,小到一個納米級的芯片,大到航空航天產(chǎn)品,都需要用到C語言。同樣,學(xué)習(xí)C語言就業(yè)也是很廣泛的。
從功能上來講,任何其他編程語言能夠做的事情,C語言都可以做到。
對于入門來說,推薦學(xué)習(xí)C語言,畢竟這是絕大多數(shù)程序員的入門語言。C語言語法簡單,易于學(xué)習(xí)。
現(xiàn)在廣泛流行的絕大部分語言,如Java、Python、Lua、Javascript、Go等這些編程語言,都是在C語言的基礎(chǔ)上衍生而來的。而且,這些語言開發(fā)在之出的第一個版本的編譯器,往往也是采用C語言開發(fā)的。因此,這些語言能夠?qū)崿F(xiàn)的功能,C語言全部都可以實(shí)現(xiàn)。
但是,隨著計(jì)算機(jī)技術(shù)的發(fā)展,現(xiàn)代軟件項(xiàng)目的規(guī)模越來越大,實(shí)現(xiàn)的復(fù)雜程度越來越高,軟件開發(fā)周期越來越長。有些大的軟件項(xiàng)目,可能需要幾千人花費(fèi)幾年的時間來開發(fā)。在這樣的背景下,為了提高開發(fā)效率,縮短軟件開發(fā)周期,降低軟件的維護(hù)成本,一些更為高效的語言應(yīng)運(yùn)而生。注意,這里說的高效,是指開發(fā)效率,不是軟件運(yùn)行效率。
現(xiàn)在流行的高級語言,如Java、Python、Go等,相比C語言來說,提供了很多提高開發(fā)效率的高級特性,如面向?qū)ο蟆討B(tài)類型、垃圾回收等。這些特性大大縮短了軟件的開發(fā)難度,降低了開發(fā)成本。
簡單總結(jié)一下,C語言適合開發(fā)一些對性能要求很高的的系統(tǒng)軟件,如BIOS、操作系統(tǒng)、編譯器、數(shù)據(jù)庫、基礎(chǔ)庫等。其他諸如Java、Python等語言,適合開發(fā)規(guī)模較大、復(fù)雜度高、對性能不是非常敏感的上層應(yīng)用軟件。
很多想學(xué)習(xí)編程或者剛開始學(xué)習(xí)編程的童鞋,往往會糾結(jié)于什么編程語言是最好的,最好的IDE工具是什么,或者哪個版本的語言最好用等等諸如此類的問題。當(dāng)然,尚未入門的童鞋,對編程還沒有什么很具體概念,這些問題也在情理之中。
但是,對于入門來說,最重要的是培養(yǎng)對編程開發(fā)的興趣,盡快找到編寫程序的感覺。可以適當(dāng)了解一下各種編程語言的特點(diǎn),但是不要過于糾結(jié)。
我的建議是,選擇一個絕大多數(shù)程序員入門的語言(通常是C或Python),然后從最簡單的“Hello World”開始,由淺入深,循序漸進(jìn),盡快了解并掌握語言的基本語法,然后逐漸培養(yǎng)程序開發(fā)的興趣和感覺。
做軟件開發(fā)這一行,個人認(rèn)為興趣是最重要的,有興趣才會有動力持續(xù)、深入的學(xué)習(xí)。一旦沒有了興趣,技術(shù)上不可能達(dá)到很高的乘次,編程也會變成一種煎熬。
希望對你有用!對編程開發(fā)感興趣的童鞋,歡迎關(guān)注我!
我一直覺得c是比較接近底層的語言了,當(dāng)然除開匯編、機(jī)器語言神馬的,感覺c是加法其他語言是乘法,乘法的實(shí)質(zhì)就是加法,但是乘法和加法都是四則運(yùn)算符號之一,c基本上可以干很多其他語言能干的事情但是一般不會用,就像你能用乘法運(yùn)算的題目不會把它用加法來實(shí)現(xiàn),因?yàn)檫^程太麻煩了,但c存在的意義就像加法一樣有些地方是不能替代的像硬件驅(qū)動啊等等這個其他人說的比較多了,這個比喻也不是特別貼切而且有點(diǎn)片面,因?yàn)椴皇撬械恼Z言都是脫胎于c的,但是大概關(guān)系應(yīng)該是這樣的
雖然是BAT的Java開發(fā)工程師,但畢竟也是某985計(jì)算機(jī)專業(yè)的本碩畢業(yè)生,我可以說C語言是編程領(lǐng)域最基礎(chǔ)最重要的語言(比Java還基礎(chǔ)的多)。
首先,C語言是本科生的必修課。在學(xué)習(xí)算法,數(shù)據(jù)結(jié)構(gòu)等重要課程之前,首先要學(xué)C語言,可見是被視為最基礎(chǔ)的工具。C/C++是偏向底層的語言,把高級語言的基本結(jié)構(gòu)與語句和低級語言的實(shí)用性結(jié)合了起來,使它可以像匯編語言一樣對位,字節(jié)還有地址進(jìn)行操作,當(dāng)然,這種操作對于初學(xué)者來說有時會導(dǎo)致程序錯誤或者崩潰。
然而正因C語言具有偏向底層的特點(diǎn),因此可以作為工作系統(tǒng)的設(shè)計(jì)語言編寫系統(tǒng)程序,比如我們常見的嵌入式系統(tǒng)。嵌入式系統(tǒng)其實(shí)與我們的生活息息相關(guān),大到汽車,小到豆?jié){機(jī),里面都有嵌入式芯片,通過C語言來將人類的操作轉(zhuǎn)化為機(jī)器語言,操作這些家用電器。
除此之外,學(xué)好了C語言,就是學(xué)到C在Linux里的應(yīng)用,而Linux眾所周知是一個非常穩(wěn)定與強(qiáng)大的操作系統(tǒng)。
C語言具備很強(qiáng)的數(shù)據(jù)處理能力,在各類程序設(shè)計(jì)以及科研上都需要C語言,還能編寫三維,二維圖形和動畫,甚至能夠編寫windows病毒。當(dāng)然上面都是非常復(fù)雜的場景了,對于一些簡單場景,C語言也能勝任,比如高并發(fā)聊天室,萬年歷等等,基本上作為一個底層語言,C語言能夠做到大部分上層編程語言能做到的事情(比如JAVA,PYTHON,PHP等等)。
最后,C語言也能進(jìn)行游戲設(shè)計(jì),簡單的游戲如幾年前很火的2048,憤怒的小鳥,五子棋,掃雷,復(fù)雜的比如ucloud網(wǎng)易家的很多大型游戲,比如王者榮耀,逆水寒,國外公司的戰(zhàn)地等等,運(yùn)行這些游戲通常對底層有更高的要求,因此代碼里通常也會有C語言存在。
總的來說,C語言是一門非常重要且基礎(chǔ)的編程語言,能夠?qū)崿F(xiàn)你的大部分需求。
以上是我的淺見,如果有幫助,歡迎給我點(diǎn)贊留言。
我是蘇蘇思量,來自BAT的Java開發(fā)工程師,每日分享科技類見聞,歡迎關(guān)注我,與我共同進(jìn)步。
近日,2019年4月份編程語言排行榜發(fā)布,如下圖所示,由圖中可以看出,C語言僅居Java之下,是使用率排名第二的編程語言。
C語言是很多計(jì)算機(jī)專業(yè)學(xué)習(xí)的第一門編程語言,之后就轉(zhuǎn)學(xué)了Java/C#/C++,那C語言究竟能做什么呢?
其實(shí)很多非計(jì)算機(jī)專業(yè)的學(xué)生,如自動化、機(jī)械、信息等專業(yè)的學(xué)習(xí)也會學(xué)習(xí)C語言。
C語言在嵌入式上應(yīng)用廣泛。當(dāng)前智能家居正火熱,而智能家居屬于嵌入式范疇,C語言在這一塊應(yīng)用廣泛,不管是功能模塊還是驅(qū)動(包括Android驅(qū)動),基本都是C語言實(shí)現(xiàn)(當(dāng)然,現(xiàn)在Lua也能代替做一些東西,但整體上,C語言還是最主要的)。比如我曾經(jīng)就寫過一個智能指紋鎖的幾個功能,全是C語言。但嵌入式這一行有一定門檻,如果你不是相關(guān)專業(yè)并且沒有很濃厚的興趣,不建議入行。
Windows、Linux等操作系統(tǒng)大部分都是C語言寫的,這個其他答案有提及,不再贅述。
那C語言為何能做這么多事?
我們知道,編程語言中,越低級的語言執(zhí)行效率越高,機(jī)器語言(0和1組成)執(zhí)行效率最高,其次是低級語言(匯編語言等),然后才是高級語言(C、C++、Java),其中低級語言是封裝機(jī)器語言而來,高級語言又是封裝低級語言而來,在這些封裝的過程中雖然隱藏掉了很多細(xì)節(jié),減少了開發(fā)難度,但執(zhí)行效率其實(shí)是越來越低。
有趣的是,高級語言之間其實(shí)又有封裝,比如C++是封裝了C,Java是封裝了C++,Python全是庫,封裝了更多。在這層關(guān)系中,C處于最底層,也就是說,在高級語言中C語言的執(zhí)行效率相對較高。因此,即兼顧了可讀性、又有執(zhí)行效率的C語言自然應(yīng)用廣泛。
以上就是我對“C語言能干什么”這個問題的回答,我本人有較多的前端、后端、Linux服務(wù)器、微信小程序及嵌入式的開發(fā)經(jīng)驗(yàn),如還有什么問題,歡迎評論區(qū)提問或者邀請我回答。
學(xué)好了C語言,當(dāng)然可以編寫游戲和軟件!
C語言是計(jì)算機(jī)的基礎(chǔ)語言,學(xué)好C語言可以為其他語言打下很好的基礎(chǔ),可以看下這張圖,C語言是系統(tǒng)層級的語言,在計(jì)算機(jī)體系中占據(jù)著不可替代的位置!
無論是Windows系統(tǒng)還是Linux系統(tǒng),大部分操作系統(tǒng)代碼都是C,Windows的API都是按照C語言的格式給的,這也很能說明問題!嵌入式開發(fā)更是離不了C語言!縱觀電腦發(fā)展幾十年,C語無所不能呀!
C語言還可以用來開發(fā)游戲服務(wù)器,3D游戲框架!
學(xué)好C語言還可以做黑客,這個不是搞笑,是真實(shí)存在的!
學(xué)了C語言能干什么?來看一張職業(yè)發(fā)展圖,你就知道啦~~
那么,如何學(xué)習(xí)C語言呢?來看一下這個學(xué)習(xí)路線圖,跟著學(xué),總沒錯哦
0
回答10
回答10
回答1
回答0
回答10
回答7
回答6
回答0
回答1
回答