怎么才能有效的學(xué)習(xí)c語(yǔ)言
怎么才能有效的學(xué)習(xí)c語(yǔ)言
當(dāng)代社會(huì)信息技術(shù)行業(yè)興起,學(xué)習(xí)各種編程語(yǔ)言的人也越來(lái)越多,特別是入門必學(xué)的c語(yǔ)言也是更受大家歡迎。那么怎么才能有效的學(xué)習(xí)c語(yǔ)言?以下是學(xué)習(xí)啦小編分享給大家的有效學(xué)習(xí)c語(yǔ)言的方法,希望可以幫到你!
有效學(xué)習(xí)c語(yǔ)言的方法
一、一字真言
各位看官,學(xué)好C語(yǔ)言,其實(shí)只需一個(gè)字,那就是"編".
(一)遍。
學(xué)習(xí)C語(yǔ)言,乃至學(xué)習(xí)所有的語(yǔ)言,都講究一個(gè)動(dòng)手--不是動(dòng)手打人,而是動(dòng)手編程序。你必須通過(guò)編寫程序來(lái)熟悉知識(shí)、理解知識(shí)。倘若只學(xué)不編,只看別人的程序,自己不動(dòng)手寫,是不能從入門到精通的。要知道,在計(jì)算機(jī)界,只說(shuō)不練的人很欠揍。試想一下,你在哪里辛辛苦苦的編程序,他卻站在一邊,如老板一樣喋喋不休,對(duì)你提出這項(xiàng)意見(jiàn),那項(xiàng)思路,甚至?xí)痴勛约壕幊虒?huì)如何如何,好像很牛皮的樣子,但就是不編一行代碼。估計(jì)大家碰上如此之人,只會(huì)一個(gè)動(dòng)作,那就是點(diǎn)擊"踩".
一個(gè)"編"字就可以學(xué)好C語(yǔ)言嗎?真的如此簡(jiǎn)單嗎?不是的,僅僅"編"是不夠的,你還需要"我編".
(二)我編。
請(qǐng)注意修辭,"我"編!這個(gè)"我"其實(shí)就是只"你",也就是學(xué)習(xí)C語(yǔ)言的人。
大家在學(xué)習(xí)C語(yǔ)言時(shí),要多編寫程序,比如學(xué)習(xí)鏈表時(shí),要自己編寫鏈表程序,甚至自己編寫俄羅斯方塊等游戲程序來(lái)練習(xí)。不過(guò)有個(gè)前提條件,你必須自己編寫這些所有的程序才有效果,如果你從網(wǎng)絡(luò)上下載了某某源代碼,或者拷貝了同學(xué)的程序,任何大言不慚的說(shuō)是自己編寫的,那么我也只能大言不慚的告訴你,這樣做出了養(yǎng)成偷竊的習(xí)慣外,沒(méi)有任何效果!
有同學(xué)會(huì)問(wèn),那么"親自"編程序總可以精通C語(yǔ)言了吧,其實(shí)還差一點(diǎn)點(diǎn),僅僅"編"是不夠的,只是"我編"還不足以精通,為了達(dá)到C語(yǔ)言的最高峰,你還需要"我編編編".
(三)我編編編。
"編"字重復(fù)三次,這里的"三",代表多,意思是你必須多多的編寫程序。親自編寫10行代碼等于沒(méi)有編,親自編寫1000行代碼是遠(yuǎn)遠(yuǎn)不夠的,親自編寫1萬(wàn)行代碼還馬馬虎虎,親自編寫10萬(wàn)行代碼,你絕對(duì)成為程序員中的戰(zhàn)斗員。
乍一看10萬(wàn)行代碼,估計(jì)有同學(xué)會(huì)先直挺挺的躺下去,然后又眼珠一轉(zhuǎn)站了起來(lái)--他們想起了壞主意。"不就是10萬(wàn)行嗎,容易!現(xiàn)在的編程工具都有代碼生成功能,隨便在VC中用鼠標(biāo)拖曳幾下,搞一個(gè)MFC窗口程序,系統(tǒng)就自動(dòng)生成了幾百行的代碼。在搞幾個(gè)三方控件,幾千行代碼就生成了!"
再次聲明,"編編編"是有前綴的,那就是"我",也就是學(xué)習(xí)者自己,使用代碼自動(dòng)生成工具產(chǎn)生的代碼難道是"學(xué)習(xí)者"編寫的?
要不上有政策,下有對(duì)策,"不用代碼生成器,那么就抄,照著輸入代碼就行!"哎,人不能無(wú)恥到那種地步!這十萬(wàn)行代碼要"你"親自完成,親自在腦海中發(fā)芽、生根,再親自逐行輸入。這又不是什么政績(jī)?nèi)蝿?wù),也不是什么形象工程,欺騙別人最終只能是自欺欺人。
二、兩種態(tài)度
一般人提起C語(yǔ)言,常常一個(gè)字如影隨形涌上心頭,那就是"難"!害怕啊,C語(yǔ)言真是太恐怖了,傳說(shuō)中的指針真是太鋒利了,一不留神就把系統(tǒng)劃破,搞出幾個(gè)死機(jī)重啟都是太正常不過(guò)了。
其實(shí)沒(méi)有必要這么擔(dān)心,本朝太祖曾經(jīng)說(shuō)過(guò):"在戰(zhàn)略上藐視敵人,在戰(zhàn)術(shù)上重視敵人。"
(一)戰(zhàn)略上藐視C語(yǔ)言
其實(shí),C語(yǔ)言也就是一個(gè)普通的語(yǔ)言而已,別把它想象的太難!與Java相比,C語(yǔ)言也只是程序復(fù)雜一點(diǎn)、代碼冗長(zhǎng)一點(diǎn)、庫(kù)函數(shù)少上一點(diǎn)、三方控件難學(xué)一點(diǎn),編譯工具簡(jiǎn)陋一點(diǎn)、指針麻煩一點(diǎn),其他的都差不了多少,程序設(shè)計(jì)思想總是一樣、程序構(gòu)建總是相同的、程序語(yǔ)法總是類似的、程序邏輯總是差不多的。
沒(méi)有必要對(duì)C語(yǔ)言談虎色變,把他當(dāng)成一門普通的語(yǔ)言就行了。要知道,就算C語(yǔ)言再難,總比匯編語(yǔ)言容易掌握、比機(jī)器語(yǔ)言容易記憶、比英語(yǔ)容易掌握。所以要自信!一切C語(yǔ)言都是紙老虎。
(二)戰(zhàn)術(shù)上重視C語(yǔ)言
雖然我們?cè)贑語(yǔ)言面前保持了激昂的斗志,雖然我們無(wú)所畏懼。但是真正在學(xué)習(xí)得過(guò)程中,還是務(wù)必保持謙虛謹(jǐn)慎的態(tài)度,戒驕戒躁,不要因?yàn)楦懔艘粌蓚€(gè)俄羅斯方塊游戲程序就洋洋自得,以為老子天下第一,甚至只遍了10行代碼,就到CSDN博客中到處罵人,到處"踩"人的帖子。要知道,"雄關(guān)漫道真如鐵,而今邁步從頭越",無(wú)論你學(xué)了多少,只要還沒(méi)有走上工作崗位,那么萬(wàn)里長(zhǎng)征就只是才邁出了第一步,還有很長(zhǎng)的道路等待著你。
三、三個(gè)框架
學(xué)習(xí)C語(yǔ)言,"編"不是問(wèn)題,問(wèn)題是"編什么"、"怎么編"、"編多深",下面就來(lái)解決這些問(wèn)題。
(一)靜心不靜
1、靜心。
學(xué)習(xí)的過(guò)程,是一個(gè)漫長(zhǎng)而枯燥的過(guò)程,學(xué)習(xí)者必須要有吃苦耐勞的準(zhǔn)備,靜下心來(lái),從大家的視覺(jué)中消失,經(jīng)受一個(gè)長(zhǎng)時(shí)間的編程學(xué)生過(guò)程。吃盡苦中苦,方成人上人!等你重新回到大家的視野時(shí),你會(huì)有一個(gè)蛻變,那時(shí)一切的痛苦都將化為甘甜。
溫瑞安先生有一部武俠小說(shuō),叫做《請(qǐng)借夫人一用》,我們這里也借用一下。當(dāng)然不是借用別人的女朋友,而是了解一下主人翁的學(xué)習(xí)歷程。主人翁韋青青青出場(chǎng)時(shí)渾然是一個(gè)高手,他把一千零一招的功夫柔和在一招之中,但是在其出場(chǎng)之前,江湖上沒(méi)有人知道韋青青青這一號(hào)人物,因?yàn)樗谑耆缫蝗盏膶P木毠Γ沁@種練功時(shí)的不為人知,才造就了了日后的溫瑞安小說(shuō)高手。
不談武俠,來(lái)個(gè)IT版的例子。在遙遠(yuǎn)的大洋彼岸,在微軟的IE橫行之前,在互聯(lián)網(wǎng)剛剛起步之時(shí),有一個(gè)叫做"網(wǎng)景"的瀏覽器占據(jù)了市場(chǎng)99%的份額,網(wǎng)景公司在當(dāng)時(shí)的美國(guó)更是比易中天還如日中天??墒?,大家知道這個(gè)"網(wǎng)景"瀏覽器是誰(shuí)開(kāi)發(fā)的嗎?是一個(gè)學(xué)生,他在大學(xué)中不顯山不漏水,別的同學(xué)每天考慮著泡MM,他卻每天除了上課就是泡機(jī)房,是上也泡,下也泡,終于泡出了瀏覽器。
所以說(shuō),靜下心來(lái),無(wú)論其他同學(xué)在多么興奮的展示他們的某某系統(tǒng),他們的某某網(wǎng)站,既然你選擇了學(xué)習(xí)C語(yǔ)言,那么以韋青青青為榜樣吧,總有一天,你會(huì)一舉成名天下知的。
2、不靜
學(xué)習(xí)C語(yǔ)言,務(wù)必不可以急躁,務(wù)必一步一個(gè)腳印,此乃靜心。但是,學(xué)習(xí)C語(yǔ)言,也不可以太過(guò)沉默,一個(gè)人呆在機(jī)房里閉門造車妄想著創(chuàng)造出某個(gè)絕世程序然后成為中國(guó)的比爾蓋茨是不可能的。
學(xué)習(xí)靠自己,所以大部分時(shí)候我們需要自己思考、閉關(guān)修煉。但是一個(gè)人的力量終究是有限的,很多時(shí)候我們需要借助外力。比如不懂的地方咨詢老師,不明白的地方可以與同學(xué)相互討論等等,都是可以的。
有很多同學(xué),學(xué)習(xí)時(shí)碰上困難,遇上了麻煩,于是自己冥思苦想--這是對(duì)的--還是得不到結(jié)果,于是故意回避不聞不問(wèn)--這是自欺欺人。有同學(xué)說(shuō),那是因?yàn)闊o(wú)人可問(wèn),問(wèn)老師,貌似大學(xué)老師總是神龍見(jiàn)頭不見(jiàn)尾,根本找不到;問(wèn)網(wǎng)絡(luò)大蝦,網(wǎng)絡(luò)大蝦們經(jīng)常不在線,就算在線,面對(duì)洋洋灑灑的留言也視而不見(jiàn),更別提回復(fù)了;問(wèn)同學(xué),別提了太丟面子!大家同學(xué)而已,為什么要問(wèn)他,問(wèn)他豈不是說(shuō)明自己低人一等嗎,不問(wèn)!
其實(shí),大學(xué)之中同學(xué)之間相互討論是最可行的一種做法,畢竟一個(gè)王重陽(yáng)沒(méi)有時(shí)間指點(diǎn)全真七子,網(wǎng)絡(luò)大蝦比投名狀中的兄弟還不可靠,所以除了自己多思考就是同學(xué)之間多討論了。不要擔(dān)心問(wèn)問(wèn)題會(huì)低人一等,老祖宗有一句話叫做"不恥下問(wèn)",雖然你的水平比我低上一點(diǎn)點(diǎn),但是,我不覺(jué)得向不如自己的問(wèn)提問(wèn)是恥辱。多好的阿Q精神啊,用這點(diǎn)!
只有靜心,才可以更好的學(xué)到知識(shí);只有不靜心,才可以更快的學(xué)到知識(shí)。
(二)深入不深
1、深入
學(xué)好C語(yǔ)言,就一定不能浮躁,要深入的學(xué)習(xí)知識(shí)。
其實(shí),以上的話就極其浮躁,極其不深入。誰(shuí)不知道要深入學(xué)習(xí)啊,但是你的告訴大家,到底什么內(nèi)容屬于深入學(xué)習(xí)的內(nèi)容。
其實(shí),浮躁就是學(xué)習(xí)知識(shí)就是浮于表面,沒(méi)有深入理解專業(yè)知識(shí)。表現(xiàn)在編程上就是只想編寫一些所謂漂亮的、能夠拿得出手的程序,而對(duì)于一些底層的支持程序置之不理。
有的同學(xué)喜歡編寫一些漂亮的程序,比如設(shè)計(jì)漂亮的網(wǎng)頁(yè),使用某某工具開(kāi)發(fā)某某'大型'系統(tǒng)等等,當(dāng)然這都是人之常情。正如魯迅先生所說(shuō),文章寫出來(lái)總是希望擁有更多的讀者,除非是寫給戀人的。程序編出來(lái),總是希望擁有更多用戶,除非是專門為愛(ài)人開(kāi)發(fā)的。但問(wèn)題是,只編寫這類程序是不夠的,是有缺陷的。
這些所謂的程序,往往只需要對(duì)知識(shí)應(yīng)用,并不需要刨根究底研究知識(shí)的本身,甚至有很多加入了很多相當(dāng)專業(yè)的內(nèi)容,并不適合于初學(xué)者學(xué)習(xí)。比如VC中的MFC就是一個(gè)典型的誤導(dǎo)初學(xué)者的工具。利用MFC可以很方便的編寫出DIAG界面程序或者視圖文檔程序,從表面上看風(fēng)光無(wú)限,但對(duì)初學(xué)者卻禍害無(wú)窮!假如使用VC學(xué)習(xí)C++,大部分時(shí)間將用于消息的處理,控件的處理,還要閱讀大量的視圖文檔結(jié)構(gòu)類庫(kù)說(shuō)明,這些操作將耗費(fèi)了你大量的時(shí)間,得不償失。而且VC++的大部分編程是在某些位置插入代碼,至于C++部分系統(tǒng)自動(dòng)實(shí)現(xiàn)了,留給你的是純C語(yǔ)言操作。同學(xué)請(qǐng)注意,你學(xué)習(xí)的是C++,不是VC類庫(kù),也不是VC操作!
比如使用數(shù)據(jù)結(jié)構(gòu),就必須自己編寫有關(guān)鏈表、隊(duì)列和棧等內(nèi)容,你是在學(xué)習(xí),又不是工作,當(dāng)然得用自己編寫的東西呢。
又比如說(shuō)C語(yǔ)言的內(nèi)存分配函數(shù),就是那個(gè)malloc和free.一般人直接調(diào)用就行了,但是計(jì)算機(jī)專業(yè)的學(xué)生不應(yīng)該止步于此,而應(yīng)該思考這兩個(gè)函數(shù)的系統(tǒng)實(shí)現(xiàn)方法,并且編程序模擬內(nèi)存分配和釋放。設(shè)計(jì)這樣的程序,不但可以增強(qiáng)動(dòng)手能力,還可以加深對(duì)計(jì)算機(jī)知識(shí)的理解,一舉多得,何樂(lè)而不為。
2、不深
深入學(xué)習(xí)C語(yǔ)言是極其應(yīng)該的,但是大家也必須有所側(cè)重,不能胡子眉毛一把抓,所有的東西統(tǒng)統(tǒng)深入,具體表現(xiàn)在兩個(gè)方面:
其一、一些知識(shí)范圍不可過(guò)于深入。
有一些知識(shí),屬于偏僻的內(nèi)容,既不是基礎(chǔ),日后工作中也很難碰上,而且還極度困難,像這樣的東西,了解即可,完全沒(méi)有必要深入。比如說(shuō)某同學(xué)心血來(lái)潮,要編寫一個(gè)漂亮的輸入法軟件,于是苦心學(xué)習(xí)了有關(guān)輸入法的所有知識(shí),還妄圖氣死清華紫光,餓死搜狗拼音,于是仔細(xì)研究輸入法的犄角旮旯。其實(shí)這些知識(shí)均相當(dāng)偏僻,了解即可,完全沒(méi)有必要打破沙鍋問(wèn)到底。
其二、一些界面或者不必要的功能不可過(guò)于深入。
大家編寫的程序,往往伴隨大量的交互式界面設(shè)計(jì)。事實(shí)上,編程有個(gè)二八原則,即編寫80%的核心內(nèi)容將耗費(fèi)你20%的時(shí)間,而另外20%的功能將耗費(fèi)你80%的時(shí)間。實(shí)際上,作為C語(yǔ)言學(xué)習(xí),深入編寫好那80%的核心功能就可以了,耗費(fèi)80%的時(shí)間去深入完善那些20%的功能,得不償失!
所以,練習(xí)用的程序,最好是一些基礎(chǔ)的、底層的實(shí)現(xiàn),不要有太多花俏的圖像和交互式操作。當(dāng)然也可以設(shè)計(jì)一些簡(jiǎn)單的具備圖形界面的小游戲,但此時(shí)你應(yīng)該將精力更多注重于游戲本身的設(shè)計(jì),而不是游戲的畫面風(fēng)格和動(dòng)畫效果上。
學(xué)習(xí)C語(yǔ)言,有所為有所不為。
(三)枯燥不枯
1、枯燥
學(xué)海無(wú)涯苦作舟,學(xué)習(xí)當(dāng)然是一個(gè)枯燥的過(guò)程。用語(yǔ)言設(shè)計(jì)程序,表面上程序漂漂亮亮風(fēng)光無(wú)限,其實(shí)風(fēng)光的背后是黑漆漆的屏幕和冗長(zhǎng)的代碼。程序員是把美麗獻(xiàn)給別人,把枯燥留給自己的職業(yè)。
所以,學(xué)習(xí)C語(yǔ)言,就必須多設(shè)計(jì)一些枯燥的、無(wú)趣的實(shí)例。當(dāng)flash程序員在展示圖片時(shí),C語(yǔ)言程序員要去學(xué)習(xí)空洞的0和1的圖片格式;當(dāng)Java程序員設(shè)計(jì)網(wǎng)站時(shí),C程序員要去理解抽象的HTTP協(xié)議;當(dāng)。net程序員使用對(duì)象托管時(shí),C程序員總是要考慮內(nèi)存的申請(qǐng)與釋放;當(dāng)C++程序員在歡樂(lè)的使用STL庫(kù)時(shí),C程序員必須自己搭建所有的數(shù)據(jù)結(jié)構(gòu)。
在C語(yǔ)言的學(xué)習(xí)路上,絕對(duì)沒(méi)有學(xué)習(xí)其他語(yǔ)言那么多鮮花,這是每一個(gè)C語(yǔ)言愛(ài)好者必須接受的事實(shí)。
2、不枯
其實(shí),人都是需要?jiǎng)恿Φ?,憑什么別的程序員可以通過(guò)漂亮的程序享受MM的崇敬和同學(xué)的贊嘆,而C語(yǔ)言程序員就只能在0和1的世界中與電腦溝通。其實(shí),學(xué)習(xí)C語(yǔ)言的過(guò)程完全可以是快樂(lè)的。
大家在基礎(chǔ)內(nèi)容了解的差不多時(shí),完全可以循序漸進(jìn)設(shè)計(jì)一些簡(jiǎn)單的趣味游戲程序,從貪吃蛇到俄羅斯方塊,從搞怪碰碰球到連連看,從掃雷到雷電,甚至還可以是植物大戰(zhàn)僵尸和憤怒的小鳥(niǎo),編寫一些在界面上簡(jiǎn)化的趣味游戲程序來(lái),同意可以激起自己的興趣并獲取老師、同學(xué)尤其是MM的陣陣掌聲。
枯燥,是因?yàn)閷W(xué)習(xí)并非玩耍。不枯,是因?yàn)橐裢嫠R粯拥膶W(xué)習(xí)。
學(xué)習(xí)c語(yǔ)言的注意事項(xiàng)
(一)錯(cuò)誤觀點(diǎn):C語(yǔ)言低人一等
由于C語(yǔ)言常常應(yīng)用于一些服務(wù)器程序,沒(méi)有漂亮的界面,在一些同學(xué)的心目中,C語(yǔ)言程序員就成了IT民工的代名詞。類似于煤礦工人,整天生活在地底下。而那些Java程序員,.net程序員則成了白領(lǐng)麗人。
(二)錯(cuò)誤觀點(diǎn):C語(yǔ)言高人一等
與第一種情況相反,一部分同學(xué)則認(rèn)為C語(yǔ)言才是語(yǔ)言正統(tǒng)。俗話說(shuō):真正的程序員用C,聰明的程序員用delphi.那么其他的語(yǔ)言統(tǒng)統(tǒng)是神馬牌浮云,不值一提。其他的程序員,無(wú)論聰明也好,愚蠢也罷,都是盜版水貨。
(三)錯(cuò)誤觀點(diǎn):C語(yǔ)言是忠貞情人。
弱水三千,只取一瓢。有人在愛(ài)情上的忠貞,有人去在語(yǔ)言上忠貞,有人如斯內(nèi)普般一生只愛(ài)一個(gè)女人,有人欲效仿之,一生只使用一種語(yǔ)言。
正如人生而平等一樣,其實(shí),語(yǔ)言也沒(méi)有高低貴賤之分,只有適合于不適合之分。Java適合做WEB開(kāi)發(fā),C語(yǔ)言適合服務(wù)器,C++適合做游戲,等等。真正的程序員,不是只使用C語(yǔ)言的人,而是到什么山唱什么歌。任何語(yǔ)言、任何數(shù)據(jù)庫(kù)、任何操作系統(tǒng)對(duì)他來(lái)說(shuō)都只是工具,呼之能來(lái)、來(lái)之能戰(zhàn)、戰(zhàn)之能勝、揮之能去。當(dāng)JQuery方便時(shí),我不直接用JavaScript;當(dāng)速度優(yōu)先時(shí),我不用Java;當(dāng)穩(wěn)定優(yōu)先時(shí),我不用Windows.總之,倚天劍也好,屠龍刀也罷,統(tǒng)統(tǒng)是工具,為我所用,為我所奴役。
(四)光說(shuō)不練假把式
學(xué)習(xí)C語(yǔ)言的真言是"編",但是也有同學(xué)會(huì)反駁,"這么簡(jiǎn)單的程序,也需要我親自編寫嗎?"、"這個(gè)程序我看一眼就知道怎么做了"、"跳過(guò)這個(gè)程序,直接編寫后面的程序"、"不要把天才浪費(fèi)在這種小程序上"等等之類的言論不絕于耳。
C語(yǔ)言的發(fā)展歷史
C語(yǔ)言之所以命名為C,是因?yàn)镃語(yǔ)言源自Ken Thompson發(fā)明的B語(yǔ)言,而 B語(yǔ)言則源自BCPL語(yǔ)言。
1967年,劍橋大學(xué)的Martin Richards對(duì)CPL語(yǔ)言進(jìn)行了簡(jiǎn)化,于是產(chǎn)生了BCPL(Basic Combined Programming Language)語(yǔ)言。
20世紀(jì)60年代,美國(guó)AT&T公司貝爾實(shí)驗(yàn)室(AT&T Bell Laboratory)的研究員Ken Thompson閑來(lái)無(wú)事,手癢難耐,想玩一個(gè)他自己編的,模擬在太陽(yáng)系航行的電子游戲——Space Travel。他背著老板,找到了臺(tái)空閑的機(jī)器——PDP-7。但這臺(tái)機(jī)器沒(méi)有操作系統(tǒng),而游戲必須使用操作系統(tǒng)的一些功能,于是他著手為PDP-7開(kāi)發(fā)操作系統(tǒng)。后來(lái),這個(gè)操作系統(tǒng)被命名為——UNIX。
1970年,美國(guó)貝爾實(shí)驗(yàn)室的 Ken Thompson,以BCPL語(yǔ)言為基礎(chǔ),設(shè)計(jì)出很簡(jiǎn)單且很接近硬件的B語(yǔ)言(取BCPL的首字母)。并且他用B語(yǔ)言寫了第一個(gè)UNIX操作系統(tǒng)。
1971年,同樣酷愛(ài)Space Travel的Dennis M.Ritchie為了能早點(diǎn)兒玩上游戲,加入了Thompson的開(kāi)發(fā)項(xiàng)目,合作開(kāi)發(fā)UNIX。他的主要工作是改造B語(yǔ)言,使其更成熟。
1972年,美國(guó)貝爾實(shí)驗(yàn)室的 D.M.Ritchie 在B語(yǔ)言的基礎(chǔ)上最終設(shè)計(jì)出了一種新的語(yǔ)言,他取了BCPL的第二個(gè)字母作為這種語(yǔ)言的名字,這就是C語(yǔ)言。
1973年初,C語(yǔ)言的主體完成。Thompson和Ritchie迫不及待地開(kāi)始用它完全重寫了UNIX。此時(shí),編程的樂(lè)趣使他們已經(jīng)完全忘記了那個(gè)"Space Travel",一門心思地投入到了UNIX和C語(yǔ)言的開(kāi)發(fā)中。隨著UNIX的發(fā)展,C語(yǔ)言自身也在不斷地完善。直到今天,各種版本的UNIX內(nèi)核和周邊工具仍然使用C語(yǔ)言作為最主要的開(kāi)發(fā)語(yǔ)言,其中還有不少繼承Thompson和Ritchie之手的代碼。
C++語(yǔ)言代碼
在開(kāi)發(fā)中,他們還考慮把UNIX移植到其他類型的計(jì)算機(jī)上使用。C語(yǔ)言強(qiáng)大的移植性(Portability)在此顯現(xiàn)。機(jī)器語(yǔ)言和匯編語(yǔ)言都不具有移植性,為x86開(kāi)發(fā)的程序,不可能在Alpha,SPARC和ARM等機(jī)器上運(yùn)行。而C語(yǔ)言程序則可以使用在任意架構(gòu)的處理器上,只要那種架構(gòu)的處理器具有對(duì)應(yīng)的C語(yǔ)言編譯器和庫(kù),然后將C源代碼編譯、連接成目標(biāo)二進(jìn)制文件之后即可運(yùn)行。
1977年,Dennis M.Ritchie發(fā)表了不依賴于具體機(jī)器系統(tǒng)的C語(yǔ)言編譯文本《可移植的C語(yǔ)言編譯程序》。
C語(yǔ)言繼續(xù)發(fā)展,在1982年,很多有識(shí)之士和美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)為了使這個(gè)語(yǔ)言健康地發(fā)展下去,決定成立C標(biāo)準(zhǔn)委員會(huì),建立C語(yǔ)言的標(biāo)準(zhǔn)。委員會(huì)由硬件廠商,編譯器及其他軟件工具生產(chǎn)商,軟件設(shè)計(jì)師,顧問(wèn),學(xué)術(shù)界人士,C語(yǔ)言作者和應(yīng)用程序員組成。1989年,ANSI發(fā)布了第一個(gè)完整的C語(yǔ)言標(biāo)準(zhǔn)——ANSI X3.159—1989,簡(jiǎn)稱“C89”,不過(guò)人們也習(xí)慣稱其為“ANSI C”。C89在1990年被國(guó)際標(biāo)準(zhǔn)組織ISO(International Organization for Standardization)一字不改地采納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被簡(jiǎn)稱為“C90”。1999年,在做了一些必要的修正和完善后,ISO發(fā)布了新的C語(yǔ)言標(biāo)準(zhǔn),命名為ISO/IEC 9899:1999,簡(jiǎn)稱“C99”。在2011年12月8日,ISO又正式發(fā)布了新的標(biāo)準(zhǔn),稱為ISO/IEC9899: 2011,簡(jiǎn)稱為“C11”。
猜你喜歡: