1.1 C語(yǔ)言發(fā)展史
1.1.1 程序語(yǔ)言簡(jiǎn)述
在講解C語(yǔ)言的發(fā)展歷程之前,先來(lái)了解程序語(yǔ)言的發(fā)展歷程。程序語(yǔ)言的發(fā)展一共經(jīng)歷了如下3個(gè)階段。
機(jī)器語(yǔ)言
機(jī)器語(yǔ)言是低級(jí)語(yǔ)言,也稱(chēng)為二進(jìn)制代碼語(yǔ)言。計(jì)算機(jī)使用的是由0和1組成的二進(jìn)制數(shù),組成的一串指令來(lái)表達(dá)計(jì)算機(jī)的語(yǔ)言。機(jī)器語(yǔ)言的特點(diǎn)是,計(jì)算機(jī)可以直接識(shí)別,不需要進(jìn)行任何的翻譯。
匯編語(yǔ)言
匯編語(yǔ)言是面向機(jī)器的程序設(shè)計(jì)語(yǔ)言。用英文字母或者符號(hào)串來(lái)替代機(jī)器語(yǔ)言的二進(jìn)制碼,就把不易理解和使用的機(jī)器語(yǔ)言變成匯編語(yǔ)言。使用匯編語(yǔ)言比機(jī)器語(yǔ)言方便閱讀和理解程序。
高級(jí)語(yǔ)言
由于匯編語(yǔ)言依賴(lài)于硬件體系,并且匯編語(yǔ)言中的助記符號(hào)數(shù)量比較多。為了使程序語(yǔ)言能更貼近人類(lèi)的自然語(yǔ)言,同時(shí)又不依賴(lài)于計(jì)算機(jī)硬件,于是,產(chǎn)生了高級(jí)語(yǔ)言。這種語(yǔ)言的語(yǔ)法形式類(lèi)似于英文,并且因?yàn)檫h(yuǎn)離對(duì)硬件的直接操作,使得普通人易于理解與使用。其中影響較大、使用普遍的有FORTRAN、ALGOL、BASIC、COBOL、LISP、Pascal、PROLOG、C、C++、VC、VB、Delphi和Java等。
1.1.2 C語(yǔ)言歷史
從程序語(yǔ)言的發(fā)展過(guò)程可以看出,以前的操作系統(tǒng)等系統(tǒng)軟件主要是用匯編語(yǔ)言編寫(xiě)的,但是由于匯編語(yǔ)言依賴(lài)于計(jì)算機(jī)硬件,程序的可讀性和可移植性都不是很好,所以為了提高可讀性和可移植,人們開(kāi)始尋找一種語(yǔ)言,這種語(yǔ)言應(yīng)該既具有高級(jí)語(yǔ)言的特性,又不失低級(jí)語(yǔ)言的好處。于是,在這種需求下產(chǎn)生了C語(yǔ)言。
C語(yǔ)言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)和肯·湯普遜(Ken Thompson)于1970年在研制出的BCPL語(yǔ)言(簡(jiǎn)稱(chēng)B語(yǔ)言)的基礎(chǔ)上發(fā)展和完善起來(lái)的。19世紀(jì)70年代初期,AT&T Bell實(shí)驗(yàn)室的程序員Dennis Ritchie第一次把B語(yǔ)言改為C語(yǔ)言。
最初,C語(yǔ)言運(yùn)行于AT&T的多用戶、多任務(wù)的UNIX操作系統(tǒng)上。后來(lái),Ritchie用C語(yǔ)言改寫(xiě)了UNIX C的編譯程序,UNIX操作系統(tǒng)的開(kāi)發(fā)者Ken Thompson又用C語(yǔ)言成功地改寫(xiě)了UNIX,從此開(kāi)創(chuàng)了編程史上的新篇章。UNIX成為第一個(gè)不是用匯編語(yǔ)言編寫(xiě)的主流操作系統(tǒng)。
1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)委員會(huì)(ANSI)對(duì)C語(yǔ)言進(jìn)行了標(biāo)準(zhǔn)化,于1983年頒布了第一個(gè)C語(yǔ)言草案(83ANSI C),后來(lái)于1987年又頒布了另一個(gè)C語(yǔ)言標(biāo)準(zhǔn)草案(87ANSI C),最新的C語(yǔ)言標(biāo)準(zhǔn)C99在1999年頒布,并在2000年3月被ANSI采用。但是由于未得到主流編譯器廠家的支持,C99也并未得到廣泛使用。
C語(yǔ)言發(fā)展于大型商業(yè)機(jī)構(gòu)和學(xué)術(shù)界的研究實(shí)驗(yàn)室,當(dāng)開(kāi)發(fā)者們?yōu)榈谝慌_(tái)個(gè)人計(jì)算機(jī)提供C編譯系統(tǒng)之后,C語(yǔ)言就得以廣泛傳播,為大多數(shù)程序員所接受。對(duì)MS-DOS操作系統(tǒng)來(lái)說(shuō),系統(tǒng)軟件和實(shí)用程序都是用C語(yǔ)言編寫(xiě)的。Windows操作系統(tǒng)大部分也是用C語(yǔ)言編寫(xiě)的。
C語(yǔ)言是一種面向過(guò)程的語(yǔ)言,同時(shí)具有高級(jí)語(yǔ)言和匯編語(yǔ)言的優(yōu)點(diǎn),它可以廣泛應(yīng)用于不同的操作系統(tǒng),如UNIX、MS-DOS、Microsoft Windows及Linux等。
在C語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的有支持多種程序設(shè)計(jì)風(fēng)格的C++語(yǔ)言、網(wǎng)絡(luò)上廣泛使用的Java、JavaScript、微軟的C#語(yǔ)言等,學(xué)好C語(yǔ)言,再學(xué)習(xí)其他語(yǔ)言時(shí)就會(huì)很輕松。
說(shuō)明:目前最流行的C語(yǔ)言有Microsoft C(MS C)、Borland Turbo C(Turbo C)、AT&T C。
1.2 C語(yǔ)言的特點(diǎn)
C語(yǔ)言是一種通用的程序設(shè)計(jì)語(yǔ)言,主要用來(lái)進(jìn)行系統(tǒng)程序設(shè)計(jì),具有很多特點(diǎn),下面分別進(jìn)行介紹。
高效性
談到高效性,不得不說(shuō)C語(yǔ)言是“魚(yú)與熊掌”兼得。從C語(yǔ)言的發(fā)展歷史也可以看出,它繼承了低級(jí)語(yǔ)言的優(yōu)點(diǎn),產(chǎn)生了高效的代碼,并具有友好的可讀性和編寫(xiě)性。一般情況下,C語(yǔ)言生成的目標(biāo)代碼運(yùn)行效率比匯編程序低10%~20%。
靈活性
C語(yǔ)言中的語(yǔ)法不拘一格,在原有語(yǔ)法基礎(chǔ)上進(jìn)行創(chuàng)造、復(fù)合,給程序員更多的想象和發(fā)揮的空間。
功能豐富
除了C語(yǔ)言所具有的類(lèi)型外,還可以使用豐富的運(yùn)算符和自定義的結(jié)構(gòu)類(lèi)型,來(lái)表達(dá)任何復(fù)雜的數(shù)據(jù)類(lèi)型,很好地完成所需要的功能。
表達(dá)力強(qiáng)
C語(yǔ)言的語(yǔ)法形式與人們所使用的語(yǔ)言形式相似,書(shū)寫(xiě)形式自由、結(jié)構(gòu)規(guī)范,并且其中的簡(jiǎn)單控制語(yǔ)句可以輕松地控制程序流程,完成復(fù)雜繁瑣的程序要求。
移植性好
因?yàn)镃語(yǔ)言具有良好的移植性,這使得C程序在不同的操作系統(tǒng)下,只需要簡(jiǎn)單地修改或者不用修改就可以進(jìn)行跨平臺(tái)的程序開(kāi)發(fā)操作。
由于這些特點(diǎn),C語(yǔ)言備受程序員的青睞。