事实上对于嵌入式来说,C/C++,Python, Java都是可选的语言,但应对不同的场景和应用,选择合适的语言才是王道。

对于单片机来说,使用C基本上就是唯一选择,虽然MDK也支持C++的实现,不过使用STL会带来代码容量的膨胀,另外运行效率也是比较诟病的问题,而且C++本身也比C更加复杂,使用C++带来的好处不足以掩盖这些缺点,所以目前在单片机上还属于边缘化的水平。另外通过MicroPython也可以实现在单片机平台运行执行Python,而且国内的rt-thread也专门提供相应范例实践支持,但是使用高级语言带来的性能损失,以及封装后带来的调试麻烦,如果使用开发板演示学习没啥问题(特别是官方支持的开发板), 但对于工业界复杂的设计和底层硬件的复杂需求,在实际应用中使用往往修改和调试起来会更加麻烦,这也是js跑在单片机平台遇到的同样问题,我是挺喜欢拥抱这种变化的,毕竟用C开发过从网络驱动,LWIP到实现服务器的过程,完全了解C在处理复杂项目(如网络,线程,文件/字符串处理)上支持的羸弱,而对于Python,这些都从语言层面被解决。但是这种项目基本也是叫好不叫座,如果某些芯片主打开发效率,由IC原厂完成对底层的全部处理和验证,以及方案的开发,是有一定市场的(乐鑫的WIFI芯片支持的不错),但是目前也不是主流。

对于嵌入式Linux来说,C/C++, Python, Java都有运用,且在各自场景都具有重要意义。对于uboot的开发,内核裁剪,底层驱动开发,C语言还是目前的唯一开发语言。对于上层应用,则没有限制,目前娱乐影音领域,如车载的平板,智能电视,投影盒子,因为使用的是Android系统,都用Java开发,至于带复杂界面的工控管理机器,大屏幕,目前还有使用QT/C++的方案,对于无界面的产品,如路由器,网络终端,智能电器,这些用C/C++/Python开发的都有,目前嵌入式Linux的开发都是以多语言的混合编程为主,我之前参与做过停车场的扫码设备,整个软件框架中,底层驱动用C开发,应用层的通讯管理是用Python处理的,界面的显示则基于Android系统使用Java开发,这部分基本没有好坏之分,只有在合适的地方选择合适的语言而已。

更多推荐

arduino与python哪个语言更好_嵌入式开发语言用哪个最好,C,python或者其他?