汽车软件工程师都应该学一点Python

从开始入门python,到现在已经有快7个年头了,在这些年中,我一直在中重度的使用Python,基本上需要在PC机上编程解决的问题,我第一时间总会选择Python,小到文本处理脚本,大到GUI界面/Web界面,可以说Python解决另外我工作中遇到的很多难题,也很大程度提高了工作效率,我也很希望大家都能够从Python中获益。。

虽然可能有些读者已经对Python有过接触或者了解,我这里还是简单的介绍一下这门语言。

首先,Python是一门解释性语言(所谓解释性语言就是,不需要编译器就行编译,由解释器对源代码进行解释执行),它是由Guido van Rossum于1989年发明的,是纯粹的自由软件,它的解释器基本上都是开源的,也就意味着不需要什么使用成本。

然后,Python是一种面向对象的编程语言,在Python里边一切都是对象,在加上Pytohn要求编程的时候强制缩进,从而导致使用Python写出来的代码都非常整洁。

最后,Python是一门胶水语言,所谓胶水语言就是能够方便快速的调用其他语言模块,而Python在开源社区非常受欢迎,从而导致有非常丰富的第三方软件库可以使用(这也是为什么Python能提高我们工作效率,解决我们遇到问题的主要原因)。

那么对于我们汽车嵌入式软件工程师来说,Python能给我们带来什么呢。

  1. 嵌入式软件中的文本处理和分析。S19/Hex/Bin文件的分析和处理,Cross Compiler编译结果分析(例如MAP文件处理,Log文件处理等),CAN消息分析,A2L文件地址升级(根据MAP文件或者ELF文件)。
  2. 利用Python做测试。Python可以方便的调用其它语言的库文件,因此可以控制PC来实现测试目的,最典型的如调用CAN驱动实现CAN消息收发,调用COM口实现串口收发(可以模拟KW,LIN)等。
  3. AUTOSAR ARXML文件处理。随着AUTOSAR的逐渐普及,我们跟ARXML文件交互的机会越来越多,Python可以让ARXML文件操作变得异常简单。
  4. 编译系统。Scons是基于Python的一个编译系统框架,虽然说不如Makefile那么简单直接,但是如果不想再学习Makefile的晦涩语法的话,Scons也是一个选择
  5. 科学计算。
  6. 自动代码生成。

以上的这些强大的功能都可以借由Pytohn的开源库来实现,最后我这边总结一下常用的一些Python库供大家学习参考:

  1. 文本处理: re(正则表达式),binascii,bincopy(S19/Hex/Bin文件处理),pyelftools(ELF文件处理)
  2. 硬件交互:基本上PC端的硬件设备都是通过DLL向外提供API服务的,Python可以通过ctypes简单的访问这些DLL,甚至更高级一点的可以通过IronPython来访问COM组件/.NET组件
  3. ARXML文件处理:ARXML文件说白了就是基于AUTOSAR XML Schema的XML文件,Python中有很多对XML处理的库,我这里推荐BeautifulSoup和generateds,前一个用于ARXML文件的读取和标签查找,后一个可以生成标准的ARXML文件
  4. 编译系统,我们前边已经提到了Scons这个库
  5. 科学计算,我没有做过很深入的,NumPy,SciPy,Matplotlib似乎性能上很不错
  6. 自动代码生成,Mako是一个模板库,可以根据模板自动生成输入文件

Python语言有两个分支2.x和3.x,大家不要以为3.x是对2.x的简单的升级,其实从2.x到3.x有着重大的改变,以至于语法上都有很多不兼容,目前主流的库都在2.x上有支持,在3.x上支持较少,因此建议大家还是从2.x最新版本开始学习和使用。Python的解释器可以在http://www.python.org 上下载,Python的入门文档我这边推荐两本免费的书籍A Byte of Pythondive into python,网上可以下载到PDF。Python语言非常简单易懂,作为一种高级语言,它比C语言更接近自然语言,从我个人经验,一到两周的时间就可以完成入门,接下来就是实际应用中体验Python带来的高效了。

发表评论

电子邮件地址不会被公开。