武慧東 中北大學(xué)(朔州校區(qū))
C語(yǔ)言的原形是ALGOL 60語(yǔ)言簡(jiǎn)稱為A語(yǔ)言,1963年劍橋大學(xué)將其發(fā)展為CPL語(yǔ)言,1967年英國(guó)劍橋大學(xué)對(duì)CPL語(yǔ)言簡(jiǎn)化于是產(chǎn)生了BCPL語(yǔ)言。1970年美國(guó)的貝爾實(shí)驗(yàn)室以BCPL語(yǔ)言為基礎(chǔ),設(shè)計(jì)出了很簡(jiǎn)單很接近硬件的B語(yǔ)言。并用B寫出了第一個(gè)操作系統(tǒng)。1972-1973年間美國(guó)的貝爾實(shí)驗(yàn)室在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了c語(yǔ)言,C語(yǔ)言既保持了BCPL和B語(yǔ)言的精煉、接近硬件的優(yōu)點(diǎn),又克服了它們過(guò)于簡(jiǎn)單、無(wú)數(shù)據(jù)類型的缺陷。 JAVA語(yǔ)言最初稱為Oak,1990年Sun公司開始致力于開發(fā)一種可移植的、跨平臺(tái)的語(yǔ)言,該語(yǔ)言開發(fā)為了嵌入各種操作系統(tǒng),能夠編譯各種CPU芯片上的代碼,他們的精心研究和努力促成了Java語(yǔ)言的誕生。1995年由Sun推出的Java Development Kit 1.0a2版本,標(biāo)志著Java的誕生,它的出現(xiàn)標(biāo)志著分布式系統(tǒng)的真正到來(lái)。
c語(yǔ)言語(yǔ)言簡(jiǎn)潔、緊湊使用方便靈活,其中一共有37個(gè)關(guān)鍵字、9種控制語(yǔ)句,程序書寫新式自由,包含了極少與硬件有關(guān)的成分,是一種內(nèi)核語(yǔ)言,有34種運(yùn)算符,數(shù)據(jù)類型涵蓋整型、浮點(diǎn)型、字符型、數(shù)組類型、指針類型等。它還具有結(jié)構(gòu)化的控制語(yǔ)句如if-else、while、do-while、switch和for語(yǔ)句。C語(yǔ)言語(yǔ)法限制不太嚴(yán)格,允許訪問(wèn)物理地址。可移植性好,目標(biāo)代碼質(zhì)量好,程序效率高。但c語(yǔ)言編寫的程序可能因?yàn)椴僮飨到y(tǒng)的變化,處理器升級(jí)導(dǎo)致程序出現(xiàn)錯(cuò)誤無(wú)法運(yùn)行。
Java的運(yùn)算符、語(yǔ)句基本與c語(yǔ)言相類似,它具有簡(jiǎn)單、面向?qū)ο?、平臺(tái)無(wú)關(guān)性、多線程、動(dòng)態(tài),其中Java語(yǔ)言與其他語(yǔ)言相比最大的優(yōu)勢(shì)在與平臺(tái)無(wú)關(guān)性、因?yàn)镴ava在平臺(tái)上又提供了一個(gè)運(yùn)行環(huán)境。其中Java的虛擬機(jī)把源程序編譯成為字節(jié)碼的中間代碼,將字節(jié)碼翻譯成虛擬機(jī)所在平臺(tái)的機(jī)器碼,并讓平臺(tái)運(yùn)行該機(jī)器碼,這樣實(shí)現(xiàn)了Java語(yǔ)言不依賴于平臺(tái)的特點(diǎn),下圖是TIOBE在2018年6月的編程排行榜。
(1) c程序
#include
int main()
{
printf(“Hello,world ”);
return 0;
}
(2) Java程序
public class A{
public static void main (String args[ ]){System.out.println(“Hello,world”);
}
}
程序總是從main函數(shù)開始執(zhí)行,C程序在Visual C++6.0環(huán)境下運(yùn)行結(jié)果為Hello,world, Java在JDK 1.8環(huán)境下利用dos命令行運(yùn)行結(jié)果也為Hello.world 。不同的是前者在程序中定義主函數(shù),并利用printf語(yǔ)句輸出,后者是先定義了一個(gè)主類,利用main方法中的 System.out.println語(yǔ)句輸出。
c語(yǔ)言中不建議使用goto語(yǔ)句,但仍然可以使用,Java使用try塊去代替goto處理異常的功能,而且保留了break、continue程序中,允許了它在循環(huán)流程中的跳轉(zhuǎn)。
Java語(yǔ)言使用Unicode字符集,最多可以識(shí)別65536個(gè)字符,字符集前128個(gè)字符剛好是ASCII碼,它包含了世界上大部分語(yǔ)言的字母表。而在c語(yǔ)言中常使用的是ASCII字符集。因此在Java中作標(biāo)識(shí)符的字符范圍擴(kuò)大。
Java在保留c語(yǔ)言的整型、字符型、浮點(diǎn)型、又新增加了邏輯類型,同時(shí)省去了c語(yǔ)言中的無(wú)符號(hào)的byte、short、int、和long,也把c語(yǔ)言中最靈活的指針類型替換為引用類型,確保了可以訪問(wèn)已分配的內(nèi)存,這讓Java和c有很大的不同。
Java語(yǔ)言和其他面向?qū)ο缶幊桃粯?,引入了類的概念,用類去定義對(duì)象。C語(yǔ)言編寫了一個(gè)函數(shù),但沒有面向?qū)ο笳Z(yǔ)言那樣去指定行為的主體,即沒法說(shuō)誰(shuí)去負(fù)責(zé)了這個(gè)行為,而在java中最核心的內(nèi)容就是對(duì)象,一切主體都圍繞著對(duì)象展開,這就使得整個(gè)編程思維更符合人的思維模式。
封裝性:面型對(duì)象的核心思想是將屬性和對(duì)行為封裝在一起,通過(guò)抽象,即從具體的實(shí)例中形成一般概念。例如面向抽象編程的時(shí)候,讓程序設(shè)計(jì)者把主要的精力放在對(duì)程序的設(shè)計(jì)上,而不必拘泥于程序的實(shí)現(xiàn)。
繼承性:繼承體現(xiàn)了一種先進(jìn)的編程模式,子類可以繼承父類的屬性和行為,即繼承父類所具有數(shù)據(jù)和數(shù)據(jù)上的操作,同時(shí)又新增了子類特有的屬性和行為。
多態(tài)性:一種多態(tài)是操作名稱的多態(tài),即多個(gè)操作名字具有相同的名字,另外一種是和繼承有關(guān)的多態(tài),即指同一個(gè)操作被不同對(duì)象去調(diào)用產(chǎn)生不同的行為。
結(jié)語(yǔ):C作為最基本的編程語(yǔ)言,其表達(dá)能力強(qiáng),結(jié)構(gòu)完善、對(duì)以后開發(fā)新語(yǔ)言有借鑒作用。但JAVA相比起c來(lái)說(shuō)有更強(qiáng)的實(shí)用性能夠向下兼容;有很強(qiáng)的可擴(kuò)展性、可靠性。最重要的是它的保鮮度很高。由此可見java比c有更多的優(yōu)勢(shì),是一種優(yōu)秀的編程語(yǔ)言,隨著JAVA不斷地更新,它將對(duì)世界產(chǎn)生更為深遠(yuǎn)的影響。