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