摘 要:C語言是作為一個程序員來說,必須要掌握也是最基礎(chǔ)的編程語言。在編程語言發(fā)展的歷史長河里,出現(xiàn)了各種各樣的編程語言,他們由不同的人開發(fā)又在不同的領(lǐng)域得到發(fā)展,從而發(fā)展到現(xiàn)今編程語言領(lǐng)域的百花齊放百家爭鳴。作為機(jī)器碼之上的匯編語言無疑是每個軟件工程師必須要了解的編程語言。本文簡述了編程語言的發(fā)展史,以及匯編語言和高級編程語言的區(qū)別和聯(lián)系。在對比中對編程語言有更深入的理解。
關(guān)鍵詞:匯編語言 高級編程語言 歷史 趨勢
中圖分類號:TP313 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-9082(2017)06-0002-02
一、編程語言的發(fā)展歷程
自從1946年世界上第一臺電子計算機(jī)問世,人類和機(jī)器的交流方式和語言就成為了軟件工程師和計算機(jī)從業(yè)者的主要研究方向,更有效更簡便的編程語言成為了軟件工程師的新寵兒,伴隨著計算機(jī)的飛速發(fā)展,計算機(jī)的硬件升級速度也越來越快,對編程語言的要求也日益嚴(yán)格。在過去的幾十年,編程語言有了長足的發(fā)展,至今已經(jīng)有四代語言問世。大量的編程語言為了滿足不同領(lǐng)域的編程要求和軟件功能,經(jīng)歷了被修改,被取代,被發(fā)展等過程,最終發(fā)展成了現(xiàn)在編程語言的多樣化。盡管人們多次試圖尋找一個能夠適應(yīng)所有編程環(huán)境的通用語言,但是卻沒有一次成功。程序設(shè)計語言正在與現(xiàn)代科技日益飛躍,人類的智慧在日益彰顯。
1.機(jī)器語言
計算機(jī)的硬件作為一種電路元件,它的輸出和輸入只能是有電或者沒電,也就是所說的高電平和低電平,所以計算機(jī)傳遞的數(shù)據(jù)是由“0”和“1”組成的二進(jìn)制數(shù),所以說二進(jìn)制的語言是計算機(jī)語言的本質(zhì)。計算機(jī)發(fā)明之初,人們?yōu)榱巳タ刂朴嬎銠C(jī)完成自己的任務(wù)或者項(xiàng)目,只能去編寫“0”、“1”這樣的二進(jìn)制數(shù)字串去控制電腦,其實(shí)就是控制計算機(jī)硬件的高低電平或通路開路,這種語言就是機(jī)器語言。直觀上看,機(jī)器語言十分晦澀難懂,其中的含義往往要通過查表或者手冊才能理解,使用的時候非常痛苦,尤其當(dāng)你需要修改已經(jīng)完成的程序時,這種看起來無序的機(jī)器語言會讓你無從下手,也很難找到程序的錯誤。而且,不同計算機(jī)的運(yùn)行環(huán)境不同,指令方式操作方式也不盡相同,所以當(dāng)你在這種機(jī)器語言就有了特定性,只能在特定的計算機(jī)上執(zhí)行,而一旦換了機(jī)器就需要重新編程,這極大的降低了程序的使用和推廣效率。但由于機(jī)器語言具有特定性,完美適配特定型號的計算機(jī),故而運(yùn)行效率遠(yuǎn)遠(yuǎn)高過其他語言。機(jī)器語言,也就是第一代編程語言。
2.匯編語言
通過我對機(jī)器語言的介紹,不難看出機(jī)器語言作為一種編程語言,靈活性較差可閱讀性也很差,為了減輕機(jī)器語言帶給軟件工程師的不適應(yīng),人們對機(jī)器語言進(jìn)行了升級和改進(jìn):用一些容易理解和記憶的字母,單詞來代替一個特定的指令,比如:用“ADD”代表數(shù)字邏輯上的加減,“MOV”代表數(shù)據(jù)傳遞等等,通過這種方法,人們很容易去閱讀已經(jīng)完成的程序或者理解程序正在執(zhí)行的功能,對現(xiàn)有程序的bug修復(fù)以及運(yùn)營維護(hù)都變得更加簡單方便,這種語言就是我們所說的匯編語言,即第二代計算機(jī)語言。但是這時候,計算機(jī)的硬件還是那些硬件,所以計算機(jī)還是不認(rèn)識那些字母符號,這時候就需要一個專門的程序把這些字符變成計算機(jī)能夠識別的二進(jìn)制數(shù)。因?yàn)閰R編語言只是將機(jī)器語言做了簡單編譯,所以并沒有根本上解決機(jī)器語言的特定性,所以匯編語言和機(jī)器自身的編程環(huán)境息息相關(guān),推廣和移植很難,但是還是保持了機(jī)器語言優(yōu)秀的執(zhí)行效率,因?yàn)樗目砷喿x性和簡便性,匯編語言到現(xiàn)在依然是常用的編程語言之一。
3.高級語言
在編程語言經(jīng)歷了機(jī)器語言,匯編語言等更新之后,人們發(fā)現(xiàn)了限制程序推廣的關(guān)鍵因素——程序的可移植性。需要設(shè)計一個能夠不依賴于計算機(jī)硬件,能夠在不同機(jī)器上運(yùn)行的程序。這樣可以免去很多編程的重復(fù)過程,提高效率,同時這種語言又要接近于數(shù)學(xué)語言或人的自然語言。在計算機(jī)還很稀缺的50年代,誕生了第一個高級編程語言。當(dāng)時計算機(jī)的造價不菲,但是每天的計算量有有限,如何有效的利用計算機(jī)有限的計算能力成為了當(dāng)時人們面對的問題。同時,因?yàn)橘Y源的稀缺,計算機(jī)的運(yùn)行效率也成為了那個年代工程師追尋的目標(biāo)。為了更高效的使用計算機(jī),人們設(shè)計出了高級編程語言,來滿足人們對于高效簡的編程語言的追求。用高級編程語言編寫的程序需要經(jīng)過翻譯,翻譯成機(jī)器所能識別的二進(jìn)制數(shù)才能由計算機(jī)去執(zhí)行。雖然,高級編程語言編寫的程序需要一些時間去翻譯代碼,從而降低了計算機(jī)的執(zhí)行效率,但是實(shí)踐證明,高級編程語言為工程師帶來的便利遠(yuǎn)遠(yuǎn)大于降低的執(zhí)行效率。經(jīng)過各軟件工程師和專家的不懈努力,1954年,第一個完全意義的高級編程語言—FORTRAN問世了,他完全脫離了特定機(jī)器的局限性,是第一個通用性的編程語言。從第一個編程語言問世到現(xiàn)今,共有幾百種高級編程語言出現(xiàn),很多語言成為了編程語言發(fā)展道路上的里程碑,影響很大。比如:FORTRAN、BASIC、JAVA、C、C++、python等。高級編程語言也從早期的控制信號變成了現(xiàn)在的有結(jié)構(gòu)有格式的程序編寫工具,C++等語言的出現(xiàn)更是開啟了面向?qū)ο缶幊陶Z言的新章。同時伴隨著軟件編寫效率的提高,軟件開發(fā)也逐漸變成了有規(guī)模、有產(chǎn)業(yè)的商業(yè)項(xiàng)目。
二、高級編程語言、匯編語言和機(jī)器語言的區(qū)別
根據(jù)上面的簡單介紹,我們可以說作為編程語言的一種劃分,高級編程語言和低級語言構(gòu)成了一般意義上的計算機(jī)語言。而高級編程語言又是和匯編語言對比而言。高級編程語言作為一種通用的編程語言,它的語言結(jié)構(gòu)和計算機(jī)本身的硬件以及指令系統(tǒng)無關(guān),它的可閱讀性更強(qiáng),能夠方便的表達(dá)程序的功能,更好的描述使用的算法。同時,它更容易被初學(xué)者所掌握,很容易學(xué)習(xí)。而且容易學(xué)習(xí)掌握。但是高級編程語言因?yàn)槭且环N編譯語言,所以他的運(yùn)行速度比匯編程序要低,同時因?yàn)楦呒壵Z言比較冗長,所以代碼的執(zhí)行速度也要慢一些。所以說匯編語言更適合編寫一些需要高效率運(yùn)行的程序或者對程序代碼的長度又要求的程序,同時在直接控制硬件方面也能夠起到很好的作用。
高級編程語言,作為用戶層面的編程工具,用戶并不需要去了解硬件的結(jié)構(gòu),而是去用邏輯的語言去實(shí)現(xiàn)想要的目標(biāo),但是因?yàn)楦呒壘幊陶Z言的架構(gòu)高于匯編,所以不能編寫直接訪問硬件資源的系統(tǒng)程序,因次,高級編程語言必須要調(diào)用匯編語言編寫的程序來訪問硬件地址。
機(jī)器語言(machine language)就是一種指令集了,它是一串?dāng)?shù)據(jù)代碼,也可以叫做機(jī)器碼。他能夠由硬件直接讀取,同時硬件返回的數(shù)據(jù)也是這種二進(jìn)制代碼。機(jī)器語言是作為直接控制硬件的橋梁,連接這軟件和硬件兩個不同領(lǐng)域的技術(shù)。它是計算機(jī)的設(shè)計者通過計算機(jī)的硬件結(jié)構(gòu)賦予計算機(jī)的操作功能。機(jī)器語言執(zhí)行速度是上述語言中最快的,而且無需編譯直接執(zhí)行。用機(jī)器語言編寫程序,編程人員不僅要對所有二進(jìn)制數(shù)字所指代的指令爛熟于心,而且還要手動為程序分配存儲空間以及輸入和輸入。所以這是一個十分復(fù)雜的過程,即使編寫簡單程序也好耗費(fèi)大量的人力。而且不論是代碼還是輸出,全是“0”和“1”的數(shù)字串,在后期的閱讀和維護(hù)也會非常困難,所以機(jī)器語言已經(jīng)慢慢的推出了主流編程語言的領(lǐng)域。
三、匯編語言和高級編程語言的優(yōu)缺點(diǎn)
1.匯編語言的優(yōu)缺點(diǎn)
匯編語言作為機(jī)器語言之上的第二代編程語言,它也有很多優(yōu)點(diǎn):
1)可以輕松的讀取存儲器狀態(tài)以及硬件I/O接口情況
2)編寫的代碼因?yàn)樯倭撕芏嗑幾g的環(huán)節(jié),可以能夠準(zhǔn)備的被執(zhí)行
3)作為一種低級語言,可擴(kuò)展性很高
缺點(diǎn):
1)因?yàn)榇a非常單調(diào),特殊指令字符很少,所以造成了代碼的冗長已經(jīng)編寫的困難
2)因?yàn)閰R編仍然需要自己去調(diào)用存儲器存儲數(shù)據(jù),很容易出現(xiàn)BUG而且調(diào)試起來也不容易
3)就算完成了一個程序,后期維護(hù)時候也需要耗費(fèi)大量的時間。
4)因?yàn)闄C(jī)器的特殊性造成了代碼兼容性差的缺陷。
2.高級編程語言的優(yōu)點(diǎn)
因?yàn)楦呒壘幊陶Z言很多,我們就拿C語言展開論述。C語言是一個面向過程的語言,用戶根據(jù)自己的需求來調(diào)用函數(shù)或創(chuàng)建目標(biāo)。因?yàn)槊鞔_的目標(biāo)性以及理解容易,一個新手很容易去學(xué)習(xí)C語言。同時C語言因?yàn)榘l(fā)展的歷史,擁有很多函數(shù)庫,用戶可以根據(jù)自身的需求在代碼中加入頭文件來調(diào)用這些函數(shù)來實(shí)現(xiàn)自己的功能,當(dāng)然使用者也可以根據(jù)自己的喜好編寫函數(shù)來在后續(xù)的代碼中調(diào)用,關(guān)鍵字像if,else,return,main,end等這些簡單易懂的單詞也使得C語言記憶和理解起來更加容易。作為一個通用性很高的編程語言,C語言的可移植性是它出色的優(yōu)點(diǎn)之一,你可以在任意一臺電腦、一個設(shè)備上運(yùn)行程序而不需要重新編譯。
四、對未來編程語言的展望
通過上面的介紹,我們不難發(fā)現(xiàn)面向?qū)ο笏枷朐诰幊淘O(shè)計中占有很重要的地位,同時現(xiàn)在編程語言的多元化也告訴我們,未來的語言發(fā)展不會是一枝獨(dú)秀,也不會是單純的語言發(fā)展,而是以完全面向?qū)ο蟮淖藨B(tài)你展現(xiàn)我們的現(xiàn)實(shí)世界。它將更容易被工程師學(xué)習(xí)和使用,人們完全可以通過簡單的操作來完成復(fù)雜的編程。這就得出了未來語言發(fā)展的第一個趨勢--面向?qū)ο?,由計算機(jī)來提供現(xiàn)有的函數(shù)功能、封裝結(jié)構(gòu)。而工程師只需要去拿現(xiàn)成的函數(shù)來調(diào)用,大大提高了代碼的利用率。同時簡單性也成為未來追求的目標(biāo),如果一個有簡單計算機(jī)知識的人只需學(xué)習(xí)一些基本的操作就能編寫適合于各種情況的應(yīng)用程序,這樣創(chuàng)造和編寫的成本將會大大降低。在互聯(lián)網(wǎng)高速發(fā)展的今天,安全也將成為了代碼編寫中必不可少的因素,一個更安全更具有保密性的語言也是未來的需求。綜上在這樣一個“百花齊放百家爭鳴”的編程語言環(huán)境,只有能真正給使用者帶來便利的語言才會走的更遠(yuǎn)走的更好。
參考文獻(xiàn)
[1]張祎蕊,C++教學(xué)方法及學(xué)習(xí)方法的調(diào)研與分析,計算機(jī)教育第23期
[2]王文東,李竹林,尚建人,匯編語言與C語言的混合程序設(shè)計技術(shù),計算機(jī)發(fā)展第十六卷第八期
[3]路士兵,淺談計算機(jī)匯編語言的特點(diǎn)和學(xué)習(xí)方法,科技創(chuàng)新導(dǎo)報2014NO.20
[4]曲瑞超,學(xué)習(xí)匯編語言的重要性,赤峰學(xué)院學(xué)報(自然科學(xué)版)第26卷第一期
作者簡介:沈大智,男,漢,2000年02月10日出生,籍貫:河北省保定市淶源縣,高中在讀,就讀學(xué)校:衡水第一中學(xué)。