当前阶段嵌入式技术的重难点
著名嵌入式专家火哥认为,当前阶段嵌入式技术的重难点有三个方面:
1. 以C/C++语言为主的编程能力。
原本C语言编程也不是啥门槛性的大问题,但是因为国内大部分电子信息专业都是以C语言入门,然后选用的国产教材质量参差不齐,代码风格不规范,这就人为地给入门菜鸟创造了门槛。但是只要肯花时间下功夫,学习豆瓣上推荐的几本国外经典的C语言教材,进而学习数据结构,面向对象等计算机基础知识,多练习多写代码来熟练编程技巧,火哥相信这个不会是大问题。
C++方面,以前做单片机,做RTOS的老嵌入式工程师可能基本上都是写C程序,用不上C++。但是现在基于Linux系统的嵌入式开发,重点将会聚焦在复杂业务逻辑应用编程上。在大规模复杂业务逻辑和GUI编程中,使用纯C语言已经力不从心,使用C++开发的嵌入式应用程序的地方将会越来越多。但是C++这个语言本身比较复杂,不能强求像C语言那样掌握95%以上的特性,C++总会有很多语言特性用不上或者不熟练,需要找到合适的项目,在实践中反复练习再回头看书巩固,循序渐进。熟练掌握C++会需要较长的时间,目前一般的要求是掌握基本的面向过程,面向对象编程的编程方法,多用智能指针,复杂的模板编程能看懂就行,不要求掌握所有奇巧淫技。
2. 对计算机体系结构和操作系统相关问题的掌控能力
这一块知识算是计算机基础理论上的难点,虽然相关书籍资料已经汗牛充栋,商业级的Linux内核源代码也能从网上下载,但是要啃下它还是需要耐心。很多做单片机裸机,RTOS开发的嵌入式工程师无法进入Linux开发的世界,多半也是因为Linux操作系统确实有一定难度。对这一块知识,其实并不要求你掌握Linux内核每行源码(这是不可能的),也不要求你能够独立写出一个复杂的产品化的操作系统(也不现实),但是操作系统底层和计算机体系结构基本的工作原理和机制还是要搞清楚,要知道操作系统大概做了什么,是如何处理你的API调用的。
火哥知道这是一块硬骨头,但事在人为,有了这么多资料和实验资料的今天,肯花时间,有耐心,也不应该是大问题。
3. 业务应用能力
为什么我们需要做嵌入式计算机系统,因为嵌入式计算机系统可以根据不同业务场景需求进行裁剪和定制。说到底,业务才是嵌入式系统真正的命根子,不同业务方向嵌入式工程师薪资差异可能会比较大(当然在少数公司,开发操作系统也属于他们的业务)。在企业有话语权有地位的嵌入式工程师所掌握的业务技能一定和企业当前盈利的业务方向高度匹配,充分满足企业的业务需求。
当前嵌入式软件工程师要想提高收入,一定要跟着主流有盈利能力的业务走,提升相关的业务应用技能。当然很多细分业务,不去相关的企业是根本没有机会接触的,热门业务相关的高级资料也不是能够通过网络和入门培训视频轻易获得。所以说当前阶段的业务门槛才是嵌入式在不同领域的真正门槛。学会自己分析,把握当前主流前沿的业务方向,有的放矢地学习提升自己,让自己掌握的知识发挥最大的“钱”力。