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