嵌入式系統(tǒng)高級編程語言技術(shù)分析
時間:2007-12-27 09:44:00來源:shixiang
導(dǎo)語:?從嵌入式系統(tǒng)高級編程語言特點入手,對高級語言的基本性能作簡要總結(jié)
摘 要: 隨著嵌入式技術(shù)的普及推廣,嵌入式系統(tǒng)高級語言編程勢在必行。然而,人們在選擇語言系統(tǒng)時往往具有很大的隨意性。對價格、獲取方便性等因素考慮較多,而對語言本身的技術(shù)因素考慮較少。文章從嵌入式系統(tǒng)高級編程語言特點入手,對高級語言的基本性能作簡要總結(jié),對目前比較流行的幾種嵌入式系統(tǒng)編程語言——Ada、C/C++、Modula-2的基本技術(shù)性能進行分析比較;對Java作簡要介紹。
關(guān)鍵詞:嵌入式系統(tǒng) 高級語言 基本性能 編程特點
一、嵌入式系統(tǒng)高級語言編程特點
隨著嵌入式系統(tǒng)應(yīng)用范圍的不斷擴大和嵌入式實時操作系統(tǒng)RTOS(Real Time Operating System)的廣泛使用,高級語言編程已是嵌入式系統(tǒng)設(shè)計的必然趨勢。因為匯編語言和具體的微處理器的硬件結(jié)構(gòu)密切相關(guān),移植性較差,既不宜在復(fù)雜系統(tǒng)中使用,又不便于實現(xiàn)軟件重用;而高級語言具有良好的通用性和豐富的軟件支持,便于推廣,易于維護。因此高級語言編程具有許多優(yōu)勢。
(1) 通用性強。隨著微處理器技術(shù)的不斷發(fā)展,其功能越來越具體,種類越來越多,而不同種類的微處理器都有自己專用的匯編語言。這就為系統(tǒng)開發(fā)者設(shè)置了一個巨大的障礙,使得系統(tǒng)編程更加困難,軟件重用無法實現(xiàn);而高級語言一般和具體機器的硬件結(jié)構(gòu)聯(lián)系較少,比較流行的高級語言對多數(shù)微處理器都有良好的支持,通用性較好。
(2) 容易編程。隨著嵌入式系統(tǒng)應(yīng)用范圍的不斷擴大和應(yīng)用層面的不斷深入,系統(tǒng)規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜,設(shè)計變得越來越困難。一個系統(tǒng)內(nèi)有多種微處理器已是常見的事情。這時,要用匯編語言編程不僅要求編程人員要對所有微處理器的匯編語言都了如指掌,而且隨著任務(wù)復(fù)雜程度的不斷提高,用匯編語言實現(xiàn)規(guī)模較大的任務(wù)難度極大;而高級語言的語意層次較高,且有豐富的程序庫支持,因此,編寫較復(fù)雜的程序相對簡單。使用高級語言編程,不僅能夠加快系統(tǒng)開發(fā)進程,節(jié)省大量時間,同時也有利于系統(tǒng)調(diào)試及維護工作。
(3) 容易閱讀。由于匯編語言的語意層次較低,在閱讀匯編語言程序時,往往要花費大量精力分析"細節(jié)"問題,如為什么把一個數(shù)據(jù)傳送給一個寄存器,為什么把某個標志位清零等。當把注意力放在這些"細節(jié)"上的時候,往往又把程序的主線忘記了。因此,匯編語言程序不僅難寫,而且難讀。采用高級語言就可以很好地解決這些問題。因為高級語言的語意層次較高,表達方式更接近人們?nèi)粘5乃季S方法,一些數(shù)學(xué)表達式可以直接用一條語句表達,程序的思路更加清晰、簡捷。因此,程序也就容易閱讀。
(4) 可移植性好。由于匯編語言和具體的微處理器密切相關(guān),為某個微處理器設(shè)計的程序不能直接移植到另一個不同種類的微處理器上使用,因此,移植性差;而高級語言對所有微處理器都是通用的,因此,程序可以在不同的微處理器上運行,可移植性較好。這是實現(xiàn)軟件重用的基礎(chǔ)。
(5) 可維護性好。高級語言程序往往是模塊化設(shè)計,各個模塊之間的接口是固定的。因此,當系統(tǒng)出現(xiàn)問題時,可以很快地將問題定位到某個模塊內(nèi),并盡快得到解決。另外,模塊化設(shè)計也便于系統(tǒng)功能的擴充和升級。
(6) 直接支持中斷管理。中斷是嵌入式系統(tǒng)最重要也是最常用的信息交換方式,因此中斷系統(tǒng)是否靈活,中斷功能是否強大對系統(tǒng)的性能影響極大。在高級語言中,一般都有強大的中斷管理機制,以便構(gòu)建高效靈活的中斷系統(tǒng);而在匯編語言中,一般要由程序設(shè)計者自己編程來進行中斷管理。這不僅增加了編程的難度,而且效果也不一定好。
(7) 支持軟件重用。由于匯編語言的可移植性極差,使得其軟件重用性嚴重受阻;而高級語言具有較好的通用性和可移植性,這就使得高級語言程序可以在不同時間、不同地點、不同系統(tǒng)、不同人員之間分享,實現(xiàn)軟件重用。這不僅可以提高產(chǎn)品質(zhì)量,縮短開發(fā)周期,降低產(chǎn)品成本,而且還可以使軟件開發(fā)走上正規(guī)化、產(chǎn)業(yè)化的道路[1]。
二、嵌入式系統(tǒng)高級編程語言概述
在過去40多年,人們開發(fā)研制了幾十種計算機語言,但是僅有少數(shù)幾種得到了廣泛應(yīng)用。這就提示我們選擇一個合適的語言系統(tǒng)并不容易。在小型嵌入式系統(tǒng)中,通常只有一個微處理器,并且其主要工作往往不是計算,而是控制,應(yīng)選擇控制能力較強的語言。在大型嵌入式系統(tǒng)中,往往會有多個微處理器或計算機并行工作,構(gòu)成多機系統(tǒng)。它們中有些工作于真正的嵌入式模式,有的則為純粹的信息處理。此時,對系統(tǒng)的編程就變得相當復(fù)雜,不同的任務(wù)可能會用不同的語言編程。因此,大型系統(tǒng)往往是一個多語言系統(tǒng)。對于這種"混合"系統(tǒng)的語言選擇更應(yīng)慎重考慮。
目前,在嵌入式系統(tǒng)開發(fā)過程中使用的語言種類很多,但僅有少數(shù)幾種語言得到了比較廣泛的應(yīng)用。本文選擇了Ada、C/C++、Modula-2作為討論對象,并對Java作簡要介紹。
Ada語言是20世紀70年代美國國防部開發(fā)并投入使用的功能強大的通用系統(tǒng)開發(fā)語言,最初為Ada83。它支持模塊化、獨立編譯、協(xié)處理等功能。其可靠性、可維護性、可讀性都是相當好的。后來,為了更好地支持OOP(Object-Oriented Programming),對其進行了改進,形成了目前廣泛使用的Ada95。使用Ada語言可以大大改善系統(tǒng)的清晰性、可靠性、可維護性等性能指標[2,3]。它是美國國防部指定的唯一一種可用于軍用系統(tǒng)開發(fā)的語言。
C語言是由Dennis Richie于1972年在AT&Bell實驗室研究成功并投入使用的系統(tǒng)編程語言。其設(shè)計目標是使C既具有匯編語言的效率,又具有高級語言的易編程性。其最具代表性的應(yīng)用是UNIX操作系統(tǒng)。從20世紀80年代中期C語言涉足實時系統(tǒng)后,受到了普遍歡迎。目前是使用最廣泛的嵌入式系統(tǒng)編程語言。C++是由Bjarne Stroustrup 于1995年在Bell實驗室研制成功并投入使用的。C++在支持現(xiàn)代軟件工程、OOP、結(jié)構(gòu)化等方面對C進行了卓有成效的改進,但在程序代碼容量、執(zhí)行速度、程序復(fù)雜程度等方面比C語言程序性能差一些[2,4,5]。
Modula-2是由Nicklans Wirth在70年代后期根據(jù)Pascal 和Modula開發(fā)的系統(tǒng)設(shè)計語言。其主要目標是在模塊化、系統(tǒng)編程、協(xié)同處理等方面對Pascal 進行改進。Modula-2具有很強的類型檢查能力和豐富的低級功能支持。因此,可用它設(shè)計一個完整的實時程序而不用匯編語言的支持。Modula-3是1988年由DEC(Digital Equipment Company)和ORC(Olivetti Research Center)根據(jù)Modula-2開發(fā)研制并投入使用的系統(tǒng)開發(fā)語言。目標是設(shè)計一個功能強大但結(jié)構(gòu)簡單的通用編程語言。它在協(xié)同處理、OOP、自動垃圾收集以及對C語言和UNIX的支持等方面對Modula-2進行了改進[6]。
考察一門語言是否適用,需要從多個方面進行考慮。不同語言,都有自己的特色。很難將其全面進行比較。另外,任何一門語言的運行特性都與運行環(huán)境密切相關(guān),因此,選擇語言時,應(yīng)綜合考慮。為敘述方便,我們把語言的性能劃分為基本性能和運行性能兩個方面進行分析。
(1) 基本性能
一門語言的基本性能主要是指語言本身的固有特性,或稱靜態(tài)特性,即構(gòu)成語言的組成部分所具有的特性。它不僅決定著語言的可用性、適用性、可靠性等,而且對應(yīng)用程序的開發(fā)產(chǎn)量、便攜性、可維護性、安全性也有一定影響。它是一門語言的核心和基石。考查語言的基本性能主要從以下幾個方面入手:與匯編語言/機器語言的接口,直接尋址,對硬件的控制,位操作,中斷處理,指針操作,數(shù)據(jù)類型的支持及檢測,控制結(jié)構(gòu)的支持及檢測,模塊化支持,獨立編譯支持,任務(wù)結(jié)構(gòu)支持,異常事件處理,數(shù)學(xué)模型支持,語法和整體結(jié)構(gòu),多任務(wù)支持,標準程序庫,面向?qū)ο缶幊蹋∣OP)結(jié)構(gòu)等。
?。?) 運行性能
語言的運行性能是指其應(yīng)用軟件在實際運行時所表現(xiàn)出來的行為特點,是一門語言的動態(tài)特性。它對語言的適用性、實用性及可用性影響極大。主要表現(xiàn)在任務(wù)期限設(shè)置、代碼執(zhí)行時間的簡單評價,調(diào)度策略選擇,時序分析支持等幾個方面。由于語言的運行性能和運行環(huán)境密切相關(guān),如CPU速度、內(nèi)存大小、硬盤速度、操作系統(tǒng)、編譯環(huán)境等。因此,評價語言的運行性能應(yīng)和具體的應(yīng)用環(huán)境聯(lián)系起來,任何理論上的評價都沒有多大的實際意義。故本文不再討論這方面的內(nèi)容。
三、常用嵌入式系統(tǒng)高級編程語言基本性能
一門語言的基本性能是組成這門語言的基本要素,是決定其性能好壞的關(guān)鍵因素。因此,認真研究語言的基本性能是非常必要的。下面對上述幾種流行的嵌入式系統(tǒng)編程語言的基本性能進行簡單的分析和比較[7]。
?。?) 與匯編語言和機器代碼的接口
在Ada語言中,可以通過子程序功能實現(xiàn)對匯編語言及機器代碼的訪問。標準程序包MACHINE-CODE支持這一功能。在C中,匯編語言可以定義為一個asm模塊嵌入在C源代碼中,也可以編寫成一個獨立的外部進程,用功能調(diào)用進行通訊。宏(Macros)也可以用來提供匯編語言操作。語言本身沒有提供這方面的機制,由編譯器提供支持。
?。?) 直接尋址
Ada通過SYSTEM包中的Address類尋址絕對地址;C/C++ 通過指針完成絕對尋址,在C++中也可以通過Peek、Poke操作完成存儲器尋址;Modula-2 通過SYSTEM模塊支持絕對尋址。
(3) 對硬件的訪問和控制
Ada通過表述從句把Ada代碼映射到具體器件;C/C++通過指針完成對硬件的操作;在Modula-2中器件被標識為具有絕對地址的對象,通過賦值語句訪問這些對象。
?。?) 位操作
Ada 具體的位可以在表述從句中指明,多個獨立位也可組成一個邏輯字,通過邏輯操作對它們進行加工處理。位操作是C的強項,邏輯操作、移位操作均可實現(xiàn)位操作;在C++中,還可以通過定義"bitfields"結(jié)構(gòu)實現(xiàn)更多的位操作功能。Modula-2用"SET"結(jié)構(gòu)處理位操作。在嵌入式應(yīng)用中最有用的結(jié)構(gòu)是"BITSET",通過它可以方便地實現(xiàn)各種位操作。
?。?) 中斷處理
Ada通過中斷處理任務(wù)實現(xiàn)中斷處理。一個中斷任務(wù)和一個中斷矢量密切相關(guān),在中斷矢量地址處存放中斷任務(wù)入口地址。C/C++語言本身沒有提供標準的中斷處理機制,用戶可以自行處理。Modula-2通過SYSTEM模塊中的IOTRANSFER進程實現(xiàn)中斷處理。用戶也可以編寫自己的中斷處理程序。
?。?) 指針
三種語言都提供了較強的指針操作。
?。?) 數(shù)據(jù)類型檢測
Ada 有嚴格的數(shù)據(jù)類型檢測機制,混合類型是禁止的,數(shù)據(jù)類型的轉(zhuǎn)換是允許的,但有嚴格的規(guī)范。C語言的數(shù)據(jù)類型檢測功能較弱,在數(shù)據(jù)類型轉(zhuǎn)換時可能會出現(xiàn)錯誤,C++有改進。Modula-2 對數(shù)據(jù)類型檢測嚴格,不允許不明確的數(shù)據(jù)類型轉(zhuǎn)換。
?。?) 程序控制結(jié)構(gòu)
Ada 提供了一整套嚴格的程序控制結(jié)構(gòu)以支持分支、循環(huán)等功能,也支持無條件轉(zhuǎn)移;C/C++提供了分支、循環(huán)等控制結(jié)構(gòu),方便靈活,但在使用時應(yīng)注意避免不安全因素;Modula-2在分支、循環(huán)控制方面是很嚴格的,但在使用CASE-ELSE結(jié)構(gòu)時應(yīng)注意,在無條件轉(zhuǎn)移時,用EXIT跳出循環(huán),用RETURN結(jié)束進程,使用時應(yīng)多加小心。
?。?) 模塊結(jié)構(gòu)與獨立編譯
Ada程序的基本單元是subprogram、package、task和generic,而編譯的基本單元是subprogram和package,所有程序單元都可以獨立編譯,類型檢查嚴格,沒有公用數(shù)據(jù)區(qū)。C程序的基本單元是function,外部變量是全局變量,內(nèi)部變量是局部變量;C++程序是若干編譯文件的集合,每個文件可以定義class、function全局變量等類型,每個文件可以獨立編譯。Modula-2 的主程序由若干程序模塊和庫模塊組成,程序模塊是程序單元的最高層,各模塊可獨立編譯。
?。?0) 異常事件處理
Ada提供了一個綜合錯誤處理機制,用于處理由于語言本身和用戶自己引起的異常事件;C/C++語言沒有提供直接的異常事件處理機制,需由用戶自己處理,C++(V3.0)提供直接的異常事件處理功能;PIM Modula-2不提供異常事件處理功能,但也有一些其它編譯系統(tǒng)提供運行錯誤檢測和處理機制。
(11) 任務(wù)(task)結(jié)構(gòu)支持
"task"是Ada程序標準的組成模塊,是該語言重要的和不可分割的組成部分;C中沒有獨立的"task"結(jié)構(gòu),但可以通過"function"實現(xiàn);在C++中可以通過"classes"實現(xiàn);Modula-2中沒有獨立的"task"結(jié)構(gòu),可以用"PROC"結(jié)構(gòu)實現(xiàn)。
(12) 數(shù)學(xué)模型支持
Ada提供了較好的數(shù)學(xué)模型支持,無論在何種微處理器上運行,其程序行為都會受到嚴格檢查;C/C++支持定點、浮點運算。但數(shù)學(xué)模型并不完善,容易引起一些無定義的行為,如被0除或上下溢出等;PIM Modula-2的數(shù)學(xué)模型與運行環(huán)境有聯(lián)系,新標準在改進。
(13) 語法與結(jié)構(gòu)
Ada英語式結(jié)構(gòu)及語法,程序易讀易懂;C/C++是一種簡潔(terse)語言,程序比較難讀,C++更難讀;Modula-2語言結(jié)構(gòu)定義明確,程序容易閱讀。
(14) 多任務(wù)支持
多任務(wù)支持是Ada語言的一大特點,是其不可分割的組成部分;C/C++不支持多任務(wù);Modula-2通過"Coroutines"等機制支持多任務(wù)。
?。?5) 標準庫
Ada有豐富的基本功能庫;C/C++有非常豐富的庫程序,但在應(yīng)用中應(yīng)當注意兼容性;Modula-2有比較豐富的庫程序,但也應(yīng)注意兼容性。
?。?6) OOP結(jié)構(gòu)支持
Ada83就是一個OOP語言,Ada95又有增強;C不支持OOP,C++具有較強的OOP功能;Modula-2不支持OOP,Modula-3支持OOP。
四、關(guān)于Java
Java語言是Sun Microsystems公司于1995年在Internet上發(fā)布的面向?qū)ο蟮某绦蛟O(shè)計語言。其主要研制人是Gosling。他的目標是設(shè)計一個能夠運行于規(guī)模巨大、地域分布、體系異構(gòu)的網(wǎng)絡(luò)環(huán)境中的語言系統(tǒng),完成多個電子設(shè)備之間的通訊與協(xié)同工作。Gosling在設(shè)計中采用了虛擬機器碼(virtual machine code)方式,即Java語言編譯后產(chǎn)生的是虛擬機,虛擬機運行在一個解釋器上,解釋器用來解釋Java編譯器編譯后的程序。這使得Java成為一個與平臺無關(guān)的計算機語言,即Java應(yīng)用程序不用修改即可在不同的軟硬件平臺上運行。從而實現(xiàn)了"一次編程,到處可用"(Write once,Run anywhere),使得Java語言很快風(fēng)靡全球,甚至有人說是一場革命[8]。
(1) Java的特點
Java語言是一種網(wǎng)絡(luò)語言,但它又不僅僅局限于此。近兩年Java語言發(fā)展迅速,在很多領(lǐng)域得到廣泛使用。這說明Java確實具有鮮明的特色。
首先,Java是簡單的。它刪除了一些高級語言不是絕對必要的東西,如運算符重載、標題文件、指針運算、隱式類型轉(zhuǎn)換、多重繼承等,并通過自動垃圾收集功能大大簡化了程序設(shè)計者的內(nèi)存管理工作,使程序設(shè)計變得簡單。
第二,Java是面向?qū)ο蟮?。Java語言的設(shè)計集中于對象及其接口,它提供了簡單的類機制及動態(tài)的接口模型。對象中封裝了它的狀態(tài)變量及相應(yīng)的方法,實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并通過繼承機制使子類可以使用父類的方法,實現(xiàn)代碼重用。
第三,Java的體系結(jié)構(gòu)是中立的。一般來說,網(wǎng)絡(luò)是由不同結(jié)構(gòu)的機器構(gòu)成,CPU和作業(yè)結(jié)構(gòu)均有不同。讓應(yīng)用程序在不同結(jié)構(gòu)的機器上運行是一件困難的事;但Java編譯器能產(chǎn)生一種結(jié)構(gòu)中立的目標文件格式,使編譯碼可以在不同的處理器上運行。
第四,Java是健全的。Java在編譯和運行程序時都要對可能出現(xiàn)的問題進行檢查,以防止錯誤的產(chǎn)生。當程序出現(xiàn)例外時,Java會把它拋棄,以保證計算機系統(tǒng)不會崩潰。
第五,Java是安全的。Java不支持指針操作,避免了指針操作帶來的種種弊端。Java擁有多個階層的互鎖(interlocking)保護措施,能有效防止病毒的侵入和破壞行為的發(fā)生。字節(jié)碼驗證被Web瀏覽器用來確保小程序不含病毒。
第六,Java是多線程的。Java可以同時執(zhí)行多個線程,如它可以在進行計算的同時與用戶交互對話。通常,編寫多線程程序是困難的;但Java提供了容易使用的同步機制,使程序設(shè)計方便容易。
第七,Java是可擴展的。Java的設(shè)計使它能夠適應(yīng)不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實例變量而不影響用戶程序的執(zhí)行,同時,Java通過接口來支持多重繼承,使之比嚴格的類繼承具有更靈活的方式和更大的擴展性。
?。?) Java與嵌入式系統(tǒng)
Java是網(wǎng)絡(luò)語言,而嵌入式系統(tǒng)則在功能、價格、體積、功耗、上市時間等方面有特殊要求。因此Java語言受速度和代碼容量的限制,本身并不適合于嵌入式系統(tǒng)的應(yīng)用。但Sun公司并不愿意放棄這個發(fā)展?jié)摿薮蟮膽?yīng)用市場,對Java進行改進后發(fā)表了J2ME(Java2 Micro Edition)。它是Java API的一個子集,只包含了Java的關(guān)鍵特性,是專門針對對內(nèi)存具有苛刻要求的嵌入式系統(tǒng)而設(shè)計的。J2ME粗略地將應(yīng)用對象劃分為兩大類:內(nèi)存在128KB~512KB之間的設(shè)備和內(nèi)存大于512KB的設(shè)備,根據(jù)不同的類別提供不同的用戶接口和軟件包。
但是由于嵌入式系統(tǒng)的特殊性,一些在Java語言中被認為是特性優(yōu)異的東西卻在嵌入式系統(tǒng)中成了十分棘手的問題。如缺乏指針尋址和運行于Java虛擬機模式中的安全特性都使Java很難對硬件進行直接控制;自動垃圾收集功能使應(yīng)用失去了實時決策能力,即它不能以可預(yù)知、可重復(fù)的時間長度來處理一個具體的代碼部分。實際上Java在進行垃圾收集時暫停了整個應(yīng)用程序的執(zhí)行,因此,開發(fā)人員幾乎不能控制垃圾收集的時間。令人鼓舞的是這些問題已經(jīng)或正在被解決。即時編譯(just-in-time-compiler)程序和預(yù)先編譯(ahead-of-time-compiler)程序都可以提高Java代碼的執(zhí)行速度。如New Monic公司的Real Time Executive和WindRiver公司的Fast J都可以在一定程度上保證絕對時間決策應(yīng)用的開發(fā)。
另一方面,為能夠從硬件上更好地支持Java,很多廠家都致力于Java芯片的開發(fā)研制,以充分發(fā)揮嵌入式Java小巧靈活的特點來開拓嵌入式市場。如HP公司正在開發(fā)、完善自己的編譯工具和Java虛擬機。其目的是要Java嵌入到如打印機、醫(yī)學(xué)監(jiān)視器、自動取款機等設(shè)備中,使設(shè)備具有一定的智能,增加設(shè)備的可管理性和可用性,大大提高設(shè)備的工作效率。Sun公司宣稱將在J2ME中以Profile的形式為每個領(lǐng)域規(guī)定API組件。Java TV就是其中面向雙向數(shù)碼電視的API組件。Sun表示,Java TV技術(shù)將提供雙向電視所需的基本環(huán)境、安全性、擴展性及可攜帶性。通過Java TV技術(shù),開發(fā)人員可以開發(fā)出更加富有吸引力的信息內(nèi)容和服務(wù)。Sun還宣布,將和通用汽車公司達成合作伙伴關(guān)系,共同致力于汽車工業(yè)Java標準的確立。一旦Java成為汽車工業(yè)的電腦標準語言,Java將增加數(shù)百萬用戶。在過去的一年里,J2ME在無線通訊領(lǐng)域得到了充分的重視和廣泛的應(yīng)用。因為J2ME中包含了能夠在大多數(shù)消費者的設(shè)備中運行的Java虛擬機、專用的API函數(shù)庫和用于開發(fā)和設(shè)置的工具。因此,手機生產(chǎn)商紛紛推出能夠上網(wǎng)的手機供用戶選用。
在控制系統(tǒng)中,Java可以使所有操作在由標準Web瀏覽器提供的面板上完成。這些控制面板就是Java Applet。Web瀏覽器可以用來監(jiān)視或設(shè)置系統(tǒng)。這些監(jiān)視和設(shè)置操作均可以通過網(wǎng)絡(luò)遠程進行,這使得系統(tǒng)更加容易管理,特別是那些設(shè)置在危險的、遙遠的或不易接近地區(qū)的設(shè)備尤其需要Java的介入。
Java不僅是一門語言,更是一種思想。它將使軟件開發(fā)在設(shè)計風(fēng)格、設(shè)計方法、設(shè)計目標、設(shè)計過程等方面發(fā)生根本性變化。它將成為軟件再實現(xiàn)的基礎(chǔ),未來OS的核心,各種應(yīng)用軟件的開發(fā)平臺和實現(xiàn)環(huán)境。但Java并不是萬能的,它有自己的應(yīng)用范圍,在網(wǎng)絡(luò)管理、網(wǎng)絡(luò)應(yīng)用、面向?qū)ο蟮膽?yīng)用、可視化操作、交互式應(yīng)用領(lǐng)域Java是優(yōu)秀的;但在實時控制領(lǐng)域,如火箭控制、傳感器控制、宇宙飛行器的方位控制等方面C或匯編語言依然是最佳選擇。
總結(jié)
近年來計算機語言發(fā)展很快。新的語言不斷產(chǎn)生;流行語言不斷改進,逐步完善;不適用的語言逐步被淘汰。計算機語言的發(fā)展呈現(xiàn)出生機勃勃的景象。隨著嵌入式技術(shù)的發(fā)展,嵌入式系統(tǒng)高級編程語言倍受重視,逐步形成了百花齊放,百家爭鳴的局面。未來的嵌入式系統(tǒng)編程語言誰主潮流,現(xiàn)在還很難預(yù)測。Ada語言定義嚴格,易讀易懂,有較豐富的庫程序支持,目前在國防、航空、航天等相關(guān)領(lǐng)域應(yīng)用比較廣泛,未來仍將在這些領(lǐng)域占有重要地位。C語言具有廣泛的庫程序支持,目前在嵌入式系統(tǒng)中是應(yīng)用最廣泛的編程語言,未來仍將在嵌入式系統(tǒng)應(yīng)用領(lǐng)域占重要地位。C++在PC機系統(tǒng)和工作站系統(tǒng)中都是重要的編程語言。Visual C++將在圖形用戶接口——GUI方面有較大作用。但C++的目標代碼往往比較龐大和復(fù)雜,在嵌入式系統(tǒng)應(yīng)用中應(yīng)充分考慮這一因素。Modula-2定義清晰,支持豐富,具有較好的模塊化結(jié)構(gòu),在教學(xué)科研方面有較廣泛的應(yīng)用。雖然該語言的開發(fā)應(yīng)用一直比較平緩,但近兩年在歐洲有所復(fù)蘇。Java語言相對年輕,但發(fā)展勢頭強勁。它的"一次編程,到處可用"的特性使得它在很多領(lǐng)域倍受歡迎。隨著網(wǎng)絡(luò)技術(shù)和嵌入式技術(shù)的不斷發(fā)展,Java及嵌入式Java的應(yīng)用也將越來越廣泛。
從運行特性來說,Ada語言具有較好的運行行為。因為它和運行環(huán)境聯(lián)系較少,語言本身定義嚴格,因此其運行行為是比較出色的。C/C++語言程序的運行行為和硬件環(huán)境及編譯系統(tǒng)有較大聯(lián)系,因此,可能會產(chǎn)生較多意想不到的問題。在某個環(huán)境下運行的程序換個機器或換個編譯系統(tǒng)就可能會產(chǎn)生錯誤。因此,無論是C還是C++都有幾頁無定義行為的說明。 Modula-2也有比較好的運行行為,且仍在改進。Java語言采用虛擬機技術(shù),使得其應(yīng)用程序的運行與具體的應(yīng)用平臺無關(guān),因此,具有良好的運行特性。
雖然我們僅僅討論了Ada、C/C++、Modula-2三種語言的基本特性,對Java語言做了簡要介紹。但這足以提示我們在嵌入式系統(tǒng)開發(fā)應(yīng)用中,應(yīng)高度重視高級語言在嵌入式系統(tǒng)編程中的優(yōu)勢所在,并應(yīng)合理地選擇、研究、開發(fā)、應(yīng)用適合自己的嵌入式系統(tǒng)高級編程語言。這不僅是未來嵌入式系統(tǒng)開發(fā)應(yīng)用的發(fā)展方向,而且對我國的嵌入式技術(shù)發(fā)展意義重大。MES
參考文獻
1 Kernebeck U.Component libraries for software re-use.Microprocessors and Microsystems, 1997,21(1):49~54
2 Hill A D.The choice of programming languages for highly reliable software-a comparison of C and Ada.Ada user, 1991(3):11~103
3 http://www.ada-usa.com/about-ada-page.html/
4 Stroustrup B.The C++ programming language.3rdedn, Reading MA:Addison-Wesly, 1997
5 K H Ha.C language for finite element programming.Comput.Struct,1990,37(4):873~880
6 Wirth W.Programming in modula-2.Springer-verlag, Berlin, 4thedn, 1988
7 Cooling J E.Languages for the programming of real-time embedded systems-a survey and comparison.Microprocessors and Microsystems, 1996,20(1):67~77
8 http://www.computerworld.com.cn/search/theme/themefile.asp?themeID=327/
9 Fazio P, Gowri K.Structural Analysis Software and C Programming Language.Comput Struct, 1987,25(2): 463
標簽:
中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。