A. 计算机二级C语言考试内容有那些
C语言考试内容如下:
一、C 语言程序的结构
1. 程序的构成,main 函数和其他函数。
2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。
3. 源程序的书写格式。
4. C 语言的风格。
二、数据类型及其运算
1.C 的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。
2. C 运算符的种类、运算优先级和结合性。
3. 不同类型数据间的转换与运算。
4. C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
三、基本语句
1. 表达式语句,空语句,复合语句。
2. 输入输出函数的调用,正确输入数据并正确设计输出格式。
四、选择结构程序设计
1. 用 if 语句实现选择结构。
2. 用 switch 语句实现多分支选择结构。
3. 选择结构的嵌套。
五、循环结构程序设计
1. for 循环结构。
2. while 和 do-while 循环结构。
3. continue 语句和 break 语句。
4. 循环的嵌套。
六、数组的定汪扮义和引用
1. 一维数组和二维数组的定义、初始化和数组元素的引用。
2. 字符串与字符数组。
七、函数
1. 库函数的正确调用。
2. 函数的定义方法。
3. 函数的类型和返回值。
4. 形式参数与实际参数,参数值的传递。
5. 函数的正确调用,嵌套调用,递归调用。
6. 局部变量和全局变量。
7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
八、编译预处理
1. 宏定义和调用(不带参数的宏,带参数的宏)。
2. “文件包含”处理。
九、指针
1. 地址与指针变量的概念,地址运算符与间址运算符。
2. 一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。
3. 用指针作函数参数。
4. 返回地址值的函数。
5. 指针数组,指向指针的指针。
十、结构体(即“结构”)与共同体(即“联合”)
1. 用 typedef 说明一耐陵亮个新类型。
2. 结构体和共用体类型数据的定义和成员的引用。
3. 通过结构体构成链表,单向链表的建立,结点昌宽数据的输出、删除与插入。
十一、位运算
1. 位运算符的含义和使用。
2. 简单的位运算。
十二、文件操作
1. 文件类型指针
2. 文件的打开与关闭
3. 文件的读写
拓展资料:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。全国计算机等级考试有二级c语言这个考试的项目。
考试要求:
1. 熟悉Visual C++6. 0集成开发环境。2. 掌握结构化程序设计的方法,具有良好的程序设计风格。3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序。4. 在Visual C++6. 0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。
参考链接:网络-二级C语言
B. 如何在c++定义一个学生类以实现平均成绩的计算和查询功能
一.中间件的定义与作用
1.什么是中间件?
图片摘自公众号“筋斗云与自动驾驶”
笔者在交流中发现,不同的人对中间件的理解并不一样,甚至可以说,到现在,这个概念还是模糊不清的。比如:
(1)有的人认为中间件仅指位于OS内核之上、功能软件之下的那部分组件,为上层提供进程管理、升级管理等服务;而有的人则认为中间件还应包括功能软件和应用软件中间的那部分(参见上图)。按茅海燕的说法,前者是“通用中间件”,而后者是“专用中间件”。本文中提到的“中间件”,若不做专门说明,便特指“通用中间件”。
(2)有一些人提到的自动驾驶中间件,包括了AUTOSAR(又分为AUTOSAR CP和AUTOSAR AP),还有一些人口中的中间件,特指ROS2、Cyber RT、DDS等。
(3)未动科技VP萧猛认为,“中间”一词是相对的,当有多层堆叠的时候,每一层都是其上下两层的中间层,因此,在用“中间件”这个词的时候,我们需要特别指明它究竟位于“哪两层之间”。按萧猛的说法,当我们称“ROS/ROS2 为中间件”时,其含义与 “AUTOSAR AP为中间件”并不是对等的关系。
(4)Vector产品专家蔡守群说,他理解的中间件,“是给App开发提供功能支撑的,对外是没有功能表征的;但是站在操作系统内核的角度,中间件跟App并没有本质的区别”。
2.中间件的作用
汪浩伟说:“专用中间件原本是应用程序的一部分,只是很多公司做自动驾驶都需要用到,就被抽象出来了。”
那么,它究竟有什么用?
毕晓鹏认为,自动驾驶中间件最主要的作用是:对下,它能够去适配不同的OS内核和架构;对上,它能够提供一个统一的标准接口,负责各类应用软件模块之间的通信以及对底层系统资源的调度。
据毕晓鹏解释,前者,使开发者们无需考虑底层的OS内核是什么,也无需考虑硬件环境是什么,即不仅实现了应用软件与OS的解耦,也实现了应用软件与硬件的解耦;而后者则确保了数据能够安全实时地传输、资源进行合理的调度。
为什么要通过中间件来支持软硬件解耦?毕晓鹏解释道:
我开发一个应用软件,其中很多内容都是与具体应用逻辑无关的,包括数据通信、通信安全、系统资源调度等,比如,有十个进程需要数据交互,完全没有必要在十个程序的软件代码里各自进行实现和配置。针对这种情况,我们就可以把重复的部分抽象成一种服务,单独封成一层东西(这就是中间件),并提供统一的库、接口和配置方法,供上层去调用。这样的话,有一部分人专门去做中间件的,而做上层应用的人也不需要考虑跟底层交互的事情。
举例说,如果要做一个自动泊车系统,它有各个模块或业务逻辑独立的不同软件,在进行通信、数据交互,或者调用底层资源时,只需要中间件的一个接口就可以实现,其他事情不需要考虑,这样开发人员就可以专注于自己的业务逻辑。
又比如,一个摄像头需要感知前面的车道线、红绿灯等,开发人员就专门做红绿灯和车道线检测算法,与外界的数据交互只需要使用中间件的通信服务(例如订阅摄像头信息,发布检测结果),而不必关心数据从哪里来、发给谁。
Nullmax纽劢科技系统平台总监苗干坤博士在此前的一篇文章中写道:
“芯片算力大幅增长,摄像头像素呈翻倍之势,激光雷达出现在更多新车规划上……没有谁能够断言车上的传感器应该有多少,又或者是将来的汽车还会增加哪些硬件,但所有人都知道硬件的变化将会来得更加猛烈。
“所以我们也可以看到,汽车对软硬件架构的要求也越来越高,既要能满足当下的需求,还要具备相当的前瞻性、兼容性和扩展性,能够支持接下来软硬件升级换代、增减模块的需求。而自动驾驶的中间件,就正是这样一个可以按需调整、满足各样需求的现代温室。
“在早期开发中,中间件可以化整为零,将巨大的软件工程分解成若干小任务,分散解决。在后期应用时,它又可以化零为整,像拼积木一样,根据需求将一个个模块组合成一个整体,严丝合缝。”
在春节前的一场直播中,东软睿驰产品销售总监安志鹏说,在软硬件解耦、模块化管理后,再遇到问题,就不用整个系统都改,只改相对应的部分就行了。这样,软件的可复用程度就极大地提升了,同时,验证的工作量也会减少许多,整体开发效率也会因此提升。
相反,没有中间件的话,应用层就得直接调用操作系统的接口,后期要是换了操作系统,应用层的代码和算法可能就要推倒重来。
简言之,中间件通过对计算平台、传感器等资源进行抽象,对算法、子系统、功能采取模块化的管理,并提供统一接口,让开发人员能够专注于各自业务层面的开发,无需了解无关细节。
按东软睿驰产品销售总监安志鹏的说法,搞AUTSOAR这样的中间件,并不是只对OEM有利,“零部件供应商的选择面也大了——应用做好了,下面的软件、芯片可以选好几家供应商的,要比传统的开发模式快很多,因而,零部件供应商也是受益者”。
用萧猛的话说,中间件最直接的好处就是“为上层屏蔽底层的复杂性”,软件开发人员可以忽略芯片、传感器等硬件的差异,从而高效、灵活地将上层应用及功能算法在不同平台上实现、迭代、移植。萧猛认为,中间件可以看做是自动驾驶应用背景下的一项“新基建”。
(图片摘自冯占军博士的《AUTOSAR对基础软件开发是喜还是忧?》一文。AUTOSAR只是中间件的一种,但这里写的“AUTOSAR开发优势”基本也适用于其他中间件。)
不过,站在开发者的角度看,中间件的意义也未必全部是正面的。如冯占军博士在《AUTOSAR对基础软件开发是喜还是忧?》一文中就提到了如下两点:
底层软件工程师变成了工具人,“只要你去点点鼠标,用工具配合就可以了”,很多原本由自己做的测试也改由供应商来做,进而导致工程师的成就感严重降低;时间久了,工程师从0到1开发的能力也会降低。
(图片摘自冯占军博士的文章。尽管文章说的是Autosar,但实际上这些问题在ROS等其他中间件的使用过程中也会存在。)
对软件工程师来说,中间件造成的“能力退化”这一问题几乎是无解的。但冯占军博士认为,“如果这个中间件在开发过程中,有使用公司的工程师深度参与,提出需求并一起实施,会好一些”。
此外,殷玮在一篇文章提到,使用AUTOSAR这样的中间件,Tier 1们应该是很不情愿的,“因为不到增加了成本,还有可能逐步沦为硬件生产商”。但这个也不能说是中间件的锅,在软件定义汽车大大趋势下,这几乎是必然的。
二.常见的基本概念
1. AUTOSAR CP 与 AUTOSAR AP
在所有的中间件方案中,最着名的非AUTOSAR莫属了。
严格地说,AUTOSAR并非特指由某一家软件公司开发出来的某款操作系统或中间件产品,而是由全球的主要汽车生产厂商、零部件供应商、软硬件和电子工业等企业共同制定的汽车开放式系统架构标准。不过,在实践中,各公司基于AUTOSAR标准开发出来的中间件也被被称为“AUTOSAR”。
当前,AUTOSAR可分为Classic Platform和Adaptive Platform两个平台,两者分别被简称为AUTOSAR CP与AUTOSAR AP。
简单地说,AUTOSAR CP主要跑在8bit、16bit、32bit的MCU上,对应传统的车身控制、底盘控制、动力系统等功能,如果涉及到自动驾驶的话,AUTOSAR CP可能无法实现;而AUTOSAR AP主要跑在64bit以上的高性能MPU/SOC上,对应自动驾驶的高性能电子系统。
严格地说,AUTOSAR CP并不只是个“中间件”,它是相当于“OS内核+中间件”的一套完整的“操作系统”。 AUTOSAR CP定义了基本的上层任务调度、优先级调度等。
在基于分布式架构的ADAS功能中,AUOTSAR CP便是最常见的“操作系统”。在AUTOSAR的生态形成后,很多芯片厂商的MCU上标配的就是AUTOSAR CP,主机厂没有什么选择权。
由于分布式架构下的芯片主要是MCU,因此,便有了“AUTOSAR CP主要跑在MCU上”的说法。
在分布式架构下,不同的功能对应着不同的MCU,而每一个MCU上都需要跑一套AUTOSAR CP,若传感器的类型比较多,则仅ADAS相关功能就需要很多套AUTOSAR CP,那怎么收费呢?
常规的做法是:根据MCU的类型来收费——如果MCU是两个异构的MCU,那AUTOSAR CP就按两套来收费;如果MCU是同构的,那AUTOSAR CP就按一套来收费。
随着EE架构从分布式向集中式演进、芯片由MCU向SOC演进,计算量及通信量成数量级地上升,另外,多核处理器、GPU、FPGA以及专用加速器的需求,还有OTA等,都超出了AUTOSAR CP的支持范围。
(图片摘自安志鹏的直播课)
2017年,为更好地满足集中式架构+SOC时代的高等级自动驾驶对中间件的需求,AUTOSAR联盟推出了通信能力更强、软件可配置性更灵活、安全机制要求更高的AUTOSAR AP平台。
需要强调的是,不同于AUTOSAR CP自身已经包含了基于OSEK标准的OS,AUTOSAR AP只是一个跑在Lunix、QNX等基于POSIX标准的OS上面的中间件——它自身并不包含OS。
结合aFakeProgramer于2020年发表在CSDN上的《为什么要用AP?Adaptive AutoSAR到底给企业提供了一些什么?》一文及东软睿驰安志鹏在2022年春节前的一场直播中讲的内容,AUTOSAR CP与AUTOSAR AP最主要的区别有如下几点:
1).编程语言不同——AUTOSAR CP基于C语言,而AUTOSAR AP基于C++语言;
2).架构不同——AUTOSAR CP 采用的是FOA架构(function-oriented architecture),而AUTOSAR AP采用的则是SOA架构(service-oriented architecture);
3).通信方式不同——AUTOAR CP采用的是基于信号的静态配置通信方式(LIN\CAN...通信矩阵),而AUTOSAR AP采用的是基于服务的SOA动态通信方式(SOME/IP);
4).连接关系不同——在AUTOSAR CP中,硬件资源的连接关系受限于线束的连接,而在AUTOSAR AP中,硬件资源间的连接关系虚拟化,不局限于通信线束的连接关系;
5).调度方式不同——AUTOSAR CP采用固定的任务调度配置,模块和配置在发布前进行静态编译、链接,按既定规则顺序执行,而AUTOSAR CP则支持多种动态调度策略,服务可根据应用需求动态加载,并可进行单独更新。
6).代码执行和地址空间不同——AUTOSAR CP中,大部分代码静态运行在ROM,所有application共用一个地址空间,而在AUTOSAR AP中,应用加载到RAM运行,每个application独享(虚拟)一个地址空间。
这些区别,带给AUTOSAR AP的优势有如下几点——
1).ECU更加智能:基于SOA通信使得AP中ECU可以动态的同其他ECU同其他ECU进行连接,提供或获取服务;
2).更强大的计算能力:基于SOA架构使得AP能够更好地支持多核、多ECU、多SoCs并行处理,从而提供更强大的计算能力;
3).更加安全:基于SOA架构使得AP中各个服务模块独立,可独立加载,IAM管理访问权限;
4).敏捷开发:Adaptive AUTOSAR服务不局限于部署在ECU本地可分布于车载网络中,使得系统模块可灵活部署,后期也能灵活独立更新(FOTA);
5).高通信带宽:可实现基于Ethernet等高通信带宽的总线通信;
6).更易物联:基于以太网的SOA通信,更易实现无线、远程、云连接,方便部署V-2-X应用。
(图片摘自东软睿驰)
当然了,在某些方面,AUTOSAR AP与AUTOSAR CP相比是有一些“劣势”的。比如,AUTOSAR CP的时延可低至微秒级、功能安全等级达到了ASIL-D,硬实时;而AUTOSAR AP的时延则在毫秒级,功能安全等级则为ASIL-B,软实时。
上述区别也导致了两者应用领域的不同:AUTOSAR CP一般应用在对实时性和功能安全要求较高、对算力要求较低的场景中,如引擎控制、制动等传统ECU;而AUTOSAR则应用在对实时性和功能安全有一定要求,但对算力要求更高的场景中,如ADAS、自动驾驶,以及在动态部署方面追求较高自由度的信息娱乐场景。
尽管AUTOSAR AP有种种优点,但总的来说,它目前还不够成熟——主要是信息安全及UCM等模块不成熟。量产车上装AUTOSAR AP的不少,但主要用在娱乐场景,真正用在自动驾驶场景的还很少。
此外,由于SOC+MCU组合的现象会长期存在,因而,在今后相当长一段时间内,AUTOSAR AP都不可能彻底取代AUTOSAR CP——最常见的分工会是,需要高算力的工作交给AUTOSAR AP,而需要高实时性的工作则交给AUTOSAR CP。
(图片摘自超星未来)
2.ROS 2
ROS是机器人操作系统(Robot Operating System)的英文缩写,原生的ROS本是机器人OS,并不能直接满足无人驾驶的所有需求,用作自动驾驶中间件的是ROS 2。
ROS 2与ROS 1的主要区别如下:
(1).ROS 1主要构建于Linux系统之上,主要支持Ubuntu;ROS 2采用全新的架构,底层基于DDS(Data Distribution Service)通信机制,支持实时性、嵌入式、分布式、多操作系统,ROS 2支持的系统包括Linux、windows、Mac、RTOS,甚至是单片机等没有操作系统的裸机。
(2).ROS 1的通讯系统基于TCPROS/UDPROS,强依赖于master节点的处理;ROS 2的通讯系统是基于DDS,取消了master,同时在内部提供了DDS的抽象层实现,有了这个抽象层,用户就可以不去关注底层的DDS使用了哪个商家的API。
(3).ROS运行时要依赖roscore,一旦roscore出现问题就会造成较大的系统灾难,同时由于安装与运行体积较大,对很多低资源系统会造成负担;ROS2基于DDS进行数据传输,而DDS基于RTPS的去中心化的通信框架,这就去除了对roscore的依赖,系统的稳定性强,对资源的消耗也得到了降低。
(4).由于ROS 缺少Qos机制,topic的稳定性与质量难以保证;ROS2则提供了Qos机制,对通信的实时性、完整性、历史追溯等功能有了支持,这便大幅加强了框架功能,避免了高速系统难以适用等问题。
不过,ROS2的QoQ配置较为复杂,目前主要是国外一些专业的大学或实验室在使用,国内仅有极少数公司在尝试;此外,ROS 2的生态成熟度远不如ROS,这也给推广应用带来了不便。
跟AUTOSAR AP一样,ROS 2也是跑在soc芯片上、用于满足高等级自动驾驶的需求的。不过,萧猛在去年的一批文章中却特别强调:当我们称 “ROS/ROS2 为中间件”时,其含义与 “AUTOSAR AP为 中间件”并不是对等的关系。
萧猛的文章称:
当我们说 AutoSar是中间件时,这个中间件是很明确的 L.BSW层语义,即处于计算机OS与车载ECU特定功能实现之间,为 ECU功能实现层屏蔽掉特定处理器和计算机OS相关的细节,并提供与车辆网络、电源等系统交互所需的基础服务;
ROS/ROS2 是作为机器人开发的应用框架,在机器人应用和计算机OS之间提供了通用的中间层框架和常用软件模块(ROS Package),而且, ROS团队认为这个框架做得足够好,可以称作操作系统(OS)了。
ROS 2尽管在功能上跟AUTOSAR AP有不少重叠之处,但两者的思路是不一样的:
(1).从表现形式上看,AUTOSAR AP首先是一套标准,这个标准定义了一系列基础平台组件,每个平台组件定义了对应用的标准接口,但没有定义实现细节,和平台组件之间的交互接口(这些部分留给AUTOSAR AP供应商实现);ROS2则从一开始就是代码优先,每个版本都有完整的代码实现,也定义有面向应用标准API接口。
(2)AUTOSAR AP从一开始就面向ASIL-B应用;ROS 2不是根据ASIL的标准设计的,ROS 2实现功能安全的解决方案是,把底层换为满足ASIL要求的RTOS和商用工具链(编译器)。
ROS 2“过不了车规”似乎已成为一个很广泛的行业共识。但在萧猛看来,ROS2本来就不是为实时域设计的,如果一定要把实时性要求高的车辆控制算法运行在 ROS2中,“那是软件设计的错误,而不是ROS2的问题”。
萧猛认为,只要能补齐 L.BSW层所需要完成的所有功能、补齐 A 轴所有切面要求的特性,ROS 2就能用于自动驾驶量产车。如前段时间刚拿到采埃孚等多家巨头投资的Apex.AI公司基于ROS 2定制开发的Apex.OS就已经通过了最高等级的ASIL D认证。
萧猛说:“这实际上是基于 ROS 2的架构去实现一套 AUTOSAR AP 规范。这可以成为一个单独的产品,投入时间+人+钱可以开发出来,只是看有没有必要,值不值得”。
在具体的实践中,ROS 2跟AUTOSAR AP存在直接竞争关系——尽管对用户来说,并不存在严格意义上的“二选一”问题,但通常来说,若选了ROS 2,就不会选AUTOSAR AP了;若选了AUTOSAR AP,就不会选ROS 2了。
3. CyberRT
Cyber RT是网络Apollo开发出来的中间件,在Apollo 3.5中正式发布。Cyber RT和ROS2是比较像的, 其底层也是使用了一个开源版本的DDS。
网络最早用的是ROS 1,但在使用的过程中逐渐发现了ROS 1存在“若ROS Master出故障了,则任何两个节点之间的通信便受到影响”的问题,所以就希望使用一个“没有中间节点”的通信中间件来代替ROS 1,那时还没有ROS2,所以自己去做了一个Cyber RT。
为了解决 ROS 遇到的问题,Cyber RT删除了master机制,用自动发现机制代替,这个通信组网机制和汽车网络CAN完全一致。此外,Cyber RT的核心设计将调度、任务从内核空间搬到了用户空间。
(图片出处:https://blog.csdn.net/xhtchina/article/details/118151673)
其相对于其他系统,Cyber RT的一大优势是,专为无人架驶设计。网络已将Cyber RT开源,某互联网巨头的自动驾驶团队使用的中间件便是网络开源出来的Cyber RT。
Cyber RT跟ROS 2之间也存在竞争关系。
在谈到AUTOSAR AP、ROS 2与Cyber RT这些中间件的关系时,Vector产品专家蔡守群的解释是:
“不需要很机械地去分类,你可以把AUTOSAR AP, ROS和Cyber RT都想象成一个提供一组中间件的超市,用户可以按需从不同的超市购买,并不是说从一个超市买过一个中间件,就不能从其他超市买了。
蔡守群说:AUTOSAR AP中也包含了对ROS接口的支持。说不准哪天ROS和Cyber RT就会加入AUTOSAR AP的组件,或者 AUTOSAR AP会引入Cyber RT的组件。
4.DDS(通信中间件)
(1)什么是DDS?
在自动驾驶领域,中间件的功能涉及到通信、模块升级、任务调度、执行管理,但其最主要的功能就是通信。当前市场上,无论是Cyber RT还是 ROS,基本上90%的功能就是通信,狭义上说就是通信中间件。
通信中间可以分成开源和闭源的两种。开源的为OPEN DDS、FAST DDS、Cyclone等,闭源的就RTI的DDS和Vector的SOME/IP。DDS的全称为Data Distribution Service ,指一种数据分发服务标准,由对象管理组织(OMG)制定。
DDS能够实现低延迟、高可靠、高实时性的数据融合服务,能够从根本上降低软件的耦合性、复杂性,提高软件的模块化特性。高等级自动驾驶现在基本上都在探索依靠DDS来解决异构通信、低时延等CP解决不了的挑战。
融合了DDS的汽车软件能够更好地运行在下一代汽车的体系架构中,更能降低开发的成本、缩短研发的时间,更快地将产品推向市场。
(2)DDS与ROS 2、AUTOSAR AP之间的关系
ROS 2和Cyber RT的底层都使用了开源的DDS,将DDS作为最重要的通信机制。但也有自动驾驶公司的工程师认为,DDS可以起到替代ROS 2的作用,站在用户的角度看,两者之间其实存在“二选一”的关系。
AUTOSAR CP里一直没有包含跟DDS有关的东西,但AUTOSAR AP在 2018年3月的最新版(版本18-10)里开始支持DDS标准。将DDS与AUTOSAR AP结合使用,不仅可以保证和扩展AUTOSAR AP系统内部互操作性的功能,而且还可以将其开放给来自不同的生态系统(即ROS 2)。
从工程角度来看,将AUTOSAR和DDS结合起来的最大优势是,功能域和网络拓扑不再是对手,而是车辆中的盟友。网络拓扑结构能够更好地适应车辆的物理约束,功能域在物理车辆的顶部提供了一个灵活的覆盖层,这就是所谓的分区体系结构。
当然,DDS仅是通信中间件的一种。关于各类通信中间件之间的异同,我们将在本系列的第二篇做更详细的阐释。
三.AUTOSAR AP的地位正在弱化?
尽管AUTOSAR是当下最有名的自动驾驶中间件,但《九章智驾》在对诸多中间件厂商们的调研中得出一个结论:AUTOSAR在产业链中的地位可能正在弱化。 当然了,那些专注于AUTOSAR系统的厂商们并不认同这一观点。
我们在上文已经提到,随着EE架构从分布式向集中式演进、MCU被SOC取代,CP AUTSAR被AUTOSAR AP、ROS 2和Cyber RT等取代已是大势所趋,在下文,我们主要谈的是“AUTOSAR AP的地位会不会弱化”。
2021年12月中旬,两家AUTOSAR发起公司大陆集团、丰田联合采埃孚、積架路虎、沃尔沃、海拉等多家汽车行业龙头企业宣布投资车载操作系统初创公司Apex.AI,而Apex.AI的主力产品Apex.OS则是基于ROS 2发展起来的。
拿到了Apex.AI公司15%股权的采埃孚方面在接受媒体采访时说:“这意味着,我们可以为客户提供AUTOSAR AP的替代方案。”
尽管AUTOSAR AP已经有了标准,但还没有落地。安波福、采埃孚、大陆这些公司提供的方案,仍然是基于AUTOSAR CP标准的接口。事实上,越来越多的OEM不太想完全用AUTOSAR去解决智能驾驶操作系统的问题。
不仅特斯拉没有用AUTOSAR AP,国内的几大造车新势力也没有用(他们用的是AUTOSAR CP+DDS)。甚至,连一些正在转型的传统车企也没打算用AUTOSAR AP。
从产业链中各方的反应来看,AUTOSAR AP“地位不稳”的原因主要有以下几个:
1.使用成本太高
冯占军博士在《AUTOSAR对基础软件开发是喜还是忧?》一文中透露,AUTOSAR的费用通常是“几百万起”,并且,针对不同的域控制器、不同的芯片需要“重复收费”,一般小厂根本吃不消。“可能还没有什么产出,几百万就花出去了”。
除购买成本高外,毕晓鹏和萧猛都提到,AUTOSAR前期的学习难度很大、学习成本也非常高。为了学会如何使用AUTOSAR,企业甚至不得不专门培训一批人,如果受培训的人临时离职了,那培训费用就打了水漂。
2.效率不高
毕晓鹏认为,AUTOSAR AP的配置非常多,它是通过配置加上一部分代码去实现自己的功能,但配置多了之后,效率不高,而且代码臃肿。
3.静态部署与动态部署的理念冲突
毕晓鹏博士提到,AUTOSAR AP其实是从AUTOSAR CP发展而来的,AUTOSAR CP是静态部署,只适用于相对简单的业务逻辑和功能,其代码是固化的,有点像以前的功能手机——功能无法改变,不可能往里面再加一个APP;但AUTOSAR AP有点像现在的智能手机,软件开发人员开发一个APP,跨平台就可以用不同手机上了,这种动态部署的理念和之前的静态部署概念不甚相同,而其方法论却是基于静态部署衍生而来的,因此在实践层面会遇到不少问题。
4.无法满足智能网联的需求
由于云端跟车端所使用的操作系统不一样,AUTOSAR只能负责车内的通信,不能支持车端到云端的通信,因而无法支持车路协同场景(车端跟云端的通信,是通过MQTT、kafka等中间件来实现的)。除此之外,AUTOSAR能否兼容车辆网联化中需要用到的数据平台、通信平台和地图平台,也存在很大的疑问。
毕晓鹏说,在发现了这些问题后,有一些OEM开始逐渐放弃AUTOSAR架构,“转而自己去研发一套更适合动态部署、成本较低的新型软件架构”。
传统车厂是从使用CP过来的,所以在惯性上,他们可能还会考虑AP是否适合智能驾驶,但慢慢地也在尝试转型。如奥迪和TTTech合作做的通信中间件——zFAS,也没有采用AP。
不同于AUTOSAR CP已经是非常标准化的东西,大家用起来没什么问题,AUTOSAR AP现在的标准也不是很完善,每年也在更新,具体AP能发展成什么样,这个谁也不知道,大家更多也是观望的态度。
毕晓鹏认为,AUTOSAR标准并不能很好地支撑自动驾驶应用和创新的发展,因此,我们有必要建立一套更适合中国智能驾驶发展、且自主可控的技术架构和生态体系。
萧猛认为,由于从AUTOSAR CP到AUTOSAR AP一脉相承,一些已经对AUTOSAR形成路径依赖的公司会坚持使用AUTOSAR AP,但在经历过招人难、开发周期长等教训之后,他们有可能转向ROS 2。
当然,以AUTOSAR为主业的公司,显然不会认可上述“涉嫌唱衰”AUTOSAR AP的观点的。
比如,Vector蔡守群就认为,AUTOSAR AP只会越来越重要,因为它是顺应车载技术不断发展的一套规范,覆盖面会越来越广。
东软睿驰茅海燕也认为,要将整车域控制器和智驾域控制器合并到统一的中央计算平台上,没有AUTOSAR AP的支持很难搞定。“不是每家公司都能像特斯拉一样自己从头搭建系统的,目前,最好的工具还是AUTOSAR AP”。
C. 悬赏80分:计算机等级考试,VF的评分该怎么来实现。
二级(Visual FoxPro数据库程序设计)考试大纲
公共基础知识
基本要求
1. 掌握算法的基本概念。
2. 掌握基本数据结构及其操作。
3. 掌握基本排序和查找算法。
4. 掌握逐步求精的结构化程序设计方法。
5. 掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。
6. 掌握数据库的基本知识,了解关系数据库的设计。
考试内容
1. 具有数据库系统的基础知识。
2. 基本了解面向对象的概念。
3. 掌握关系数据库的基本原理。
4. 掌握数据库程序设计方法。
5. 能够使用Visual FoxPro建立一个小型数据库应用系统。
考试内容
一、Visual Foxpro基础知识
1. 基本概念:
数据库,数据模型,数据库管理系统,类和对象,事件,方法。
2. 关系数据库:
(1) 关系数据库:关系模型,关系模式,关系,元组,属性,域,主关键字和外部关键字。
(2) 关系运算:选择、投影、连接。
(3) 数据库的一致性和完整性:实体完整性、域完整性、参照完整性。
3. Visual FoxPro系统特点与工作方式:
(1) Windows版本数据库的特点。
(2) 数据类型和主要文件类型。
(3) 各种设计器和向导。
(4) 工作方式:交互方式(命令方式、可视化操作)和程序运行方式。
4. Visual Foxpro的基本数据元素:
(1) 常量,变量,表达式。
(2) 常用函数:字符处理函数,数值计算函数,日期时间函数,数据类型转换函数,测试函数。
二、Visual FoxPro数据库的基本操作
1. 数据库和表的建立、修改与有效性检验:
(1) 表结构的建立与修改。
(2) 表记录的浏览、增加、删除与修改。
(3) 创建数据库,向数据库添加或移出表。
(4) 设定字段级规则和记录级规则。
(5) 表的索引:主索引,候选索引,普通索引,唯一索引。
2. 多表操作:
(1) 选择工作区。
(2) 建立表之间的关联,一对一的关联,一对多的关联。
(3) 设置参照完整性。
(4) 建立表间临时关联。
3. 建立视图与数据查询:
(1) 查询文件的建立、执行与修改。
(2) 视图文件的建立、查看与修改。
(3) 建立多表查询。
(4) 建立多表视图。
三、关系数据库标准语言SQL
1. SQL的数据定义功能:
(1) CREATE TABLE-SQL。
(2) ALTER TABLE-SQL。
2. SQL的数据修改功能:
(1) DELETE-SQL。
(2) INSERT-SQL。
(3) UPDATE-SQL。
3. SQL的数据查询功能:
(1) 简单查询。
(2) 嵌套查询。
(3) 连接查询。
内连接
外连接:左连接,右连接,完全连接
(4)分组与计算查询。
(5) 集合的并运算。
四、项目管理器、设计器和向导的使用
1. 使用项目管理器:
(1) 使用“数据”选项卡。
(2) 使用“文档”选项卡。
2. 使用表单设计器:
(1) 在表单中加入和修改控件对象。
(2) 设定数据环境。
3. 使用菜单设计器:
(1) 建立主选项。
(2) 设计子菜单。
(3) 设定菜单选项程序代码。
4. 使用报表设计器:
(1) 生成快速报表。
(2) 修改报表布局。
(3) 设计分组报表。
(4) 设计多栏报表。
5. 使用应用程序向导。
6. 应用程序生成器与连编应用程序。
五、Visual FoxPro程序设计
1. 命令文件的建立与运行:
(1) 程序文件的建立。
(2) 简单的交互式输入、输出命令。
(3) 应用程序的调试与执行。
2. 结构化程序设计:
(1) 顺序结构程序设计。
(2) 选择结构程序设计。
(3) 循环结构程序设计。
3. 过程与过程调用:
(1) 子程序设计与调用。
(2) 过程与过程文件。
(3) 局部变量和全局变量,过程调用中的参数传递。
4. 用户定义对话框(MESSAGEBOX)的使用。
考试方式
1. 笔试:90分钟,满分100分,其中含公共基础知识部分的30分。
2. 上机考试:90分钟,满分100分。
(1) 基本操作。
(2) 简单应用。
(3) 综合应用。
----------------------------------------
如何应考二级FoxBASE+语言
1998年,根据我国计算机应用水平的实际情况,教育部考试中心颁布了新的考试大纲。新大纲中关于二级FoxBASE语言考试部分变化不大。今后,适应我国计算机应用水平的发展,教育部考试中心将会不断更新考试大纲,可能在近几年内会以二级FoxPro考试取代目前的二级FoxBASE考试。
在全国计算机等级考试的各个级别的各种类别、语言的考试中,二级FoxBASE考试逐渐成为应试人员最多的一门考试,发展趋势之快是其它门考试所不能及的。但应试人数的增多并不代表这门考试较其它容易过关,尤其上机考试部分的编程题,对于非计算机专业的考生来说是有一定的难度的。因此,在进行考前复习时,要有重点、有针对性。至于什么是重点、要针对什么复习,我们通过对近几年来二级FoxBASE考试的试卷作的一些分析研究,又参考新大纲中有关二级FoxBASE的考纲和模拟考题,提出下面一些分析结果供大家参考。
首先,分析笔试试卷。笔试考试时间两小时,考题分单项选择题和填空题,其中单项选择题有50题,前40题每题1分,后10题每题2分;而填空题共有20个空(不是20题),每空2分。考试内容涉及了两大部分:
第一部分是计算机的基础知识与基本操作。
在以往几次笔试中这一部分共占30分(选择题第1-20题,填空题第1-5空),新大纲颁布后,如果仅根据大纲中提供的模拟试题,这一部分可能会减至25分(选择题减少5题)。其主要由以下几个方面内容组成:
DOS的基本操作,占10分以上。需要注意的是,这一方面题大部分题型灵活多变,要求我们熟练掌握文件、目录、路径的使用和常用命令的基本格式及其参数(注意命令格式中重定向符>和>>的使用和区别)。
计算机的常用数制及其转换;数据基本单位,包括位、字、节以及汉字编码的概念和有关运算,例如点阵汉字所占字节数的运算,占5分以上。这一方面题要求我们熟练掌握这些转换和运算的公式,不妨在复习时列一个公式表出来以便重点记忆。
特别提一下,①、②两方面的内容通常是有关这一部分的填空题5个空所涉及的内容。
多媒体技术、计算机网络的一般知识;WINDOWS的基本操作。这三部分是新大纲中新增内容,每部分至少会有1-2分的题,因为是首次考,我想暂时主要考的是它们的基本概念和一些基本组成、特点等等。
其它内容。例如计算机的基本构成、计算机的使用注意、病毒的常识等等。
③、④两方面对应的考题多为基本概念和基本常识题,复习时通常只要针对书中有关内容进行多次仔细阅读,使我们能留下较深刻的印象,不必死记硬背。
第二部分是数据库语言程序设计。
这一部分考题中选择题与填空题相比难易度和题型都区别较大,因此我分开来分析。
一、选择题。
它主要含有以下三个方面:
数据库系统及FoxBASE+的基础知识。这一方面题所涉及的都是一些固定不变的概念,包括:数据库、数据库管理系统、数据库系统、数据库模型的概念及其相互关系;关系数据库中的关系术语和关系运算,特别是几种关系运算在FoxBASE+中的体现;FoxBASE+的系统性能与工作方式等。
表达式和函数的单独应用以及它们的组合应用。对于表达式,应掌握各类型表达式的组成以及它们所涉及的运算符、运算符的优先级别、运算规则等;对于函数,要仔细阅读每个常用函数的有关组成,包括:函数名、函数的自变量的个数、每个自变量的类型、函数值的运算、函数值的类型等,其中应特别注意以下三类:一些比较难于理解的函数,如宏替换函数&;一些容易出错的函数,如求余数函数MOD();一些很少使用的函数,如文件测试函数FILE()。只有熟练掌握了以上这些基础,仔细理解书中有关这些表达式和函数的例题,才能对这一方面的题应付自如。
命令的简单应用。这里的命令是广义的,还包含有与程序有关的命令和语句、SET命令等。如同上面所说的函数一样,在熟练掌握常用命令的格式和功能之余,也要求我们了解那些不常用命令,另外就是许多命令的格式中含有的可选项的使用。
与填空题比较起来,选择题较简单,但涉及的知识面相当广,许多我们平常学习时容易忽略的知识点都有可能在它之中出现。
二、填空题。
它主要有两种类型的题:命令序列的填空题和程序填空题,每种题型又分三种方式:补充填空,即命令序列或程序中缺失的整条命令语句填空;完整填空,即序列或程序中某条命令语句不完整,对缺失部分填空;结果填空,即对序列或程序的运行结果进行填空。
就我认为,做填空题中最大的难点是阅读量大,虽说与数据库有关的空只有15个,但往往会有10组(个)左右的命令序列和程序需要阅读,
这中间还包括理解题意和浏览有关的数据库文件等。与选择题相反,它所涉及的知识点与面较小,都是一些常用命令和与程序有关的常用命令语句,这中间难一点的是多重数据库操作,其次就是与子程序和过程文件有关的内容,还有用SET命令进行开关状态的设置和环境参数的设置,比如说颜色的设置等,偶尔也会出现一些较偏一点的函数和命令填空,例如函数FILE()、汇总命令TOTAL等等。阅读程序和命令序列没有什么窍门,只有能熟练掌握数据库的命令,并进行大量的习题练习,培养出进行快速、准确阅读的能力,考试才能作出正确的思考和判断,填写正确的结果。
以上是我对笔试考试的分析,应考时要注意时间的分配,不要在某一小题、某一空上浪费过多时间。
接下来,分析上机考试的试卷。上机考试时间一小时,由考试系统自动计时,考题共三大题:
第一大题:操作系统考试题。分数30分,含五或六小题,涉及的DOS命令以DOS 5.0为基准,理论上包括所有的内部和外部命令,当然,一些具有进攻性的命令除外,例如磁盘格式化命令FORMAT、硬盘分区命令FDISK等能导致软件系统被破坏的命令。在以往几次考试中,只考过以下六个命令:建目录命令MD、删目录命令RD、删文件命令DEL、文件复制(或文件顺序连接)命令COPY、文件更名命令REN、设置文件属性命令ATTRIB,现在依旧不排除会考其它命令的可能。这一大题考的是对DOS命令及其命令参数的使用,因此在考试时要依题意做出正确的命令及命令参数,以期得到正确的结果;如果做某一题时确实发现与这一题相关的源文件或目录不存在(这种情况很少存在),只要命令和参数输入正确,即使得不到正确结果,同样给分。
通过我对近几次考试的观察,现提出应考时的几点窍门:
对于上面六个命令,除了复制命令外,其它五个命令输入完后回车,若操作系统没有任何提示出现,往往就表示这一答案正确。对于复制命令,根据题目要求,若系统提示中有“x file(s) copied”(翻译为:x个文件被复制),多数时候可以认为答案正确。
对于删除X子目录下的Y子目录的考题时,应首先检查Y子目录下是否有下一级文件,如没有,可以直接用RD命令,若出错,应首先检查目录名是否输错。
另外还有几点注意:
假若这一题要求产生新的文件或目录,而你将新文件名或目录名输错,那只好看你发现没有,系统是不会提示的。
考题中除非有特别提示,做题时能用上面六个命令做到的,就不要使用其它命令,例如说使用DELTREE命令来删除目录或文件、使用XCOPY命令来复制文件等,否则可能这一题无分。最为重要的是考试时不可脱离考生目录,切记。
第二大题:程序修改考试题。分数30分,仅一道题,需修改的源程序存放在MODI1.PRG文件中。二级各语言考试的程序修改题中共有三种题型:填空、填写语句和改错,但在以往二级FoxBASE+语言的几次考试中只使用了改错这一种题型,其余两种考试中出现的较少。
在做程序修改题时,首先要找出程序的修改点。这一点不难做到,因为在源程序中提供了几行这样的注释行:“***found***”或“***FOUND***”,称为标识行,用来标识修改点所在,指出修改点就是它下面几行语句中的某一行,而且就我注意往往是它下面的第一行。有几个标识行就有几个修改点,一般来说源程序中有三处。找到修改点后,知道了哪一行语句需修改,再根据题意以及上下关系来修改就容易多了。如果是属于改错语句,大多数时候它所给出的命令动词都是对的,需要修改的只是该命令根据上下文所应有的范围、表达式以及条件不正确;少数时候正好反过来,仅需修改命令动词。
最后当程序修改完毕以后,必须要运行该程序,判断其运行结果是否符合题意:若正确,即可认为修改题满分;若不正确,返回去再修改,直至正确。实在做不出来,考试评分系统也会检测修改点,评估有几个修改点正确,并按比例给分。
做程序修改题中有几个注意点:
一般不允许增或删行数(包括空行),修改点所在行只能修改或填写一个或几个地方。
不能删除或移动标识行,否则将会直接影响考生这部分的成绩。
对于运行结果,它可能在屏幕上直接有显示,也可能没有显示,而是直接存放在结果输出文件中,这时需要去打开该文件来检查运行结果。
第三大题:程序设计考试题。分数40分,也是仅一道题,其部分源程序存放在文件PROG1.PRG中,不过多数时候这个所谓“部分”可以说没有。程序设计题只有一种题型:编写部分程序、过程或函数。
考试时,考生必须首先要理解试题,分析出试题要求做什么,然后进行编程,最后必须运行程序以得到运行结果并存放到指定的结果输出文件中,编程题的评分规则是判定最终的运行结果,按正确结果的多少按比例进行给分。
在近几次的考试中,编程题都是对数据库的操作题,而且越来越接近实际应用,不过非常简单化。这些编程题中,总要要求有一个库文件用来存放最终的结果,称之为结果输出文件。需要注意的是这个结果输出文件有时在考题中已经提供,有时要求在程序中通过已有的库文件产生,有时又要在编程前用CREATE命令建立。后两种情况对于考生是很有利的,当你的程序无法得到最终的正确结果时,只要你产生了这个结果输出文件就会得到一定的分数。
编程前,首先要做三件事:阅读并分析试题、仔细浏览试题中所涉及的数据库文件的库结构和看一下库记录。其实由于上机考试是无纸无笔操作,光考记忆一下子是记不了这全部内容,因此这三件事是在编程过程中常常要做的。
接下来就是进行编程及调试。观察近几次考试的编程题,编出来的程序其主体多涉及到多重数据库操作以及循环嵌套和分支嵌套,尤其是它们的混合使用,由于题目中往往是要求对库记录的数据进行修改,因而在程序中最常使用的命令是字段替换命令REPLACE。
能独立编写程序非一日之功,虽有各种窍门,要想化为己用,还的靠大量的练习。
上机考试时要注意心理状态和时间分配。心理上,即使做不到当作一次普通的上机练习,也起码应把它当作一次普通的笔试类考试,只不过这个试卷是一台计算机罢了;时间上,前两大题花20多分钟足以,剩下时间用于编程题,如果直到最后10分钟编程题还未编完,甚或还没有头绪,最好先返回去仔细检查前两大题,确保这两题没有错误,以便得到或接近60分,再回头来编写程序并运行使自己能够得到部分的最终正确结果,例如就产生一个上文所说的结果输出文件(无结果数据)也行,而不要去强求编完全部程序后再来产生一个有结果数据的结果输出文件,正确与否还不得而知。
以上所有就是我分析几年来全国计算机等级考试二级FoxBASE语言考试得到的一点心得,希望能给广大考生应考提供有益的帮助。