一次又一次的民意調(diào)查顯示,即使四分之一個(gè)世紀(jì)過去了,在嵌入式領(lǐng)域,Ada還是沒能獲得可觀的市場(chǎng)份額。然而,數(shù)據(jù)明顯表明:用Ada編寫的程序比用C編寫的程序缺陷更少,并且交付更快。 Ada編譯器都由Ada合格評(píng)估測(cè)試套件(ACATS)充分評(píng)估。最流行的Ada編譯器GNAT可免費(fèi)從GPL獲得。 Ada完全是為高可靠性嵌入式應(yīng)用而設(shè)計(jì)。在這方面,無論C還是C++都無法相比。Ravenscar Profile更加精妙的針對(duì)實(shí)時(shí)嵌入式系統(tǒng)。任務(wù)分配是內(nèi)置功能,無需RTOS供應(yīng)商額外提供。 你可能認(rèn)為“更快,更好并且免費(fèi)的工具”將是相當(dāng)吸引人的理由,但是它卻沒能說服大部分人。這為什么呢? 這可能不是任何效率低下的原因所致。AdaCore的主席Robert Dewar告訴我,與C語言相比,即使采用所有運(yùn)行時(shí)檢查,所獲得的性能預(yù)期雖然不會(huì)超過20%,但大約能達(dá)到10%。 或許我應(yīng)該界定“運(yùn)行時(shí)檢查”,因?yàn)檫@個(gè)概念和C語言性質(zhì)不同。Ada會(huì)尋找錯(cuò)誤條件,例如被0除等。你甚至可以定義整數(shù)的非法范圍。但在C語言中,我們可以這樣寫: num_doses=0; morphine=patient_pain/num_doses; dispense_morphine(morphine); 我們不能將其歸咎于缺乏編譯器。AdaCore已經(jīng)將GNAT移植到大部分主流的16和32位 CPU上。 根據(jù)我的經(jīng)驗(yàn),剛接觸Ada的開發(fā)人員通常討厭這種語言。要獲得可編譯的源代碼顯得非常困難。但是,經(jīng)歷了三個(gè)Ada項(xiàng)目后,大部分程序員學(xué)會(huì)喜歡上這種語言。當(dāng)然,他們投入了更多努力,用來編寫正確的代碼(這當(dāng)然是好事情),但是他們節(jié)省了大量調(diào)試的時(shí)間。 正如一位記者Rich Ries給我寫的信所言:“Ada之所以不能成功,或許類似于我們對(duì)健康生活方式的態(tài)度-有時(shí)我們都知道應(yīng)該那樣做,但卻很少真正去實(shí)踐!” |