查看: 2332|回复: 15

【转】嵌入式编程感想:会用C语言的是真男人! [复制链接]

老郭 (离线)
积分
873266
帖子
5419
发表于 2009-8-15 22:00:38 |显示全部楼层
关键词: c语言 , 感想 , 男人 , 嵌入式
几个月前笔者跟两个年轻企业家在巴尔的摩吃了顿愉快的午餐,这两个年轻人最近才从霍普金斯大学(Johns Hopkins University)计算机科学系毕业,创办了一家业绩快速成长的顾问公司;他们的公司擅长以一种称为Ruby on Rails (又称Ruby)的语言,撰写以网页为中心的数据库(web-centric databases)软件。

我们边吃饭边谈一些工作上的话题,其中一个年轻人下了个令我难忘的评论:“用C语言写程序是真正的男人!”这句话是他跟同学在将可用的编程语言进行分类时所发明的;而即使优秀如他,也当场承认他不符合以上“真正的男人”条件。看来,这句话不仅反映了C语言的高难度,也显示对较年轻的设计工程师来说,C语言真的不好掌握。

对现代的计算机科系学生来说,学习C语言就像选修一门用拉丁文来上的课那样;但C语言并不是已经过时的设计语言,且在方兴未艾的嵌入式软件开发领域维持着主导地位。下面的图一是美国版EETimes子网站Embedded Systems Design十三年来针对嵌入式软件所应用之设计语言的调查统计表。

11.jpg


图1

从图一可看出,C语言在1997~2009年之间都是嵌入式软件开发使用最多的语言;近五年来,C与C++语言更瓜分了大部分原属汇编语言 (assembly)的版图,其中较高阶的C++发展速度虽不如预期,但仍在嵌入式软件设计领域维持27%左右的占有率。整体看来,C++语言使用率在 90年代晚期加速上升,在2001年达到高峰,然后稍微下滑、之后维持稳定。

无论如何,嵌入式软件设计师不会在短时间内放弃使用C语言,原因有很多个:首先,C语言编译器支持大多数的8位、16位与32位CPU;其次,C语言在处理器与驱动程序层级,兼具高低级语言的特色。

当然,如果仅获得一小群人数逐渐减少的程序设计师支持,C语言难以继续作为重要的设计语言而存活;而既然C语言仍然如此重要,也意味着嵌入式软件设计师并不会减少。目前每年新上市的CPU有98%都是嵌入式的,这类新型CPU的长期发展性也非常乐观。图二显示美国那斯达克指数与新CPU出货量变化的消长关系。

12.jpg

图2

嵌入式软件设计教育断层

但在C语言在全世界各地的重要性日益增加的同时,学校里却越来越少学生愿意去学如何使用该种设计语言;这反映了嵌入式系统设计领域日益严重的「教育断层」问题。美国的高等教育机构在提供实用的、嵌入式软件设计必备的技能教育方面非常失败,相关开发技巧非得在工作岗位上才能学得到。

13.jpg

图3

从图三可以看出,在电子工程相关科系,只有一小部分课程是与嵌入式软件开发有关的;而计算机科学系所提供的嵌入式软件开发相关课程也只多一点点。现在有不少美国大学虽提供额外的计算机工程学分,但大多数还是来自现有电子工程、计算机科学系的课程与教授,并没有太多有关嵌入式软件开发的新内容。而在职训练也很少提供嵌入式软件开发课程。

如果以上我所举出的,有关C语言将在可见的未来继续保有重要性、特别是在嵌入式软件设计领域的种种证据属实,那麻烦就真的大了──因为现在的年轻程序设计师虽然都很聪明,他们恐怕不知道该如何使用C语言写程序,甚至不想学。

总有人得写那些需求量越来越大的嵌入式软件──新一代设计语言可能帮得上忙,却无法支持所有那些发展资历已数十年、未来数十年也会继续被应用的CPU架构;既然这样的趋势难以避免,我们这个圈子需要培育年轻一代的C语言程序设计师。但该怎么做呢?若状况持续发展下去,又会产生怎样的结果?

【备注】我确信那位年轻人并没有性别歧视,「真正的女人」当然也会使用C语言!

(参考原文:Real men program in C,by Michael Barr,本文作者为嵌入式系统设计领域的专家,目前经营一家嵌入式系统顾问公司Netrino)
zg_z (离线)
积分
4070
帖子
482
发表于 2009-8-15 22:37:41 |显示全部楼层
最近老能抢到沙发,哈哈...
说起来真郁闷,我们专业没开C语言,学的是basic, C还是大2的时候我自学的,谭浩强的那本书
人生而自由,却无往不在枷锁之中
老郭 (离线)
积分
873266
帖子
5419
发表于 2009-8-15 22:42:21 |显示全部楼层
“我们专业没开C语言,学的是basic”
一朝成名 (离线)
积分
36914
帖子
1865
发表于 2009-8-16 08:25:32 |显示全部楼层
偶也比较喜欢c~
网名招摇了点,人不招摇,大家都知道:)
sinanjj (离线)
积分
37163
帖子
2134
发表于 2009-8-16 09:38:40 |显示全部楼层
只用C js

抵制C++,抵制java,抵制一切阴谋将我们变成代码民工的语言
linux_Ultra (离线)
积分
39472
帖子
313
发表于 2009-8-16 12:16:05 |显示全部楼层
搞定汇编的人一定能搞定c
用以至学。
ZigBee笔记 (离线)
积分
1088
帖子
96
发表于 2009-8-17 17:13:43 |显示全部楼层
偶只会C
sherwin (离线)
积分
86455
帖子
7199

专家VIP勋章

发表于 2009-8-18 08:57:29 |显示全部楼层
嗯,我只会汇编,看来我不是太监就是人妖了,呵呵呵呵呵   

TNND,如果见到作者,非刮他两个大耳光不可,嘿嘿!
McuPlayer (离线)
积分
75021
帖子
4011
发表于 2009-8-18 09:26:21 |显示全部楼层
我用C写PC和MCU的程序,但非常反对作者这些哗众取宠的说辞。

sinanjj小朋友的说法偏颇了。
如果C到C++你变成了代码民工,那从ASM到C呢?从OP code到ASM呢?
我们的口号是:“不跑气,不放气”
博客:http://www.mcuplayer.com
huangxq26 (离线)
积分
11
帖子
10
发表于 2009-8-18 22:46:25 |显示全部楼层
看不懂LZ文中的波形图,谁来解释一下2004~2005之间的变化?
老郭 (离线)
积分
873266
帖子
5419
发表于 2009-8-18 23:02:13 |显示全部楼层
回复huangxq26:

2004~2005之间的使用率有个跳跃,估计是统计样本发生了变化。换句话说,1997-2004年的调查对象是同一个群体,而2004-2009年的调查对象是另一个群体。当然,这只是我的猜测。作者并没有做出解释。

不论如何,C都是使用率最高的语言,其次是C++。使用汇编语言的人越来越少了。
一朝成名 (离线)
积分
36914
帖子
1865
发表于 2009-8-21 17:25:23 |显示全部楼层
能理解jj的想法,抛开os的标准以外都是代码工人,so还是抓紧c为好~
从市面上来java是越来越便宜了,容易学习 == 便宜
网名招摇了点,人不招摇,大家都知道:)
积分
4412
帖子
29
发表于 2012-8-9 18:52:52 |显示全部楼层
呵呵 这个标题我喜欢
mxh0506 (离线)
积分
10490
帖子
700
发表于 2012-9-21 22:03:59 |显示全部楼层
前几天看到一本书上说, 应该每一\两年学习一门新编程语言.
david-xia (离线)
积分
2439
帖子
95
发表于 2012-12-29 08:48:55 |显示全部楼层
呵呵,学习了。。。。。。。。。。。。。。
szxyd (离线)
积分
162
帖子
47
发表于 2013-1-23 15:13:12 |显示全部楼层

深圳/郑州信盈达嵌入式、单片机、ARM、MIPS、FPGA、Android培训!
免费试听,满意后给您量身定制课程(包学会),快速提高您的技能!
教学特色:名师督学+工程师指导;项目案列解析+实际解决方案!
详情质询:安老师 电话13926586805  QQ 122330119
您需要登录后才可以发表评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备11013910号 | 京公网安备11010502021702
回顶部