專家呼籲:學生們把C學好吧!
Struggle continues to plug embedded programming gap
WASHINGTON – Growing concerns about the quality of U.S. engineering education are increasingly focusing on specific areas like the shortfall in university computer science courses related to embedded systems programming.
The problem is particularly acute since embedded programming skills are the foundation for developing safe, reliable, mission-critical systems used in everything from medical devices to commercial aircraft.
然而,問題在於,嵌入式系統開發安全、可靠、關鍵任務系統的基礎,而這些系統通常會用在從醫療到商用客機在內等許多大型開發專案中,因而使問題顯得更加突出。
Critics lay much of the blame for the embedded programming gap at the doorstep of university computer science departments that have tended to migrate curricula toward trendy programming languages like Java at the expense of unglamorous tasks such as how to design and analyze algorithms and data structures. In a recent article examining the embedded gap, Robert Dewar, an emeritus professor at New York University and CEO of software tool vendor Adacore, argued that universities need to rethink the programming languages taught in their introductory computer science courses.許多批評的聲浪都認為,造成嵌入式程式設計領域產生落差的原因,是由於大學的電腦科學系所越來越偏向如Java這類時髦的程式語言,但付出的代價卻是犧牲了教導學生如何去設計及分析演算法和資料結構等基礎。紐約大學榮譽教授暨軟體工具供應商Adacore公司 CEO Robert Dewar 最近發表一篇文章,探討嵌入式領域的落差情況,他認為,許多大學都必須重新思考他們的程式課程規劃。
“To be blunt,” Dewar wrote, “adopting Java to replace previous languages used in introductory programming courses – such as Pascal, Ada, C or C++ -- was a step backward pedagogically. Many universities went to Java because ‘that’s where the jobs are,’ but ironically may have produced a generation of programmers with over-specific but superficial skills who are now losing jobs to overseas competition with broader and deeper talents.”“說穿了,”Dewar寫道,“用Java來取代傳統程式入門課程中使用的語言,像是Pascal, Ada, C或是C++等──無異是讓整體教學的水準往後退了一大步。許多大學轉向Java的理由只是因為學生畢業後好找工作,但諷刺的是,這些學校培養出了僅具備膚淺技能的程式設計人才,他們正在失去與來自各個不同國家,具備更多技能與深度知識的人才競爭的能力。”
Some embedded programming experts think Dewar understates the severity of the programming gap. Evangelists such as Michael Barr have moved beyond merely highlighting the problem and have sought to fill the widening programming gap with initiative like Barr’s week-long, hands-on Embedded Software Boot Camp. The primary impetus for the boot camp, which focuses on skills like controlling hardware in C or C++ languages and writing more formal device drivers, was Barr’s conclusion that “there’s no good firmware training in [U.S.] universities.”一些嵌入式程式設計專家則認為,Dewar還低估了嵌入式領域程式設計落差的嚴重性。該領域的專家之一Michael Barr,則是採取更具體的行動──他舉辦了為期一週的「嵌入式軟體研習營」(Embedded Software Boot Camp)──希望藉由面對面的教學,彌合所謂的嵌入式程式設計落差。這個研習營的重點集中在培養某些技能,如用C或C++來做硬體控制、撰寫更多設備驅動程式等,而Barr的結論是:美國的大學並沒有做好韌體開發培訓。
“The one common denominator that I’ve found [is] that people cannot do well in class unless they know C” programming language, Barr said in an interview. “I’m not saying they have to know obscure parts of C [but] they have to know the basic syntax of C.”“我發現,這些參加研習營的人都有一個共同點,就是他們在課堂上的表現通常都不是很好,除非他們都知道C語言,”Barr說。“我並不是說他們必須很懂C,但他們起碼要知道基本的C語法。”
Those with computer science or engineering degrees who started with Java are “fundamentally unable to approach the material,” he added. “That’s where I think things are falling down.” While the shift to Java programming and away from C among university computer science programs benefits some code jockeys, Barr asserted that it has done relatively little to improve the hiring prospects for software engineers working at critical hardware interfaces.那些一開始就從Java開始的電腦科學或工程系畢業生“根本無法觸及問題核心,”他說。“這就是我覺得情況變糟的主要原因。”
危機迫在眉睫?
Barr, who specializes in software design for medical devices and other embedded systems, said he sees little progress toward addressing the embedded programming shortfall aside from his boot camp and a separate effort to get engineering groups like the IEEE to address the issue. The fact that the next embedded boot camp to be held in Maryland in early May has attracted programmers from Belgium, Canada, Mexico and Turkey as well from around the U.S. illustrates the lack of emphasis on embedded programming. “The reason for that is simple: There’s nothing like it in the world,” Barr claimed. He added that his hands-on approach to teaching embedded programming is precisely what is currently lacking in university computer science courses.
Barr的專長是醫療設備和其他嵌入式系統設計,他指出,自他舉辦研習營以來,他已經看到瞭解決嵌入式程式設計人才短缺問題的一線曙光,像IEEE等團體也開始關注這個問題了。下一次的研習營將在今年五月初於美國馬里蘭州舉行,屆時除了美國本土,還將有來自比利時、加拿大、墨西哥和土耳其的參加者。Barr認為,目前在做的事,正是彌補美國大學的電腦科學課程缺乏嵌入式程式設計訓練的最好方法。
Barr said reactions to the boot camp range from, “You helped me integrate knowledge that I had but didn’t know how to use“ to, “Why didn’t someone teach me this 20 years ago?”
Barr表示,這個研習營的參與者對課程內容的反應包羅萬象,像是有人會說:“你幫我把我以前曾經學過,但卻從來不知如何使用的知識整合起來了”;也有人說:“為什麼二十年前沒有人教我這些?”
Embedded evangelist Michael Barr uses this Venn diagram to illustrate the current status of embedded software programming in the computer engineering ecosystem and why there is a lack of good firmware training.
嵌入式傳道者Michael Barr用以下這張Venn圖來說明目前電腦工程領域的嵌入式軟體程式設計現況,以及為何我們總是缺乏良好的韌體開發培訓。
Explanations vary as to why university computer science departments have deemphasized teaching embedded programming skills based on the C language. Along with trendiness of Java programming, observers also point to the chase for research grants that effectively removes experienced engineering and computer science professors from the classroom. Another reality is that embedded programming teams tend to be smaller (a single hardware designer and a few software engineers, for example), hence the discipline doesn’t generate a lot of job opportunities for computer science graduates.這解釋了為何大學的電腦科學系所不再強調以C為基礎的嵌入式語言教學。除了Java熱潮興起外,觀察家們認為,追求研究補助金也是讓資深工程師和電腦科學教授們從課堂上消失的主要原因。另一個事實則是嵌入式程式設計團隊規模一般比較小,如通常由一個硬體工程師和幾個軟體工程師組成,因此,這個領域也無法產生讓畢業生嚮往的大量就業機會。
On the other hand, the relatively few larger embedded programming projects in industries like aerospace usually focus on older technologies. “It’s such a conservative, process-oriented work environment that it turns off” most software engineers, said Barr.另一方面,在航空等產業中,一些大型的嵌入式專案通常都沿用較舊的技術。“這種保守、過程導向的工作環境,通常會讓許多軟體工程師卻步,”Barr說。
Observers differ on whether a crisis looms if instruction in embedded programming languages like C continues to lag. Responding to the article by embedded systems software specialist Dewar, one engineer noted: “Problem solving is the [No. 1] skill. Specific knowledge of a language is not important. That can be learned. Specific knowledge has a short shelf life in this industry.”觀察家們對於嵌入式程式設計語言如C之中的指令若持續落後,是否會帶來危機一事意見並不相同。一位工程師對嵌入式軟體專家Dewar的文章做出了如下回覆:“能解決問題才是關鍵。至於專門的程式語言知識並不重要。工程師可以學習。在這個產業中,任何一種特定的知識,壽命其實都不長。”
But Barr worries that the lack of C programming courses and the fact that most software engineers fluent in the language are older means that “at some point it becomes a bit of a crisis.” The reason, he added, is that “this touches everything from refrigerators to automotive [to] smartphones [and] better medical devices.”但Barr憂心之處在於缺乏C語言課程,還有大多數熟悉傳統程式語言的軟體工程師年紀都偏高了,“某種程度來說,這也是一種危機。”他進一步表示,嵌入式軟體涉及的層面非常廣泛,從冰箱到汽車到智慧手機以及醫療設備,全都包含在內。
留言列表