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