techff

  • 176 主题
  • 208 帖子
  • 1739 积分
  • 身份:LV4 高级技术员
  • E币:703

传统的嵌入式C语言程序员快要灭绝了?

2019-8-29 16:15:06 显示全部楼层
在2000年前后,嵌入式软件工程师有着一套非常具体的技能,他们通常是电气工程师,不仅了解底层硬件的工作原理,还可以在底层编写汇编代码或者C语言代码,以使系统满足实时需求。嵌入式软件工程师不仅要了解诸如C语言的软件开发,还要了解硬件。位、字节、寄存器的世界,正是嵌入式软件工程师的领域。

但是如今不再那么简单了。在早期,嵌入式开发人员通常使用8位或者16位的体系结构,这些结构比较简单,因此开发人员一般在几个月的开发周期内便能掌握这些结构。但是近些年来,许多嵌入式开发团队已经转向更加复杂的 32 位体系结构,不仅包括一些用于数据采集的采样传感器,以及外围的通信设备,还包括日益繁多的各种协议,例如 USB、DMA、 TCP/IP、蓝牙等。这些复杂的体系架构,或者相关的通信协议,开发人员往往需要数年才能真正的完全掌握。显然,嵌入式系统已经变得极其复杂。将硬件设备连接到互联网,以创建物联网的巨大需求,在以往传统的嵌入式C语言程序开发中是没有出现过的。所以,这一“巨大需求”导致了一个真空——相关公司找不到足够的嵌入式C语言软件开发工程师了。
为了应对“真空”,有些公司并未大力培养嵌入式C语言软件工程师,而是开始依赖具有Windows应用程序或者移动设备程序开发经验的人员来开发他们的实时嵌入式软件。这会导致另外一个较为致命的问题出现:这些开发人员大多只了解公司分配的任务所需的高层应用程序框架,对底层硬件却不够了解。


这样的公司并不在少数。因此微控制器制造商目前正在大力推动为开发人员提供高层的软件框架和工具,真正的硬件底层开发,则由制造商完成。
这使得嵌入式软件开发人员,甚至应用程序开发人员更容易在更高层上编写软件,他们不必再担心底层的硬件了,因为相关的“轮子”已经“出厂自带”了。

显然,这样的嵌入式程序开发模式更加有利于一些嵌入式公司降低成本,加快产品上市时间。但是我们也可能发现,关心位、字节、寄存器的传统嵌入式C语言、汇编软件开发工程师显得没那么重要了,可能很快就会“灭绝”。

未来的嵌入式软件工程师将与传统的前辈们有着不一样的技能,他们也不再关心硬件底层,不再关心位、字节、寄存器,也不再关心任务的实时性,事实上,他们可能不再关心任何传统嵌入式程序员需要关心的东西。未来的嵌入式软件工程师可能只需要具备应用程序开发技能,知道如何调用一个 API 让硬件做事。

但是,他们不知道为什么要这么做,以及 API 到底是怎样命令硬件做事的,所以他们也不具备实时调试硬件的技能甚至概念,无法深入到寄存器中。这些工程师,更像是远离硬件的 Windows 程序员。

未来嵌入式软件开发人员不具备底层硬件开发能力不一定就是百分之百的坏事,至少这样的开发模式允许一些缺乏关键技能的开发团队或者公司继续发展下去,这一点可以从移动设备领域看出。

了解底层硬件的传统嵌入式程序开发人员永远都不会被“淘汰”,否则谁能提供 API,让上层应用程序开发人员调用,以控制硬件工作?


然而现实是,传统嵌入式程序开发人员被公司忽略了。很多高科技公司更加青睐机器视觉、机器学习和其他尖端研究领域的开发人员,值得说明的是,这些尖端人才往往不屑于驱动硬件这类“基础工作”。但是,
如果没有程序员能够与硬件设备沟通,所谓的“机器”视觉和“机器”学习又怎样才能实现呢?

  • 发表于:  2019-07-15
  • 原文链接:http://news.51cto.com/art/201907/599600.htm

最新评论

楼层直达:

冰点1128

  • 2 主题
  • 26 帖子
  • 652 积分
  • 身份:版主
  • E币:593
冰点1128 2019-8-30 09:51:13 显示全部楼层
我倒是觉得相辅相成.有同事十几年前在手机厂做事,说当年的硬件工程师是软件工程师的2倍.前几年在手机厂工作,软件工程师是硬件工程师的2倍.这是社会发展的需要.
在一些简易的应用上,单片机还是有不可替代的应用.特别是对价格敏感的小家电之类的.

FPFA兔兔爸

  • 0 主题
  • 127 帖子
  • 526 积分
  • 身份:实习版主
  • E币:365
FPFA兔兔爸 2019-8-30 11:23:09 显示全部楼层
这个问题应该这么说:对于小厂来说,很便宜的而又很精通底层和嵌入式C编程的程序员,招聘不到了;对大厂来说,一直不是问题。重赏之下,必有勇夫。

redstone8415

  • 0 主题
  • 1 帖子
  • 340 积分
  • 身份:LV2 初级技术员
  • E币:246
redstone8415 2019-9-5 08:25:06 显示全部楼层
本帖最后由 redstone8415 于 2019-9-5 08:26 编辑

在市场买一个热水壶,确实是只需要知道如何接电就可以了!
广告

wglang_john

  • 0 主题
  • 5 帖子
  • 404 积分
  • 身份:LV2 初级技术员
  • E币:285
wglang_john 2019-9-5 09:20:30 显示全部楼层
非常有道理,现在确实底层的开发国内还是不够,基本被国外垄断。但是底层我们必须清楚,这样才能从根本上开发产品,实现永续发展,避免被别人扼住七寸

hnltm_451604858

  • 0 主题
  • 58 帖子
  • 544 积分
  • 身份:LV3 中级技术员
  • E币:343
需要而且能够了解硬件底层的,都是比较简单、低端的硬件,譬如最早的8051.现在,硬件本身都很复杂了,有的还带上了操作系统,这个时候再要去抠底层就不太现实了。

allen_zhan

  • 0 主题
  • 39 帖子
  • 676 积分
  • 身份:LV3 中级技术员
  • E币:445
allen_zhan 2019-9-5 12:27:11 显示全部楼层
本帖最后由 allen_zhan 于 2019-9-5 12:33 编辑

相当部分主要的原因来自 turnkey 供应商.

他们将一个典型的类智能机操作系统打包提供给了我们嵌入式工程师, 整合编译至少涉及数千份源代码, 代码很难向下跟.
硬件则接近 pcba 的方式提供, 工程师也无需代码各种驱动.

从桌面系统迁移过来的软件工程师, 无需调板与修改电路图.  
就好比 Android 做 app, 其实这里涉及的, 仍然仅是单纯的软件.

由于软件发展走在了电子研发的前面, 因此可以预计, 未来电子研发会发生某些深刻的变化.
某些开源/云系统/云共享会提供这样的便利, 方便我们自定义与裁剪硬件模块.
当硬件模块也能共享, 能云服务, 能裁剪时, 嵌入式工程师就有机会成为艺术产品的大师.

我要评论
6
24
广告
关闭 热点推荐上一条 /3 下一条
快速回复 返回列表