為什么要學(xué)c語言 孫志剛 學(xué)c語言為什么感覺很困難
為什么要學(xué)習(xí)C語言?第一講 C語言簡介及為什么要學(xué)習(xí)C語言?為什么要學(xué)C語言呢 你有認(rèn)真想過嗎?為什么要學(xué)習(xí)c語言?它具有哪些特性?為什么要學(xué)習(xí)C語言?
本文導(dǎo)航
現(xiàn)在還有必要學(xué)c語言嗎
1.簡約
雖說用好c語言很難,但是對于c語言的入門是很容易的,用一句話來形容c語言,我覺得是易于上手,難于精通,C語言在語法上的使用很簡單,因?yàn)樗皇呛芨呒?也不是很龐大,在第二版(K&R)中,它的參考手冊僅僅用了49頁就描述了整個C語言,沒有迭代器,沒有裝箱....C語言的這種“低級”讓我們在學(xué)習(xí)時(shí)會把重點(diǎn)放在自己控制上,所以什么都會選擇自己動手,而在用java或python時(shí),我的第一感覺,往往是,“嗯,我有哪些工具可以使用?”太多的工具選擇,有時(shí)候是件壞事,因?yàn)闆]了許多鍛煉的機(jī)會,而且很難抓住重點(diǎn),有的時(shí)候什么都沒有反而是件好事。<!--more--
2,原理
操作系統(tǒng)是一個程序員應(yīng)該學(xué)好的一門課,但是我們在學(xué)習(xí)的那些操作系統(tǒng)概念很難深入理解,或者比較抽象,比如餓死哲學(xué)家之類的,僅僅知道概念,是不能解決實(shí)際問題的,比如,你可能學(xué)過一些進(jìn)程的概念,或者內(nèi)存分段之類的,那我問你,windows進(jìn)程問什么沒有僵死?在windows中如何修改一個進(jìn)程中的數(shù)據(jù)?Linux的fork和Windows的createProcess有什么不同?linux有線程嗎?你寫一個我看!你的理論不管用了,因?yàn)槟銢]有實(shí)踐過.所以,我覺得學(xué)習(xí)操作系統(tǒng)最好的方式就是用c語言進(jìn)行系統(tǒng)調(diào)用,這種方式在unix和linux下能獲得更好的學(xué)習(xí)方式,因?yàn)閣in32-sdk不適合學(xué)習(xí),更適合開發(fā),在unix下,你能用你的操作系統(tǒng)知識與fork(),exe(),wait()等系統(tǒng)調(diào)用很好的結(jié)合.
而且不僅僅是操作系統(tǒng)你,在學(xué)習(xí)c語言的時(shí)候,你不得不接觸一些系統(tǒng)結(jié)構(gòu)的知識,比如字節(jié)對齊,比如c語言的地址空間,你就會知道堆棧這種東西,如果不是遞歸,是可以沒有的.你就會知道虛擬地址到實(shí)際地址的轉(zhuǎn)換.這些在java和c#中變得透明,但是透明是為了方便開發(fā),透明對一個學(xué)習(xí)者是有害的,想象今后的云計(jì)算,將會是怎樣的開發(fā)?它將培養(yǎng)更多的碼農(nóng)。
3,數(shù)據(jù)結(jié)構(gòu)與算法
用C語言來學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法在合適不過了,用指針去寫吧,用Java和c#下的學(xué)習(xí)更像是會用。你可能會說C++更好,但是你的類(變量+函數(shù))本質(zhì)跟c語言中的結(jié)構(gòu)體+函數(shù),沒有區(qū)別,除非你用模板,多態(tài),重載,我才承認(rèn)你在用c++,但是你的重點(diǎn)篇了,我們不是在討論學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法嗎?你現(xiàn)在是在學(xué)習(xí)語言特性了。
4,更好的過渡
本文所寫的是為什么學(xué)習(xí)C語言,作為一個學(xué)生,我覺得說什么C語言開發(fā)更高效,就是個笑話,因?yàn)?,談到開發(fā),又開始談金錢,時(shí)間,一大堆的東西,你會問,為什么不是java或python?開發(fā)是開發(fā)的事,你學(xué)的扎實(shí)還不會開發(fā)?我只是說c語言的路線更適合學(xué)習(xí),你又會問錢都掙不上學(xué)什么?我記得有一次一個來做java培訓(xùn)的人說,“我們培訓(xùn)java,你們把自己做成一個商品,推銷出去?!薄N矣X得很可笑,我們要做的不是商品,最起碼是一支股票。所以害怕學(xué)的東西找不到工作的人,用一切時(shí)間來猶豫徘徊。
c語言學(xué)習(xí)從哪里來
C語言是一種廣泛應(yīng)用的計(jì)算機(jī)語言,相信觀看我們教程的各位,沒有不知道什么是C語言的;對于C語言的歷史這里就不做介紹了,我們說一下C語言的標(biāo)準(zhǔn)。
·k&RC標(biāo)準(zhǔn):這是1978年由美國電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表的C語言標(biāo)準(zhǔn),是zui早期的C語言標(biāo)準(zhǔn)。
·ANSI C/ C89標(biāo)準(zhǔn):我們所看到的大部分的教科書中,用到的也是這個標(biāo)準(zhǔn),而且,我們的教程中也是按照這個標(biāo)準(zhǔn)講的。1990年,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)把C89標(biāo)準(zhǔn)定為C語言的國際標(biāo)準(zhǔn),命名為ISO/IEC 9899:1990 - Programming languages -- C。因?yàn)榇藰?biāo)準(zhǔn)是在1990年發(fā)布的,所以有些人把簡稱作C90標(biāo)準(zhǔn)。不過大多數(shù)人依然稱之為C89標(biāo)準(zhǔn),因?yàn)榇藰?biāo)準(zhǔn)與ANSI C89標(biāo)準(zhǔn)完全等同。
·C99標(biāo)準(zhǔn):1999年1月,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)發(fā)布了C語言的新標(biāo)準(zhǔn),名叫ISO/IEC 9899:1999 - Programming languages -- C ,簡稱C99標(biāo)準(zhǔn)。這是C語言的第二個官方標(biāo)準(zhǔn)。C99標(biāo)準(zhǔn)較C89標(biāo)準(zhǔn)增加了一些新的特效,如Bool類型、long long、long double等等。如果大家想了解標(biāo)準(zhǔn)新增的詳細(xì)內(nèi)容,可以在網(wǎng)上查找相關(guān)的文章。
·C11標(biāo)準(zhǔn):2011年12月8日,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)再次發(fā)布了C語言的新標(biāo)準(zhǔn),名叫ISO/IEC 9899:2011 - Information technology -- Programming languages -- C ,簡稱C11標(biāo)準(zhǔn),原名C1X。這是C語言的第三個官方標(biāo)準(zhǔn),也是C語言的zui新標(biāo)準(zhǔn)。
這些只是一些C語言的標(biāo)準(zhǔn),不理解也沒關(guān)系,也不會影響我們程序的編寫。
2.我們?yōu)槭裁匆獙W(xué)習(xí)C語言
C語言作為一種高級語言,現(xiàn)在好多公司編程都使用C語言,尤其是嵌入式這個領(lǐng)域。大家可以從網(wǎng)上看看世界編程語言排行榜,C語言基本一直都沒下過前三名。
從學(xué)習(xí)的角度來說,學(xué)習(xí)C語言是很必要的,C語言有如下優(yōu)勢:
① C語言比較靈活,可以直接使用指針。
② C語言是跨平臺的語言,幾乎同樣的代碼可以運(yùn)行在不同的平臺,如Windows、Linux、Unix等等。
③ C語言的執(zhí)行較其他的高級語言速度快,而且開銷小。
⑤ 學(xué)好C語言,有助于我們鍛煉編程的思維,加強(qiáng)我們的邏輯能力。
小編是做嵌入式開發(fā)的,在嵌入式開發(fā)中差不多有90%的軟件代碼使用C語言編寫的,當(dāng)然也有一部分代碼使用C++和匯編編寫的。匯編也一般是使用芯片廠家寫好的Boot程序,頂多是對寫好的Boot做部分的修改。
c 語言有必要學(xué)么
1、首先是雞湯,也就是為什么要學(xué)C語言。你可以先問自己,為什么我要學(xué)C語言?是為了應(yīng)付考試,還是為了應(yīng)聘,還是為了提高自己的編程能力。我想說的是,如果你打算以后長期從事計(jì)算機(jī)方面的工作,你就必須會一門編程語言,讓C來做你的啟蒙伴侶再好不過了。為什么?
通用。
語法簡單,C語言學(xué)起來真的很簡單,關(guān)鍵字就那么幾個。
貼近硬件,讓學(xué)會編程的同時(shí),對計(jì)算機(jī)的有初步了解。
C語言無處不在。電飯鍋,路由器,操作系統(tǒng) and so on 。
對以后學(xué)其他語言都是有很大幫助的,具體你會知道什么是堆,什么是棧,內(nèi)存的分配與釋放。。。。。。這些都是所有語言都會涉及到的。
2、學(xué)習(xí)方法。多寫代碼,多寫代碼,多寫代碼,重要的事說三遍!有一種感覺加“碼感”。還有一件重要的是:多思考,多總結(jié),多看別人的文章。推薦你去【CSDN】,或者【博-客-園】開通博客,記錄自己的學(xué)習(xí)點(diǎn)點(diǎn)滴滴。
遇到很頭疼的知識點(diǎn)怎么辦,先跳過去,過一段時(shí)間再回頭來看。
實(shí)在解決不了就去Google,百度。你的問題很特別,搜不出來,就去論壇提問吧。
提問的藝術(shù):不要問一些百度就能出來的語法問題。
具體學(xué)習(xí)方法:
第一階段《C Primer Plus》藍(lán)皮+郝斌的C語言視頻
我沒推薦經(jīng)典的《The C Programming Language》,因?yàn)槲遗e得《C Primer Plus》比較??亂壞悖?比徽飫锏??率嵌醞耆?躚д哂瀉艽蟀鎦?摹?茨闋約旱幕?“傘:鹵蟮氖悠狄彩嗆苤匾?模?躚д咄??枰?桓觥捌啊保?徊揭徊降惱兆嘔??詈蟛嘔嶁闖鱟約旱拇?搿?/p>
第二階段
《C與指針》學(xué)完C,不熟練指針,就是白學(xué)。
《C語言深度剖析》來自陳正沖前輩,這是一本關(guān)于C語言的“野史”,很有味道,強(qiáng)烈推薦。
《C缺陷與陷阱》多看別人掉坑史,前車之鑒后事之師。
第三階段數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)學(xué)習(xí)。
c語言是什么樣的語言
我在網(wǎng)上看到一些,也許對你有幫助:
1)相比較其他的編程語言(像c++,java),c語言是個低級語言。從總體上來說,低級的編程語言可以讓你更好的了解計(jì)算機(jī)。
2)設(shè)備驅(qū)動程序和操作系統(tǒng)只能用c語言來編寫。現(xiàn)在,你可能還從來沒有編寫過一個設(shè)備驅(qū)動程序或者一個操作系統(tǒng),但是如果你需要去修改他們的時(shí)候,怎么辦?
3)如果你想要得到一份編寫微控制器程序的工作的時(shí)候,該怎么辦?他們都是用c語言編寫的。就因?yàn)椴幌雽W(xué)習(xí)一門新的語言,你就準(zhǔn)備限制你能得到工作的機(jī)會嗎?
4)c的程序比其他用別的語言寫的程序,實(shí)現(xiàn)相同的功能,它用的代碼行數(shù)更少,而它帶來的運(yùn)行效率卻更快。有時(shí)候,你的程序所需要的速度,只有c語言能做到。
5)如果你學(xué)習(xí)過c語言,你就能學(xué)習(xí)現(xiàn)在任何的高級編程語言。因?yàn)樗械母呒壵Z言都是以c語言為基礎(chǔ)的(像java,c++,c#等等)。
6)因?yàn)閏語言已經(jīng)存在很多年了,它有廣泛的使用團(tuán)體并且有大量的現(xiàn)成代碼可以利用。這就使你能在過去程序的基礎(chǔ)上,快速和高效的編寫新的算法和函數(shù)。
7)c語言是一個開源組織的語言。一個開源組織的產(chǎn)物--linux,就是用c語言寫的。如果你會c語言,你就能參加這個組織并且還能向眾多的開源組織投稿,比如參加source
forge并且給他們投稿。
8)c語言是唯一一個向你闡述指針的本質(zhì)的語言。而c#和java干脆跳過了指針這個題目。可是指針確實(shí)使c語言變得更加強(qiáng)大。
9)找編程開發(fā)方面的工作時(shí),c語言仍然是最普遍需要的語言。所以它值得你花時(shí)間去學(xué)會它。
10)
任何里面有微處理器的設(shè)備都支持c語言。從微波爐到手機(jī),都是由c語言技術(shù)來推動的。
學(xué)c語言為什么感覺很困難
(1)應(yīng)用軟件。Linux操作系統(tǒng)中的應(yīng)用軟件都是使用C語言編寫的,因此這樣的應(yīng)用軟件安全性非常高。
(2)對性能要求嚴(yán)格的領(lǐng)域。一般對性能有嚴(yán)格要求的地方都是用C語言編寫的,比如網(wǎng)絡(luò)程序的底層和網(wǎng)絡(luò)服務(wù)器端底層、地圖查詢等。
(3)系統(tǒng)軟件和圖形處理。C語言具有很強(qiáng)的繪圖能力和可移植性,并且具備很強(qiáng)的數(shù)據(jù)處理能力,可以用來編寫系統(tǒng)軟件、制作動畫、繪制二維圖形和三維圖形等。
(4)數(shù)字計(jì)算。相對于其他編程語言,C語言是數(shù)字計(jì)算能力超強(qiáng)的高級語言。
(5)嵌入式設(shè)備開發(fā)。手機(jī)、PDA等時(shí)尚消費(fèi)類電子產(chǎn)品相信大家都不陌生,其內(nèi)部的應(yīng)用軟件、游戲等很多都是采用C語言進(jìn)行嵌入式開發(fā)的。
(6)游戲軟件開發(fā)。游戲大家更不陌生,很多人就是由玩游戲而熟悉了計(jì)算機(jī)。利用C語言可以開發(fā)很多游戲,比如推箱子、貪吃蛇等。
上面僅列出了幾個主要的C語言應(yīng)用領(lǐng)域,實(shí)際上,C語言幾乎可以應(yīng)用到程序開發(fā)的任何領(lǐng)域。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由尚恩教育網(wǎng)發(fā)布,如需轉(zhuǎn)載請注明出處。