Q****r 发帖数: 7340 | 1 最近看杂志说,嵌入式设计C还是占大多数,十几年前以为C最后会被C++代替,然后在
被Java代替,结果Embedded System Design杂志每年调查的数据显示,C的使用率曾经
下降过一段时间,后来又稳步上升了,C++上升过一段时间,05年后就是稳步下降了,
现在只有20%的项目在使用C++。Java略为上升,基本上就是Assembly的下降而已。
没想到C还这么坚挺。
What's wrong with C++? |
d****i 发帖数: 4809 | 2 C++在嵌入式设计上比C的overhead还是多了一些,另外,由于绝大多数的RTOS都是C写
的,自然C的使用率高一些,不过往上层走的话C++用的会多一点,至于Java完全不可能
代替C和C++的地位,由于多了一层虚拟机,overhead多得不是一点点,嵌入式需要的是
实时,绝对容不得latency高。现在所谓的Java在嵌入式的应用,那是指用Java写的
Android的应用,这个不能算嵌入式编程。
【在 Q****r 的大作中提到】 : 最近看杂志说,嵌入式设计C还是占大多数,十几年前以为C最后会被C++代替,然后在 : 被Java代替,结果Embedded System Design杂志每年调查的数据显示,C的使用率曾经 : 下降过一段时间,后来又稳步上升了,C++上升过一段时间,05年后就是稳步下降了, : 现在只有20%的项目在使用C++。Java略为上升,基本上就是Assembly的下降而已。 : 没想到C还这么坚挺。 : What's wrong with C++?
|
s********k 发帖数: 6180 | 3 除了overhead,还有一个是C++确实东西太多太复杂,embedded有用C++,也是基本上用
最简单的,像什么RAII,STL之类的肯定不碰,就是virtual都能少用就少用。由于
embedded主要是数理逻辑,而不是软件类型的业务逻辑,所以强大的类模块封装继承组
合等等C++强项优势不大
【在 Q****r 的大作中提到】 : 最近看杂志说,嵌入式设计C还是占大多数,十几年前以为C最后会被C++代替,然后在 : 被Java代替,结果Embedded System Design杂志每年调查的数据显示,C的使用率曾经 : 下降过一段时间,后来又稳步上升了,C++上升过一段时间,05年后就是稳步下降了, : 现在只有20%的项目在使用C++。Java略为上升,基本上就是Assembly的下降而已。 : 没想到C还这么坚挺。 : What's wrong with C++?
|
b*****e 发帖数: 1193 | 4 现在复杂的嵌入式项目开发C,C++融合了,C开发底层和中间件,C++做GUI,很多例子。
楼主在想啥呢?C++有啥问题?还是多参与实际项目吧。 |
Q****r 发帖数: 7340 | 5 C++的UI都少,UI直接上Java了。
子。
【在 b*****e 的大作中提到】 : 现在复杂的嵌入式项目开发C,C++融合了,C开发底层和中间件,C++做GUI,很多例子。 : 楼主在想啥呢?C++有啥问题?还是多参与实际项目吧。
|
i*****t 发帖数: 24265 | 6 俺嵌入当然C,其他的UI一般C++或其他语言,哪个方便,资源多就用哪个 |
i*****t 发帖数: 24265 | 7 为啥用C搞?
1 运行速度快
2 编程简单,原始积累直接拿来用
3 程序简单所以调试方便
4 运行可靠
5 程序简单明了
......
一句话,简单运行速度快方便调试就好,一切尽在掌握中。 |
d***a 发帖数: 13752 | 8 楼上几位说了不少。还有两个原因:第一,单从个数来看,大多数嵌入式
系统是用microcontroller的低端系统,比如说一个汽车里会用几十个到上百
个microcontroller,内存以KB来计算。这样的系统,只能用C。
另外一个原因是能耗,如果系统是用电池供电的话。C++的运行效率还是
比C低几十个百分点(具体多少就不争了),这就意味着做同样的计算,CPU
上要多耗几十个百分点的能耗。
【在 Q****r 的大作中提到】 : 最近看杂志说,嵌入式设计C还是占大多数,十几年前以为C最后会被C++代替,然后在 : 被Java代替,结果Embedded System Design杂志每年调查的数据显示,C的使用率曾经 : 下降过一段时间,后来又稳步上升了,C++上升过一段时间,05年后就是稳步下降了, : 现在只有20%的项目在使用C++。Java略为上升,基本上就是Assembly的下降而已。 : 没想到C还这么坚挺。 : What's wrong with C++?
|
Q****r 发帖数: 7340 | 9 没外加内存?还是因为控制逻辑简单,用microcontroller,不少大的系统还直接用
matlab generate code,那效率更低了。汽车行业用matlab还是满多的吧
【在 d***a 的大作中提到】 : 楼上几位说了不少。还有两个原因:第一,单从个数来看,大多数嵌入式 : 系统是用microcontroller的低端系统,比如说一个汽车里会用几十个到上百 : 个microcontroller,内存以KB来计算。这样的系统,只能用C。 : 另外一个原因是能耗,如果系统是用电池供电的话。C++的运行效率还是 : 比C低几十个百分点(具体多少就不争了),这就意味着做同样的计算,CPU : 上要多耗几十个百分点的能耗。
|
i*****t 发帖数: 24265 | 10 matlab生成的难道不是C么?
【在 Q****r 的大作中提到】 : 没外加内存?还是因为控制逻辑简单,用microcontroller,不少大的系统还直接用 : matlab generate code,那效率更低了。汽车行业用matlab还是满多的吧
|
|
|
Q****r 发帖数: 7340 | 11 自动生成的效率不高吧,waste很多的
【在 i*****t 的大作中提到】 : matlab生成的难道不是C么?
|
g****t 发帖数: 31659 | 12 很多嵌入式应用讲究环境物理事件和内部指令的混合时序.
C++写的code,很多简直可以说是没办法分析.
我当年曾帮coding组手算过一些corner cases.
C的code都太痛苦了。
C在这方面其实也不是最合适的。
但个方面综合下来,可能在大多数情况下,C的价值最好。
最近看杂志说,嵌入式设计C还是占大多数,十几年前以为C最后会被C++代替,然后在
被Java代替,结果Embedded System Design杂志每年调查的数据显示,C的使用率曾经
下降过一段时间,后来又稳步上升了,C++上升过一段时间,05年后就是稳步下降了,
现在只有20%的项目在使用C++。Java略为上升,基本上就是Assembly的下降而已。
没想到C还这么坚挺。
What's wrong with C++?
【在 Q****r 的大作中提到】 : 最近看杂志说,嵌入式设计C还是占大多数,十几年前以为C最后会被C++代替,然后在 : 被Java代替,结果Embedded System Design杂志每年调查的数据显示,C的使用率曾经 : 下降过一段时间,后来又稳步上升了,C++上升过一段时间,05年后就是稳步下降了, : 现在只有20%的项目在使用C++。Java略为上升,基本上就是Assembly的下降而已。 : 没想到C还这么坚挺。 : What's wrong with C++?
|
g****t 发帖数: 31659 | 13 汽车用matlab生成code的是强大的central CPU.
他说的是外围小芯片。和你说的不是一回事儿。
而且汽车的matlab 生成的code,
必须是专人检查过,优化过的。
没外加内存?还是因为控制逻辑简单,用microcontroller,不少大的系统还直接用
matlab generate code,那效率更低了。汽车行业用matlab还是满多的吧
【在 Q****r 的大作中提到】 : 没外加内存?还是因为控制逻辑简单,用microcontroller,不少大的系统还直接用 : matlab generate code,那效率更低了。汽车行业用matlab还是满多的吧
|
d***a 发帖数: 13752 | 14 C++的worst-case timing,确实是非常难分析。
【在 g****t 的大作中提到】 : 很多嵌入式应用讲究环境物理事件和内部指令的混合时序. : C++写的code,很多简直可以说是没办法分析. : 我当年曾帮coding组手算过一些corner cases. : C的code都太痛苦了。 : C在这方面其实也不是最合适的。 : 但个方面综合下来,可能在大多数情况下,C的价值最好。 : : 最近看杂志说,嵌入式设计C还是占大多数,十几年前以为C最后会被C++代替,然后在 : 被Java代替,结果Embedded System Design杂志每年调查的数据显示,C的使用率曾经 : 下降过一段时间,后来又稳步上升了,C++上升过一段时间,05年后就是稳步下降了,
|
d****i 发帖数: 4809 | 15 Not really, 绝大多数嵌入式系统都不支持Java虚拟机,只能用C或C++来写GUI,而且
很多嵌入式系统本身资源有限,不可能给你在套装个虚拟机,慢慢跑Java, 并不是所有
的嵌入式都像智能手机那样有强大的硬件资源的,再说电池功耗也是一个指标,手机一
般一天就要充电一次,很多嵌入式设备要保证连续运行14天甚至更长不充电,要用Java
写UI的话肯定不行。很多Microcontroller都是8位和16位的呢。
【在 Q****r 的大作中提到】 : C++的UI都少,UI直接上Java了。 : : 子。
|
a****l 发帖数: 8211 | 16 其实matlab生成的C代码一般只是格式上比较繁琐点,名字变长,多了很多注释,但是实际
的代码的效率还是很高的.而且很多的看上去的低效率最后经过编译器就都优化掉了.而
且实际使用中没有纯粹的matlab生成的系统,各种部件都有最适合的开发环境,各自开发
后再连接起来.也就是说,不适合用matlab直接生成的部分往往就是用别的东西生成了.
从这一点上说,C有点靠近以前大家说的汇编.
【在 Q****r 的大作中提到】 : 自动生成的效率不高吧,waste很多的
|
s********k 发帖数: 6180 | 17 matlab生成代码是主要说simulink做的 吧
【在 a****l 的大作中提到】 : 其实matlab生成的C代码一般只是格式上比较繁琐点,名字变长,多了很多注释,但是实际 : 的代码的效率还是很高的.而且很多的看上去的低效率最后经过编译器就都优化掉了.而 : 且实际使用中没有纯粹的matlab生成的系统,各种部件都有最适合的开发环境,各自开发 : 后再连接起来.也就是说,不适合用matlab直接生成的部分往往就是用别的东西生成了. : 从这一点上说,C有点靠近以前大家说的汇编.
|
a****l 发帖数: 8211 | 18 yes, but you might have m files as part of the mdl system.
【在 s********k 的大作中提到】 : matlab生成代码是主要说simulink做的 吧
|
s********k 发帖数: 6180 | 19 simulink还是比较好生成代码,模块的代码都早就写好,你怎么搭它出什么。m file感
觉难一些,不过matlab大多简单逻辑然后调用数值计算的东西,应该也还好,比如FFT
,SVD之类的早就写好了吧。
【在 a****l 的大作中提到】 : yes, but you might have m files as part of the mdl system.
|
z*****n 发帖数: 7639 | 20 用matlab generate code是基于现在microcontroller性能都差不多
比以前的80286还强了。现在随便一个32位的microcontroller都可以
时钟弄到30Mhz,还是RISC的。让它完成一个ABS任务余量都打到
不知哪儿了。
真正到了push limit的时候还得手动优化。
【在 Q****r 的大作中提到】 : 没外加内存?还是因为控制逻辑简单,用microcontroller,不少大的系统还直接用 : matlab generate code,那效率更低了。汽车行业用matlab还是满多的吧
|
|
|
z*****n 发帖数: 7639 | 21 C和C也不一样啊。
手写的时候还经常插几条“ASM”呢。
【在 i*****t 的大作中提到】 : matlab生成的难道不是C么?
|
z*****n 发帖数: 7639 | 22 no, it doesn't matter the source is matlab code or simulink.
【在 s********k 的大作中提到】 : matlab生成代码是主要说simulink做的 吧
|
i*****t 发帖数: 24265 | 23 C都能插入汇编的吧
【在 z*****n 的大作中提到】 : C和C也不一样啊。 : 手写的时候还经常插几条“ASM”呢。
|
Q****r 发帖数: 7340 | 24 matlab 如何插入汇编 ?
所以 C和 C还是不一样
【在 i*****t 的大作中提到】 : C都能插入汇编的吧
|
i*****t 发帖数: 24265 | 25 你这就是抬杠了,C应该都可以插入汇编,matlab生成的C有没有汇编,是人家matlab乐
意不乐意问题,如果乐意照样可以插入汇编,最常用的就是nop,没有汇编的C同样是C
,有汇编的C也不代表效率就高,而是不得已为之的手段
【在 Q****r 的大作中提到】 : matlab 如何插入汇编 ? : 所以 C和 C还是不一样
|
i*****t 发帖数: 24265 | 26 不管你什么C,俺喜欢拿C代码跟汇编机器码的list对比,查对比较效率和错误,而C++
可以么? |
Q****r 发帖数: 7340 | 27 我是说在某些特例,你需要加入汇编,但是matlab就不可以,所以还是用C写
用matlab代替C,不是万精油
【在 i*****t 的大作中提到】 : 不管你什么C,俺喜欢拿C代码跟汇编机器码的list对比,查对比较效率和错误,而C++ : 可以么?
|
i*****t 发帖数: 24265 | 28 回到话题就是你不能说matlab生成的代码就一定效率低
【在 Q****r 的大作中提到】 : 我是说在某些特例,你需要加入汇编,但是matlab就不可以,所以还是用C写 : 用matlab代替C,不是万精油
|
i*****t 发帖数: 24265 | 29 个人认为,C之所以有时候插入汇编,只要是对特定处理器进行的优化,而matlab如果
只是注重算法并想通用于各种编译器的话,生成的C应该是标准模板代码,无需加入汇
编。
另一个个人观点就是,C里插入汇编不代表效率都一定会高,有时候纯粹就是为了跟硬
件接口而不得已为之,例如常用的nop或硬件操作。
俺用C做底层,C++做界面GUI。各种处理器芯片一般有其C编译器,但是C++却不一定有
。C代码与生成的汇编代码比较,一目了然。
【在 Q****r 的大作中提到】 : 我是说在某些特例,你需要加入汇编,但是matlab就不可以,所以还是用C写 : 用matlab代替C,不是万精油
|
u*******m 发帖数: 3395 | 30 Shit I still like Assembly. |
|
|
s********k 发帖数: 6180 | 31 现在大部分芯片厂商对于某些critical code都会给出汇编和C代码两种不同的代码,只
要用特定的编译器,C出来的汇编是一模一样的
【在 Q****r 的大作中提到】 : 我是说在某些特例,你需要加入汇编,但是matlab就不可以,所以还是用C写 : 用matlab代替C,不是万精油
|
l***g 发帖数: 1035 | 32 embedded matlab can insert arbitary statement. or tlc.
there is no 'standard' assembly. so you can do it, just matlab doesn't do as
sembly for supported elements.
【在 Q****r 的大作中提到】 : matlab 如何插入汇编 ? : 所以 C和 C还是不一样
|
z*****n 发帖数: 7639 | 33 现在讨论的是matlab插不插。
【在 i*****t 的大作中提到】 : C都能插入汇编的吧
|
i*****t 发帖数: 24265 | 34
似乎跑题了,只要是C就可以插,matlab生成的只要是C也一样可以,人家matlab之所以
不乐意干的原因俺已经说了,不是能力问题,而是没有必要。
汇: 编。
【在 z*****n 的大作中提到】 : 现在讨论的是matlab插不插。
|