在大学院校的计算机科学体系中,持续缺乏对嵌入式系统编程关注的情况,可能会让分散的情况日趋严重。事实上,美国的工程教育越来越趋向于集中在某些特定领域,这也日益突显出了当地大学的计算机科学教育在嵌入式系统编程方面的不足之处。
在大学院校的计算机科学体系中,持续缺乏对嵌入式系统编程关注的情况,可能会让分散的情况日趋严重。事实上,美国的工程教育越来越趋向于集中在某些特定领域,这也日益突显出了当地大学的计算机科学教育在嵌入式系统编程方面的不足之处。
然而,问题在于,嵌入式系统开发安全、可靠、关键任务系统的基础,而这些系统通常会用在从医疗到商用客机在内等许多大型开发专案中,因而使问题显得更加突出。
许多批评的声浪都认为,造成嵌入式编程领域产生落差的原因,是由于大学的计算机科学系所越来越偏向如Java这类时髦的程序语言,但付出的代价却是牺牲了教导学生如何去设计及分析算法和数据结构等基础。纽约大学荣誉教授暨软件工具供应商Adacore公司CEO Robert Dewar最近发表一篇文章,探讨嵌入式领域的落差情况,他认为,许多大学都必须重新思考他们的程序课程规划。
“说穿了,”Dewar写道,“用Java来取代传统程序入门课程中使用的语言,像是Pascal, Ada, C或是C++等──无异是让整体教学的水准往后退了一大步。许多大学转向Java的理由只是因为学生毕业后好找工作,但讽刺的是,这些学校培养出了仅具备肤浅技能的程序设计人才,他们正在失去与来自各个不同国家,具备更多技能与深度知识的人才竞争的能力。”
一些嵌入式编程专家则认为,Dewar还低估了嵌入式领域编程落差的严重性。该领域的专家之一Michael Barr,则是采取更具体的行动──他举办了为期一周的“嵌入式软件研习营”(Embedded Software Boot Camp)──希望藉由面对面的教学,弥合所谓的嵌入式编程落差。这个研习营的重点集中在培养某些技能,如用C或C++来做硬件控制、撰写更多设备驱动程序等,而Barr的结论是:美国的大学并没有做好固件开发培训。
“我发现,这些参加研习营的人都有一个共同点,就是他们在课堂上的表现通常都不是很好,除非他们都知道C语言,”Barr说。“我并不是说他们必须很懂C,但他们起码要知道基本的C语法。”
那些一开始就从Java开始的计算机科学或工程系毕业生“根本无法触及问题核心,”他说。“这就是我觉得情况变糟的主要原因。”
危机迫在眉睫?
Barr的专长是医疗设备和其他嵌入式系统设计,他指出,自他举办研习营以来,他已经看到了解决嵌入式编程人才短缺问题的一线曙光,像IEEE等团体也开始关注这个问题了。下一次的研习营将在今年五月初于美国马里兰州举行,届时除了美国本土,还将有来自比利时、加拿大、墨西哥和土耳其的参加者。Barr认为,目前在做的事,正是弥补美国大学的计算机科学课程缺乏嵌入式编程训练的最好方法。
Barr表示,这个研习营的参与者对课程内容的反应包罗万象,像是有人会说:“你帮我把我以前曾经学过,但却从来不知如何使用的知识整合起来了”;也有人说: “为什么二十年前没有人教我这些?”
嵌入式传道者Michael Barr用以下这张Venn图来说明目前计算机工程领域的嵌入式软件编程现况,以及为何我们总是缺乏良好的固件开发培训。
这解释了为何大学的电脑科学系所不再强调以C为基础的嵌入式语言教学。除了Java热潮兴起外,观察家们认为,追求研究补助金也是让资深工程师和计算科学教授们从课堂上消失的主要原因。另一个事实则是嵌入式编程团队规模一般比较小,如通常由一个硬件工程师和几个软件工程师组成,因此,这个领域也无法产生让毕业生向往的大量就业机会。
另一方面,在航空等产业中,一些大型的嵌入式专案通常都沿用较旧的技术。“这种保守、过程导向的工作环境,通常会让许多软件工程师却步,”Barr说。
观察家们对于嵌入式编程语言如C之中的指令若持续落后,是否会带来危机一事意见并不相同。一位工程师对嵌入式软件专家Dewar的文章做出了如下回覆:“能解决问题才是关键。至于专门的程序语言知识并不重要。工程师可以学习。在这个产业中,任何一种特定的知识,寿命其实都不长。”
但Barr忧心之处在于缺乏C语言课程,还多大多数熟悉传统程序语言的软件工程师年纪都偏高了,“某种程度来说,这也是一种危机。”他进一步表示,嵌入式软件涉及的层面非常广泛,从冰箱到汽车到智能手机以及医疗设备,全都包含在内。