熊碧霞,余 嵐,田 爽
(中船重工集團(tuán)公司第七二二研究所,湖北 武漢 430079)
基于C語言軟件開發(fā)的效率、移植及調(diào)試研究
熊碧霞,余 嵐,田 爽
(中船重工集團(tuán)公司第七二二研究所,湖北 武漢 430079)
近些年來,科學(xué)技術(shù)飛速的發(fā)展,同時帶動著通信技術(shù)的快速前進(jìn),人們對計(jì)算機(jī)技術(shù)的需求也緊隨著快速增長,計(jì)算機(jī)應(yīng)用是當(dāng)代人不可缺少的因素。現(xiàn)如今,社會中普遍使用的計(jì)算機(jī)的編程語言,如MATLAB,C++和python等,這些計(jì)算機(jī)語言無論是在學(xué)者們的研究還是具體的應(yīng)用中,都顯得至關(guān)重要。文章以C語言及其軟件開發(fā)的相關(guān)內(nèi)容展開簡要的探討,簡單介紹了基于C語言軟件開發(fā)的效率、移植及調(diào)試,表達(dá)出C語言軟件應(yīng)用的高效性和重要性。
C語言;軟件開發(fā);計(jì)算機(jī)應(yīng)用
計(jì)算機(jī)的編程語言越來越多的為人們所用,是從事相關(guān)工作人員的必備工具,硬件是計(jì)算機(jī)實(shí)現(xiàn)其各種功能的基礎(chǔ),而軟件則是它的內(nèi)在核心,掌握一門編程語言是完成一項(xiàng)計(jì)算機(jī)研究至關(guān)重要的條件,因此,軟件被稱為網(wǎng)絡(luò)信息時代的一種新的設(shè)施。C語言是近年來應(yīng)用較廣的一種現(xiàn)代編譯型語言,對于一個專業(yè)的編程工作人員,精通C語言是基礎(chǔ),它的精確性是其被廣泛應(yīng)用的基礎(chǔ),相對其他語言而言,32個關(guān)鍵字是容易掌握的,可以控制硬件,應(yīng)用也比較方便。
早期的C語言主要是應(yīng)用于Unix系統(tǒng),由于它的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識。后來,C語言慢慢進(jìn)入其他操作系統(tǒng),得到廣泛應(yīng)用。它用來提供一種能以建議的方式編譯、處理低級存儲器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持就可以運(yùn)行的編程語言,在信息領(lǐng)域內(nèi),目前受到了普遍的應(yīng)用。如此看來,這種語言也算是有著長久的發(fā)展歷史,才得以被人們接受。
C語言與以往的機(jī)器語言相比,優(yōu)點(diǎn)很多,機(jī)器語言雖然問世早,但繁瑣、不直觀,也不易調(diào)試,比如計(jì)算y=2x+3需要幾條指令,移植性差,太過依賴于計(jì)算機(jī)。而匯編語言,雖然直觀,但也繁瑣。
對于一個簡單的程序設(shè)計(jì),一般包含確定數(shù)據(jù)結(jié)構(gòu)、確定算法、編碼、在計(jì)算機(jī)上調(diào)試程序等幾個部分,而其中的編碼和調(diào)試部分利用C語言的開發(fā)就可以完成的。而C語言的代碼是由0和1構(gòu)成的二進(jìn)制指令或者數(shù)據(jù),是一種高級的面向機(jī)器的計(jì)算機(jī)語言,它是一種結(jié)構(gòu)化程序設(shè)計(jì)語言,它的語言結(jié)構(gòu)簡單,沒有子程序的定義,由32個關(guān)鍵字,C語言中的函數(shù)可以便捷地完成子程序的功能。它可以模塊化的對函數(shù)進(jìn)行編譯,另外,C語言還提供了比較多的數(shù)據(jù)類型,這些數(shù)據(jù)類型也極大地提高了程序的高效性。
C語言語法結(jié)構(gòu)相對于其他語言,使用更加方便、靈活,功能豐富,數(shù)據(jù)類型、實(shí)現(xiàn)方式都相對不那么復(fù)雜,不僅可以實(shí)現(xiàn)高級語言的作用,而且可以發(fā)揮低級語言的作用,被廣泛地應(yīng)用到軟件的編寫中。在程序的編寫過程中,它對設(shè)計(jì)者的編程能力也不那么嚴(yán)格,語法錯誤有限,變量的類型比較靈活,設(shè)計(jì)語言的自由度比較大。而且,C語言編寫出來的程序其兼容性比較大,無需做太多的改動,便可應(yīng)用到其他的軟件中,這也就是所謂的“可移植性”強(qiáng)。
另外,C語言有很多其他的優(yōu)點(diǎn),如具有豐富的數(shù)據(jù)類型(占據(jù)字節(jié)數(shù)不等的整型、實(shí)型、字符型等),語法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大、允許直接訪問物理地址、可進(jìn)行位操作、實(shí)現(xiàn)匯編語言的大部分功能等,這些優(yōu)點(diǎn)共同推動它成為全球廣泛應(yīng)用的一種高級計(jì)算機(jī)語言。
2.1 C語言程序的編譯
一般來講,計(jì)算機(jī)語言編寫出來的程序包括源程序、目標(biāo)程序等,源程序就是指高級語言編寫的程序,這是計(jì)算機(jī)不能夠直接接受的,所以需要通過軟件作一些轉(zhuǎn)化,而目標(biāo)程序則是指二進(jìn)制代碼表示的程序,它可以被計(jì)算機(jī)接受,源程序就是通過特定的軟件把那些規(guī)則的編程語言語句轉(zhuǎn)換成二進(jìn)制的機(jī)器指令,這就是所謂的編譯程序。因此,每一種高級語言都是有與它對應(yīng)的編譯程序。
C語言中,也不可避免地存在著C源程序、目標(biāo)文件,只不過有它專用的名詞來表示,C語言的各種語句,也是通過編譯,作出如此的轉(zhuǎn)化,成為二進(jìn)制的指令。經(jīng)編譯后,它的目標(biāo)文件被表示為.OBJ文件,是一個二進(jìn)制的文件,然后由特定的軟件把.OBJ文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。在操作系統(tǒng)中,運(yùn)行這個文件就可以了。以上,就是C語言程序的具體編譯過程。
2.2 C語言軟件開發(fā)的效率
眾所周知,計(jì)算機(jī)語言的普遍具有的特點(diǎn)就是可以極大程度地提高運(yùn)行的速率,減少運(yùn)算的量,用極少而又簡單的程序代碼表達(dá)較復(fù)雜的算法并且一定程度上減少數(shù)據(jù)的存儲。無論是在數(shù)據(jù)的存儲類型還是程序軟件的結(jié)構(gòu),都是本著簡單高效的原則工作的。
C語言的數(shù)據(jù)有多種類型,在對其進(jìn)行處理時,要先存放在內(nèi)存中,不同類型的數(shù)據(jù)在存儲器中的存放格式也不相同,不同類型的數(shù)據(jù)所占內(nèi)存長度不同,數(shù)據(jù)表達(dá)形式也不同,其值域也不相同,但是,C語言中規(guī)定,任何數(shù)據(jù)都必須有明確的數(shù)據(jù)類型,這樣對數(shù)據(jù)進(jìn)行仔細(xì)地劃分后,可以使得C語言的運(yùn)行簡化、高效。
C語言程序軟件采用模塊化的結(jié)構(gòu),當(dāng)計(jì)算機(jī)在處理較為復(fù)雜的任務(wù)時,所寫出的程序常常是由上萬條語句組成,需要完成很龐大的任務(wù)量。因此,C語言會把這個復(fù)雜的任務(wù)分解成一個個子任務(wù),每個子任務(wù)再繼續(xù)進(jìn)行分解,直到每個子任務(wù)只完成一項(xiàng)簡單的功能,然后在進(jìn)行程序設(shè)計(jì)時,每個模塊去實(shí)現(xiàn)這些較小的功能,每個程序設(shè)計(jì)人員分別完成一個或多個小模塊。由此看來,把一個完整的繁瑣的程序分解成為若干個子程序,每個子程序由有限的代碼實(shí)現(xiàn),這樣,一方面減輕了程序設(shè)計(jì)人員的負(fù)擔(dān),也使得程序邏輯清晰簡單化,只需要對程序之間的數(shù)據(jù)傳遞作出統(tǒng)一規(guī)范,同一軟件可由一組人員同時進(jìn)行編寫,分別進(jìn)行調(diào)試,這就大大提高了C語言軟件的效率。
2.3 C語言軟件開發(fā)的移植
與匯編語言相比,C語言程序的可移植性可以很大程度地增加程序的可用性,所謂的“可移植性”,并不是指所寫的程序不作任何的修改就可以在任何計(jì)算機(jī)上運(yùn)行,通俗地講,它是指當(dāng)條件有變化時,程序無需作太多的修改就可以運(yùn)行,但是仍然存在著需要修改的部分。在不同的平臺上運(yùn)行時,改動的代碼是一部分,也就是指分模塊編程,把不會變的代碼寫到一起,基本上不作修改就可以用于各種型號的計(jì)算機(jī)和各種操作系統(tǒng)。比如,C語言是C++的基礎(chǔ),兩者在很多方面都是兼容的。C程序都是由函數(shù)構(gòu)成,而函數(shù)由主函數(shù)和函數(shù)體組成,如下程序:
這個程序在C語言中的運(yùn)行結(jié)果是“Hello,word!”,而在其他的一些軟件中的運(yùn)行結(jié)果也是同樣的。
2.4 C語言軟件開發(fā)的調(diào)試
編程語言在編譯和運(yùn)行的時候,可能會出現(xiàn)錯誤或者警告,而錯誤主要是包括語法和邏輯錯誤,在編譯的時候,語法錯誤可以檢測出來,而邏輯錯誤是編譯界面無法直接檢測出來的,就要通過調(diào)試來解決問題。所謂“調(diào)試”,是指程序沒有顯示語法錯誤。調(diào)試的時候,程序員應(yīng)該先進(jìn)行靜態(tài)的檢查,也就是有效的人工檢查,盡可能在程序上多加注釋,之后再上機(jī)調(diào)試,也就是動態(tài)檢查,編譯時發(fā)現(xiàn)錯誤時,可以找出并改正,然后程序員就可以連接并執(zhí)行目標(biāo)程序,然后運(yùn)行,如此反復(fù)地調(diào)試即可。比如對于上述的程序,如果在軟件中編譯發(fā)現(xiàn)錯誤,就需要針對錯誤的地方進(jìn)行更改。
近年來,由于C++的出現(xiàn),進(jìn)一步增加了C語言面向?qū)ο蟮某绦蛟O(shè)計(jì)功能,使得C語言已經(jīng)成為最流行的一種計(jì)算機(jī)程序設(shè)計(jì)語言。無論是從算法、編程、調(diào)試還是其他各個方面,C語言軟件的開發(fā)都展現(xiàn)出了極大的優(yōu)異性,相關(guān)人員應(yīng)該學(xué)會在繼承它的各種優(yōu)點(diǎn)的同時,開發(fā)出更具競爭力的計(jì)算機(jī)的高級語言,滿足人們的需求,從而推動社會的進(jìn)步。
[1]周鳴爭.C語言程序設(shè)計(jì)教程[M].成都:電子科技大學(xué)出版社,2005.
[2]田淑清.全國計(jì)算機(jī)等級考試二級教程[M].北京:高等教育出版社,2011.
[3]楊學(xué)兵.C語言程序設(shè)計(jì)[M].合肥:中國科學(xué)技術(shù)大學(xué)出版社,2004.
Research on efficiency,transplant and debugging of software development based on C language
Xiong Bixia,Yu Lan,Tian Shuang
(722nd Research Institute of China Shipbuilding Industry Corporation,Wuhan 430079,China)
With the application of computer in China for further popularization and development,people have been deeply aware of the importance of computer knowledge of contemporary human culture,computer application is an indispensable factor in contemporary society.Nowadays,the society widely uses computer high-level language such as visual,basic,C++,Java and C language.These computer languages,whether in the study of scholars or in the specific application,are very important.The article launched a brief discussion about the related content of C language and its software development,simply introducing the efficiency,transplantation and debugging of the software development based on C language,and expressing the high efficiency and the importance of the application of C language software.
C language;software development;application of computer
熊碧霞(1979—),女,湖北武漢,碩士,工程師;研究方向:無線通信。