嵌入式編程感想:會用C語言的是真男人!
幾個月前筆者跟兩個年輕企業(yè)家在巴爾的摩吃了頓愉快的午餐,這兩個年輕人最近才從霍普金斯大學(xué)(Johns Hopkins University)計算機科學(xué)系畢業(yè),創(chuàng)辦了一家業(yè)績快速成長的顧問公司;他們的公司擅長以一種稱為Rubyon Rails (又稱Ruby)的語言,撰寫以網(wǎng)頁為中心的數(shù)據(jù)庫(web-centric databases)軟件。
我們邊吃飯邊談一些工作上的話題,其中一個年輕人下了個令我難忘的評論:“用C語言寫程序是真正的男人!”這句話是他跟同學(xué)在將可用的編程語言進行分類時所發(fā)明的;而即使優(yōu)秀如他,也當場承認他不符合以上“真正的男人”條件??磥恚@句話不僅反映了C語言的高難度,也顯示對較年輕的設(shè)計工程師來說,C語言真的不好掌握。
對現(xiàn)代的計算機科系學(xué)生來說,學(xué)習(xí)C語言就像選修一門用拉丁文來上的課那樣;但C語言并不是已經(jīng)過時的設(shè)計語言,且在方興未艾的嵌入式軟件開發(fā)領(lǐng)域維持著主導(dǎo)地位。下面的圖一是美國版EETimes子網(wǎng)站Embedded Systems Design十三年來針對嵌入式軟件所應(yīng)用之設(shè)計語言的調(diào)查統(tǒng)計表。
圖1
從 圖一可看出,C語言在1997~2009年之間都是嵌入式軟件開發(fā)使用最多的語言;近五年來,C與C++語言更瓜分了大部分原屬匯編語言 (assembly)的版圖,其中較高階的C++發(fā)展速度雖不如預(yù)期,但仍在嵌入式軟件設(shè)計領(lǐng)域維持27%左右的占有率。整體看來,C++語言使用率在 90年代晚期加速上升,在2001年達到高峰,然后稍微下滑、之后維持穩(wěn)定。
無論如何,嵌入式軟件設(shè)計師不會在短時間內(nèi)放棄使用C語言,原因有很多個:首先,C語言編譯器支持大多數(shù)的8位、16位與32位CPU;其次,C語言在處理器與驅(qū)動程序?qū)蛹?,兼具高低級語言的特色。
當 然,如果僅獲得一小群人數(shù)逐漸減少的程序設(shè)計師支持,C語言難以繼續(xù)作為重要的設(shè)計語言而存活;而既然C語言仍然如此重要,也意味著嵌入式軟件設(shè)計師并不 會減少。目前每年新上市的CPU有98%都是嵌入式的,這類新型CPU的長期發(fā)展性也非常樂觀。圖二顯示美國那斯達克指數(shù)與新CPU出貨量變化的消長關(guān)系。
圖1
嵌入式軟件設(shè)計教育斷層
但 在C語言在全世界各地的重要性日益增加的同時,學(xué)校里卻越來越少學(xué)生愿意去學(xué)如何使用該種設(shè)計語言;這反映了嵌入式系統(tǒng)設(shè)計領(lǐng)域日益嚴重的「教育斷層」問 題。美國的高等教育機構(gòu)在提供實用的、嵌入式軟件設(shè)計必備的技能教育方面非常失敗,相關(guān)開發(fā)技巧非得在工作崗位上才能學(xué)得到。
圖3
從圖三可以看出,在電子工程相關(guān)科系,只有一小部分課程是與嵌入式軟件開發(fā)有關(guān)的;而計算機科學(xué)系所提供的嵌入式軟件開發(fā)相關(guān)課程也只多一點點?,F(xiàn)在有不少美國大學(xué)雖提供額外的計算機工程 學(xué)分,但大多數(shù)還是來自現(xiàn)有電子工程、計算機科學(xué)系的課程與教授,并沒有太多有關(guān)嵌入式軟件開發(fā)的新內(nèi)容。而在職訓(xùn)練也很少提供嵌入式軟件開發(fā)課程。
如果以上我所舉出的,有關(guān)C語言將在可見的未來繼續(xù)保有重要性、特別是在嵌入式軟件設(shè)計領(lǐng)域的種種證據(jù)屬實,那麻煩就真的大了──因為現(xiàn)在的年輕程序設(shè)計師雖然都很聰明,他們恐怕不知道該如何使用C語言寫程序,甚至不想學(xué)。
總 有人得寫那些需求量越來越大的嵌入式軟件──新一代設(shè)計語言可能幫得上忙,卻無法支持所有那些發(fā)展資歷已數(shù)十年、未來數(shù)十年也會繼續(xù)被應(yīng)用的CPU架構(gòu); 既然這樣的趨勢難以避免,我們這個圈子需要培育年輕一代的C語言程序設(shè)計師。但該怎么做呢?若狀況持續(xù)發(fā)展下去,又會產(chǎn)生怎樣的結(jié)果?
【備注】我確信那位年輕人并沒有性別歧視,「真正的女人」當然也會使用C語言!
(參考原文:Real men program in C,by Michael Barr,本文作者為嵌入式系統(tǒng)設(shè)計領(lǐng)域的專家,目前經(jīng)營一家嵌入式系統(tǒng)顧問公司Netrino)