李彦ID:layerr
9075次访问,排名11195好友0人,关注者0
layerr的文章
原创 9 篇
翻译 0 篇
转载 5 篇
评论 33 篇
最近评论
netpcc:楼住真的明白嵌入式是怎么回事吗?

嵌入式的产品通常都是批量生产的。如果一个产品的产量是10W的话,硬件成本上升1块钱就会造成总成本上升10W。硬件成本并不会因为产量的上升而下降。(不考虑批发折扣),而软件成本是固定不变,会随着产量的上升而被迅速摊薄的。这和单独卖软件的完全不同。

在大批量系统中,能用10块钱的芯片解决问题的决不会选11块钱的,即使1……
lovesinox:还没死哦,汉奥内核还用她
gaominjie:楼主为人师表,说话应该客观!千万不要误人子弟!
PASCAL/C用来教学确实不错,但不要把C列为“教学语言”!
如果没有C与汇编的无缝连接,哪里来基于PC、嵌入式领域的操作系统?如果没有C与Windows底层API的完美结合,你PC上的N多硬件设备会因为没有驱动程序而成为一堆废铁!

身在福中不知福!你应该庆幸你从事于PC领域,做着上层软件的开发,可以……
luckysym:任何事情的发生都是有条件的,包括C语言的死。

毛主席教育我们,要历史地看问题,老外显然不懂历史唯物主义。

很多人都忘记了一件事,C语言的死只是在某些软件领域比如所谓的MIS系统、WEB应用等,而这些软件设计领域,在C语言诞生的时候几乎就不存在,也就是说C语言并不是为他们而存在的,C的诞生时也不可能考虑到要为30年后的企业应用、WEB应用做准备。
zzzsea:希望楼主站出来说话
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 C语言的确死了收藏

    新一篇: IT公司与政治制度 | 旧一篇: 《.net大局观》给我的启示(二)

    前两天看了一篇帖子“C语言已死的五大理由”,于我心有戚戚焉。

    我想作者的“C语言已死”的“死”并不是指“消失”的意思,而是指“退出舞台”或“风光不再”的意思。且不从技术的角度进行周密的分析,只从事物的发展规律来看,也应该如此,事实上的确如此。

    C语言发展历史是:ALGOL60->CPL->BCPL->B->C,在这个发展链条中,“操作硬件的方便性”是主要驱动力。可以理解,在那个连操作系统都还刚刚出现的年代,与硬件直接打交道是一门语言是否成功的、非常重要的因素。不可否认,C在此方面的确有一些长处,比汇编更好理解,对硬件的编程非常直接方便。我是90年开始接触C语言的,老师(东北大学计算机专业本科生,因89学潮分配到我们那里的一个工厂当推销员,我在读的湖南岳阳一中将他请过来教我们计算机)说,C语言是目前世界上最好用的语言,我认为“最好用”三字说得很好。

    “最好用”是指对当时的编程环境和编程需求而言,IT发展到今天,已经不再是PC的时代,而是浏览器时代(起码有这个明确的方向了)。软件产业的发展就象人类的工业发展一样,已经到了大规模自动化生产的时代,试问当今还有几人在用C语言写Web应用?C语言就好象一把锉刀,看似简单,但功能强大,可以锉出你所需要的任何形式的模具,但除了“劳斯来斯”这样的上千万的车外,谁还会用锉刀手工制作一辆汽车?如果世界都还停留在手工操作年代,工业能够发展现在的水平?已经发展到现在的水平的今天,谁还会用锉刀生产工业产品呢?

    其实是有的,锉刀做为人类的生产工具之一在很长一段时间内都不会消失,就象C语言一样,C语言还是有其用武之地,但C发挥优势的地方不多,得符合以下条件:定制、开发成本预算高、产品销量大(以减小每个产品的平均软件开发成本)。捻着指头一手,C最好发挥的扬所就在嵌入式了。

    再来看看嵌入式这块C的桥头堡。做嵌入式,成本无外乎两方面:平均硬件成本、总体软件开发成本。在目前来看,这两方面是矛盾的。如果采用J2ME或是Windwos CE之类的平台做开发,由于从业门槛的降低使得软件开发成本会大大降低,开发效率会提高很快,但对蕊片的性能就提出较高的要求,使得硬件成本大大增加,这种蕊片用在现在的微波炉、洗衣机等电器上是很浪费的;第二种做法当然是降低蕊片的成本,但对蕊片的编程就要更苛刻,JVM、CLR之类的东西显然是不能整个搬了,只能从硬件驱动写起,自己来完成所需要的所有功能(非常象用锉刀进行手工制作),硬件成本是大大除低了,但开发成本就提高了。就目前相对廉价的中国人才市场来看,许多开发商都会选用第二种方案,于是C语言依然保持在这个领域的龙头老大。但这是暂时的,硬件发展速度用日新月异来形容是不过份的,当硬件的成本足够低廉的时候,你是用JVM、CLR,还是用C呢?

    C语言的另一大功能是“教学语言”,这点不错,我现在从事教学工作,C语言是我经常讲授的一门课,的确很不错,不仅让初学编程的人培养一种严谨的思维,也能通过对针指的学习领悟其他编程语言的语法实质。但我个人认为Java或C#也应该是一门不错的教学语言,这两门语言比C复杂,这是做为教学语言的缺点,但最大的优点在于其是完全OOP的,而C是面向过程,在这个OO的年代,以C做为入门的编程者常常需要几年的时间来转换思维到OO上来。我的感觉是,C语言做为入门教学语言在很长一段时间内不可改变,也不能改变,但学时数应该减少,而Java或C#语言应该做为C语言的后继必修课应该增加学时。

    C语言应该退出舞台,这既是万事万物的自然规律,也是IT良好发展的征兆。

    发表于 @ 2007年01月09日 09:58:00|评论(loading...)|编辑

    新一篇: IT公司与政治制度 | 旧一篇: 《.net大局观》给我的启示(二)

    评论

    #zheng616 发表于2007-01-09 13:05:57  IP: 58.83.47.*
    有道理....C语言太神话了...学了做不出什么有什么用呢?
    #jemyzhang 发表于2007-01-09 13:59:17  IP: 218.88.103.*
    楼主有点想当然的了。
    诚如你所说,发展时万物的规律,这是对的,但是这也是一种过程。在当前的阶段,c语言的确还是具有很强的生命力。而你说的“当硬件的成本足够低廉的时候,你是用JVM、CLR,还是用C呢?”只是一种对未来的设想罢了,确并不是现实。
    如果真的如你所说,成本更低廉,性能更强劲的硬件出来了,那当然会很自然的过渡,问题是现在的情况是这样吗?
    所以结论就不言而喻了。
    #precipitant 发表于2007-01-09 18:28:16  IP: 202.98.19.*
    技术都是发展进步的。
    新东西都是取老东西之长 补老东西之短。
    所以无论是省级还是演变。
    新的大都比老的好。
    老的要么升级,要么演变。
    而其自己则逐渐的淡去!
    #kingcalf 发表于2007-01-09 21:33:32  IP: 222.170.113.*
    浏览器时代其它东西都不用活了吗?
    #layerr 发表于2007-01-09 22:08:00  IP: 222.183.189.*
    kingcalf问得好,
    Java会回答说:可以活,但必须活在JVM中,你没必要去看操作系统的脸色,更没有必要关心硬件的心情,只需要在JVM的怀抱中,你就得到自由。
    .net会回答说:可以活,但请在你的名称后面加一个.net后缀。只要你能够尊守MSIL标准,你想怎么的都行。
    #mbmseason 发表于2007-01-10 01:59:18  IP:
    LZ,C语言可不是好的“教学语言”,而且,C语言的严谨性并不是很好啊,相比之下,Pascal似乎更胜任“教学语言”的角色。
    #x1160 发表于2007-01-10 20:25:28  IP: 218.75.248.*
    C语言做为入门教学语言在很长一段时间内不可改变,也不能改变,但学时数应该减少,而Java或C#语言应该做为C语言的后继必修课应该增加学时。
    这点我还是有点赞同,教学上来说,BASIC是幼儿园老师,而C就充当了小学老师,JAVA,C#就做高中大学老师,前面的是教会你思想,后面的才是学习钻研的重点。幼儿园上不上到不是很重要,小学怕是还要上的吧。
    C已经死了,也不尽然。
    #r_mosaic 发表于2007-01-11 12:54:49  IP: 211.167.159.*
    我觉得应该各种语言都用用,这样才好玩。死一个就少一种,那还不如说:我坐汽车了,把脚砍掉吧。
    #gccr 发表于2007-01-23 09:44:12  IP: 203.86.43.*
    学习C语言的一大误区就是什么都来自己实现,其实学C语言最开始要学的是如何使用标准库,操作系系提供的API来解决问题.
    至于语法的东西,要在实际使用中慢慢学会,其实光学语法,也没有几个人把语法学的明白,是吧??
    而且 ,学习C语言,最好的平台是Linux,不是Windows.
    #xxrl 发表于2007-01-23 10:07:00  IP: 60.28.74.*
    试问当今还有几人在用C语言写Web应用?
    -----------> 很少,可没有操作系统你做什么web应用?难道操作系统都用汇编写?你要疯啊
    #zzzsea 发表于2007-01-23 10:13:26  IP:
    年顿说:如果说我比别人看得更远些,那是因为我站在了巨人的肩上.
    如果说C#、Java好用,那也是因为站在低层的基础上,JVM用什么写的、.NET框架用什么写的。没有这些,你所学的东西有用吗?在哪里用。做人啊,不能忘本。
    现在是Web时代,那Web的底层通信又是怎么做的呢。没有C,你能站得这么高来说话吗?
    #stkeke 发表于2007-01-23 10:45:38  IP:
    咋没有人跳出来说 FORTRAN, COBOL已经死了呢.
    #zhouhongyun 发表于2007-01-23 11:57:12  IP:
    现在是Web时代,那Web的底层通信又是怎么做的呢
    ----说的对,web的基石IE和firefox都是C/C++编写的,当然了,sun也写了个java浏览器,嘿嘿,大家不妨用用,然后谈谈心得,看和IE或者firefox的差距是十倍还是百倍
    #linhai1978 发表于2007-01-23 13:35:11  IP:
    无聊死了,楼主做过工控吗?楼主对工程了解多少?了解C吗?
    c是一种针对芯片架构的语言,和C做比较的只有FPGA当中VERILOG语言。
    我不想说哪个语言强,但是在芯片级的操作上,C是无人可比的,我做过很多MCU的项目,用过FPGA;对我们这些工程师来说,语言只是一个工具,C非常能满足要求,你到任何一个单片机上跑跑JAVA试试看。C的特点不在于它是一种语言,而是它代表一种结构,最合适于控制的结构,如果你没有真正用C做过东西就不要乱评论它。
    还有楼主对硬件了解多少?能够随便建立一个硬件模型吗?当然是用MATLAB之类的,对微分和积分电路又明白多少,对数字电路又明白多少?对电容电阻又知道多少?
    本人水平很低,不过如果我不懂我一定说不会,楼主这样还做老师,实在误人子弟。
    #ToolBuilder 发表于2007-01-23 13:38:38  IP: 222.212.69.*
    争论这些都好没意思,从宏观来看,没有任何东西是永恒地,地球也是如此,我们只要在他存在的时候发挥他最大的潜能就够了,不是吗?每个人都要死,但活着的时候能对得起自己就OK!
    至少从现在看,操作系统,驱动程序都还是C写的,所以说C死了的人永远不会是金字塔的顶尖人物!

    #softwarewander 发表于2007-01-23 13:47:16  IP:
    怎么又这么多人在讨论着问题啊???

    每个人的看法都会不同, 那些动不动就说 xx语言已经死了的人,简直是傻X, 最开始写那篇文章的那人,我觉得是想要出名, 不写点能吸引人眼球的字眼他不甘心。

    各种语言的产生都是和历史还有一定的领域紧密相关联的。 就像现在的报纸,前一段时间互联网普及的时候,就有很大一部分傻X在那里说,什么互联网要取代报纸,书籍之类的晕话,现在看看吧, 报纸有被取代的意思吗? 人的每一天的生活中不可能时时刻刻都离不开互联网,(或许以后可以,那肯定是很多世纪之后的事情了)

    在计算机技术领域,每种语言都有它存在的价值,都有它各自的优点, c语言只要在现存的硬件体系不被彻底改变的情况下世不可能被别的语言代替它在底层开发的老大的位置的。 (赫赫没,如果有人说,芯片等硬件的发展会使人们忘记现在c语言的优势, 笑话,材料科学的发展,到一定阶段也会有瓶颈的,直至采用全新的材料, 等着些都发展起来之后,你的孙子的孙子都不一定在了……)


    讨论这种话题实在没意思…… 不写了
    #lllyyy2403 发表于2007-01-23 14:47:50  IP: 202.100.203.*
    我了解的大部分计算机老师都善于空谈,但是没有多少实践经验,这就是当今中国的计算机教育领域的现状.LZ就是很典型的体现.
    #zhangzhenyu220 发表于2007-01-23 15:36:22  IP: 220.205.61.*
    Naive, 还在争论这样无聊得问题。C 和 Java .Net 根本不是一个层面的东西, 怎么还放在一起比较? C 语言叫系统级的语言, 是用来开发OS, JVM, CLR等系统程序的, Java和.Net 是用来开发应用程序的, 它们井水不凡河水。 目前没有,也没有必要发明新的语言来取代C/C++在系统程序开发的地位, C怎么会死了呢?
    C死了, linux和windows还活不活了?
    #zhangzhenyu220 发表于2007-01-23 15:36:22  IP: 220.205.61.*
    Naive, 还在争论这样无聊得问题。C 和 Java .Net 根本不是一个层面的东西, 怎么还放在一起比较? C 语言叫系统级的语言, 是用来开发OS, JVM, CLR等系统程序的, Java和.Net 是用来开发应用程序的, 它们井水不凡河水。 目前没有,也没有必要发明新的语言来取代C/C++在系统程序开发的地位, C怎么会死了呢?
    C死了, linux和windows还活不活了?
    #zzzsea 发表于2007-01-23 17:07:35  IP: 218.200.188.*
    其实要得出结论很简单,LZ试试把和C/C++有关的东西全部移除,看看你的Java程序与.NET程序能不能运行。记住,是移除C/C++相关的所有东西。
    #wlsr2004 发表于2007-01-23 19:17:23  IP: 59.41.59.*
    如果C/C++死了,请问一下楼主系统级的开发是用你所说的JAVA呢还是退步到用汇编还是更退一步用到机器语言去呢?

    没深入了解之前不要随便说一个语言已死,对于初学者的话,这是很容易误导人的。如果你做为教师这样子教学生的话,真是害人不浅呢。
    #zenny_chen 发表于2007-01-23 19:45:35  IP: 222.67.218.*
    呵呵。本人正喜欢用你所谓死去的C/C++。

    而且要用到死。
    #zenny_chen 发表于2007-01-23 19:52:55  IP: 222.67.218.*
    再加一句。

    请问OO的根本目的是为了什么?OO的作用是什么?什么是OO的精髓?

    我可以说在很多方面,用面向过程设计可能会更好些。所以喜欢C++。想用OO就用OO;想用PO就用PO。

    另外,C/C++可以使我拿更多的钱。如果都用Java或.NET,技术门槛降低将会使软件行业的平均工资降得更低。
    #zming 发表于2007-01-23 20:21:31  IP:
    C语言的另一大功能是“教学语言”,这点不错,我现在从事教学工作,C语言是我经常讲授的一门课,的确很不错,不仅让初学编程的人培养一种严谨的思维,也能通过对针指的学习领悟其他编程语言的语法实质。但我个人认为Java或C#也应该是一门不错的教学语言,这两门语言比C复杂,这是做为教学语言的缺点,但最大的优点在于其是完全OOP的,而C是面向过程,在这个OO的年代,以C做为入门的编程者常常需要几年的时间来转换思维到OO上来。我的感觉是,C语言做为入门教学语言在很长一段时间内不可改变,也不能改变,但学时数应该减少,而Java或C#语言应该做为C语言的后继必修课应该增加学时。
    =======================================

    晕啊,教学语言是 Pascal,不是C。C比较随意, Pascal 比 C 严谨得多。

    楼主既然是教学工作者,应该知道三大教学语言吧:Basic、Fortran(77)、Pascal。
    #SILENT_HILL 发表于2007-01-23 20:58:33  IP: 222.71.84.*
    不得不鄙视你,“芯片”都能写成“蕊片”,你这也配自称“严谨”?!呵呵,中国的学术腐败就从你这样的眼高手低的老师开始。
    #leasun 发表于2007-01-23 21:56:13  IP:
    在很多领域,C都是无可替代的。这个世界上,不是只有在JVM和.NET上才有软件开发,在底层,在嵌入式系统,C语言的使用量大大超过一般的应用开发。
    在工业界,还没有找到C语言的替代品。而且与其创造一个新的语言,不如好好改进C语言,使它更适合现代开发环境。
    #laitysoft 发表于2007-01-23 22:58:07  IP:
    哗众取宠
    #zzzsea 发表于2007-01-24 08:54:12  IP:
    希望楼主站出来说话
    #luckysym 发表于2007-01-24 09:06:16  IP: 60.176.177.*
    任何事情的发生都是有条件的,包括C语言的死。

    毛主席教育我们,要历史地看问题,老外显然不懂历史唯物主义。

    很多人都忘记了一件事,C语言的死只是在某些软件领域比如所谓的MIS系统、WEB应用等,而这些软件设计领域,在C语言诞生的时候几乎就不存在,也就是说C语言并不是为他们而存在的,C的诞生时也不可能考虑到要为30年后的企业应用、WEB应用做准备。

    尽管C语言在新兴的软件领域并不擅长,但是C语言诞生时就已经存在的那类软件如系统软件,到目前C语言仍旧时这类软件开发的绝对主力。只要这类软件不消亡,C语言就不会死。
    #gaominjie 发表于2007-01-24 09:34:22  IP:
    楼主为人师表,说话应该客观!千万不要误人子弟!
    PASCAL/C用来教学确实不错,但不要把C列为“教学语言”!
    如果没有C与汇编的无缝连接,哪里来基于PC、嵌入式领域的操作系统?如果没有C与Windows底层API的完美结合,你PC上的N多硬件设备会因为没有驱动程序而成为一堆废铁!

    身在福中不知福!你应该庆幸你从事于PC领域,做着上层软件的开发,可以很少甚至不用C语言!

    如果你从事于嵌入式领域,除了C与汇编,你别无选择!

    没有C,微软、Sun、IBM的构建于底层的标准和协议的系统软件还能升级吗?
    没有C,你家的冰箱、洗衣机能正常工作吗?
    没有C,你的PDA、手机、DV等数码产品能转起来吗?
    没有C,你能坐在用C写出来的操作系统的计算机上发表这个贴子吗?
    #lovesinox 发表于2007-01-24 10:31:27  IP: 125.254.133.*
    还没死哦,汉奥内核还用她
    #netpcc 发表于2007-09-07 16:25:21  IP: 10.68.86.*
    楼住真的明白嵌入式是怎么回事吗?

    嵌入式的产品通常都是批量生产的。如果一个产品的产量是10W的话,硬件成本上升1块钱就会造成总成本上升10W。硬件成本并不会因为产量的上升而下降。(不考虑批发折扣),而软件成本是固定不变,会随着产量的上升而被迅速摊薄的。这和单独卖软件的完全不同。

    在大批量系统中,能用10块钱的芯片解决问题的决不会选11块钱的,即使11块钱的芯片的性能翻番。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © layerr