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