嵌入式找工作时为什么要求精通C

想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。目前,从事嵌入式行业的,绝大部分是电子、自动化、通信等专业毕业的学生,搞纯软件的同学基本上是看不上嵌入式的起薪。

大多数高校的电子专业很少有开C++这门课程的,对于学校教学来说,学好C语言然后去搞一个毕设试绰绰有余的这也是我们国内教育的悲哀,与社会实际脱轨。而且部分的同学的学习重心是硬件知识,缺乏数据结构、算法和软件工程上面的训练。基于这样的知识结构,是不能理解面向对象编程的,如果是自学C++而没有参与过实际大项目(十万级代码以上),基本上就认为C++是C with class,甚至单纯的认为class就是就struct可以调用函数。对于这类人,他们上网去搜一下,发现可以在struct里面保存一个函数指针代替class的调用方法。由于知识结构的问题,他们基本上就只能做到这里。

实际上,C++的诞生主要就是为了处理大项目。在很多的教科书里面都只提了一句,因为C语言在面对大型项目的时候越来越难以开发和维护,所以发展了C++语言。有会觉得linux不也是C语言开发的吗?当然是可是我们自身具不具备这样的C语言能力,别人可以并不代表自己可以,甚至大多数人毕业后从事了五年C开发岗位,你依旧距离开发linux的代码能力差很远。所以,对于绝大多数人(包括我自己),天赋有限能力有限的限制下不能指望这部分人写十几C代码,如果要我们的技能达到这个程度再去找一个C的开发岗位,这样只有饿死。但是面对大型项目的时候,我们有了另一个选择,比如C++,能够帮助萌新迅速的进入一个大型项目中。

有一句话说,没有最好的编程语言,只有合适的编程语言。由于人与人的基础和天赋不同,对于同样复杂度的问题,其驾驭能力也是不同的。所以,有些人能当CTO,能当架构师,能够决定技术路线。而有些人只能参与模块级开发,只能通过google,github来做产品。

C语言这个玩意儿非常神奇的地方在于,给你提供的东西很少很灵活。随着你遇到的问题越来越复杂,你得自己开发很多东西,比如动态数组,栈,队列,平衡二叉树。。。。很多东西,如果你还没写过这些东西,只能说明你真幸福,面对的都是复杂度不高,且效率要求不高的项目。但是,对于99.99%的C工程师来说,无论你怎么去实现这些(动态数组,栈,队列。。。)代码,都是对C++ STL最拙劣的模仿,这种时候还不如直接用C++来得现实。

本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回复“我要入门”,与我们一起成长,喜欢的可以点个赞关注我们!