猛禽的编程艺术

编程是一门艺术

猛禽ID:Raptor
[修改头像]
389647次访问,排名112好友1人,关注者5
Raptor的文章
原创 130 篇
翻译 0 篇
转载 0 篇
评论 854 篇
猛禽的公告
本站作者:猛禽
号:老鸟,别号:大叔,英文名:Raptor。

Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
联系方式:


我常用的Extensions

最近评论
magician0o0:你好,能抽空教教我关于使用hg合并的具体操作吗?我使用的版本是v1,按照网站上的那个helloworld的例子运行得到的结果不同,谢谢
lanphaday:韩寒说了:深绿色在中国就代表慢,比如中国邮政和中国火车。
fayfarn:是你没有弄清楚Windows下的Unicode实现方法而已,不能用Unix的实现思路来看待Windows
Raptor:我现在用的就是Mercurial,不过它也有一些不方便之处,我在第一篇里有说到,下一篇还会详细说它。
mikeshi:太惨了,竟然在床上等你的首页上了,还没有人留言,我就踩你一脚吧
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    附图
    0. 个人链接
    1. 猛禽的河蟹BLOG(RSS)
    2. 寻找世界的美丽(RSS)
    3. Mental Studio-个人主页(RSS)
    5. 猛禽专栏-CSDN上的个人专栏
    6. 猛禽文档-CSDN个人技术文档
    7. CSDN电子报
    1. CSDN BLOG
    1. 令狐虫
    2. 韩磊(RSS)
    3. lxpbuaa(桂枝香在故国晚秋)
    4. 一竿残照.金棣@CODELPHI
    5. deadcat's blog
    6. gigix(透明思考)
    7. ozzzzzz
    8. 蝈蝈
    2. 技术BLOG
    chechy
    CoolSlob
    FrameSniper(FS)
    hkbarton
    leeon
    SnowFlacon
    小伍
    小小
    小眼镜
    我的ACE,TAO
    摩托
    百合MM
    3. 洋人BLOG
    Allen Bauer
    Anders Ohlsson
    Danny Thorpe
    Don Box
    Herb.Sutter
    James Gosling
    Martin Fowler
    存档

    原创 不值一驳

    新一篇: 语言的缺陷

    前几天一个叫许式伟的人,在CSDN BLOG发了一篇《驳“C语言已经死了”》,其目标是针对Ed Burnette的这篇《C语言已经死了,5个需要忘却它的理由》,之后引发了一堆的“驳”过来,“驳”过去,再“驳”过来……

    其实这种问题根本不值一驳。

    正如令狐在发给我的MAIL中所说的那样:

    其实任何语言都没有什么好跟不好,只有适用不适用 ── 高级语言的确方便,但总需要有人写汇编去实现它的编译器或解释器吧……。
    而C语言,认真的用过任何其他"更高阶语言"的人都不会说它"已死"──目前几乎所有的高阶语言,在提供低阶接口的时候,都是采用C/C++作为接口。而一个真正的系统,100%架构在高阶语言之上而没有使用一行低阶代码,可以说是不可能的。
    一个人可以只关心高阶语言而不去研究底层,但他绝对不应该排斥底层开发人员。否则,当有一天,真的如他所愿,所有的底层开发人员都消失不见的时候,他才会知道自己有多么痛苦。

    至于那些看不得别人不同意见,动辙管别人叫“小白”的,其实自己不过是个“大白”。

    用VM语言很了不起么?论性能,还是比不过C;论功能,又比不过动态语言。有什么可得瑟的呢?更何况他们用的VM不还是C写的嘛。

    我讲一个故事来结尾吧:

    从前有一座山,有几个人在山顶上堆了个小土堆,有一只土鳖爬到这土堆上,登高望远,高瞻远瞩,不禁感慨大发,曰:我站得比山还高,那个号称“山”的东东可以死了。然后一帮小土鳖跟着说:是啊是啊……

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

    旧一篇: 傅里叶级数拟合实验

    评论

    #TopCat 发表于2007-01-10 11:01:28  IP: 218.80.195.*
    这个热闹一定要看……
    #zbird 发表于2007-01-10 11:36:32  IP: 192.168.1.*
    CSDN经常会出现这么一些语不惊死不休的文章。
    对于一个网站/一个新技术/甚至个人,只要炒做才有知名度。
    但这样的东西看多了还真自虐。
    以前还常去csdn看新闻,现在因为这些文章都有些不愿去了。
    #do2008 发表于2007-01-10 14:55:39  IP: 58.59.146.*
    土鳖呀~~~小土鳖~~~
    #CoolSlob 发表于2007-01-10 14:56:17  IP: 218.18.35.*
    -_#
    #winthegame 发表于2007-01-10 15:43:17  IP: 211.137.100.*
    最后的意思阴晦地暗指 写《C语言已经死了》的作者,当了二十多年的山了,然后转头来当土鳖了,然后对其他小土鳖说:当山没意思,当小土鳖才是最爽的......
    #zswang 发表于2007-01-10 15:45:19  IP:
    接分 :) 如果有的话
    #firetoucher 发表于2007-01-10 15:53:11  IP: unknown, 202.*
    哇,高手的文章也,真是高屋建瓴,入木三分.......
    #lbaby 发表于2007-01-10 16:12:28  IP: 222.128.6.*
    嘿嘿,帖主牛X
    但同时也要注意,光说别人的观点不值一驳,是同样站不住脚的
    #vcnewer 发表于2007-01-10 17:03:26  IP: 221.222.168.*
    凑热闹,听故事
    #daydayup234 发表于2007-01-10 17:08:37  IP: 222.90.73.*
    入木三分
    印象深刻
    #hjl5135 发表于2007-01-10 17:14:49  IP: 219.149.12.*
    牛。。。。。。。。。。X
    #ahjoe 发表于2007-01-10 17:30:19  IP:
    佩服。
    整天想着这个语言要死,那个语言要死。这样的人...
    #DotNetGoodSky 发表于2007-01-10 17:37:25  IP: 220.173.252.*
    呵呵,我是菜鸟,而且不是计算机主业,学医的!记的我上学的时候解剖老师说了个笑话.
    心脏说我最重要,没有我大家全完!
    肝脏说我最重要,没有我大家全完!
    脾脏说我最重要,没有我大家全完!
    肾脏说我最重要,没有我大家全完!
    肺脏说我最重要,没有我大家全完!
    ...
    最后老师说谁最重要!
    没有那个不重要!
    大家都重要!
    玩了!
    看看人家国外都在说框架了,我们还在吵那个言语××..
    还想起一个笑话,一个中国人是龙,两个中国人是蛇,三个中国人是虫!
    路过,走过,希望大家不骂不打!
    最后发句牢骚:中国的程序员弄个比C牛的出来的看看!
    #blastzgd 发表于2007-01-10 17:51:53  IP:
    楼主的语,深得人心啊..
    #blastzgd 发表于2007-01-10 17:53:13  IP:
    晕...其实我想说的是"话".唉,笑得太厉害了,手抖了下.
    #zzmsl 发表于2007-01-10 17:53:19  IP:
    hao
    #TianChong 发表于2007-01-10 21:33:31  IP: 58.60.88.*
    入木三分,有见地!!!!!!!!!!!
    #TianChong 发表于2007-01-10 21:33:32  IP: 58.60.88.*
    入木三分,有见地!!!!!!!!!!!
    #Love_My 发表于2007-01-10 21:59:08  IP: 218.20.159.*
    原来CSDN是三个月一个来一次的 ...
    三月经 ~
    #condor888 发表于2007-01-10 22:21:48  IP: 124.90.42.*
    LZ说得好啊
    #daiguan 发表于2007-01-11 01:22:41  IP: 218.71.179.*
    在提供低阶接口的时候,都是采用C/C++作为接口,这个明显托大了,
    不过要过C语言已死,这个不如说冯·诺依曼体系已死更好点
    #julong88 发表于2007-01-11 08:33:21  IP:
    不过要过C语言已死,这个不如说冯·诺依曼体系已死更好点

    --------------------------
    应该没什么关系吧



    其实原作的意思是大家都不要给我来抢饭碗了...
    #julong88 发表于2007-01-11 08:40:41  IP: 218.83.62.*
    看看人家国外都在说框架了,我们还在吵那个言语××..


    扯dan!
    #TrackSpider 发表于2007-01-11 09:18:15  IP: 222.244.12.*
    辨证的看问题,有道理!!
    #irplay 发表于2007-01-11 09:23:01  IP: 221.224.83.*
    不要吵了,大家去看看C风格怎么样被B风格灭掉的.
    http://blog.csdn.net/irplay
    #layerr 发表于2007-01-11 10:55:32  IP: 61.186.154.*
    周星驰说“就算是一条内裤,也有它的用处”,更何况是横行二十几年的C语言呢?
    楼主说的是一条适用于任何语言的普遍真理,并不能成为C语言存在的充分条件。
    反倒觉得楼主不仅像最后一段中所描述的土鳖,而且还像一只坐在井底的蛙,思考问题没有从系统的角度考虑,过于的关注实现的细节。
    如果如楼主所言,机器语言最好,C语言最后还不是得编译成机器代码执行?
    #julong88 发表于2007-01-11 11:05:06  IP:
    从做的那个事本身去考虑
    不存在哪个语言是最好的
    只有做这件事最适合的,最舒服的
    #julong88 发表于2007-01-11 11:09:29  IP:
    换个角度去考虑不难看出诸位老鸟的内分泌情况良好,
    你看这不XX又来了。。。

    开个玩笑-_-!
    #pauling 发表于2007-01-11 11:16:15  IP: 218.108.28.*
    C/C++说到底也不过是爬在机器语言大山之上的土鳖.
    编程语言出现的目的是什么?
    不断为编程语言的历史潮流中一眼风景唏嘘感叹,并不能阻止大多数人追求更美的风景.
    #r_mosaic 发表于2007-01-11 12:31:20  IP: 211.167.159.*
    我学计算机入门靠的是 BASIC,但是自从听说有 C 语言这种“中级”语言以后,我开始对它发生了兴趣,并开始认识到,汇编这种“低级”语言和 C 语言这种“中级”语言在计算机底层开发中有着重要的作用。
    #gaofentz 发表于2007-01-11 13:36:35  IP:
    因中国高楼太少,所以有此之争。
    国外好象从不争这种事,太浮噪了。
    #cloudwu 发表于2007-01-11 14:15:28  IP: 218.72.14.*
    我现在每天都用 C (非 C++)写程序,觉得 C 有诸多不足,但是并不讨厌它。

    其实单就低阶语言来说的话,C 语言也不完美。在作为实现其它语言的工具时(比如用来实现函数式语言,或是把 java 这样的语言写出的代码静态翻译成 C 等等),局限性很多。比如对堆栈的控制性太弱,在语言级无法准确的操控堆栈。这使得 gc (基于根扫描)的实现,尾调用的优化非常困难。

    我最近读了篇 paper 很有共鸣。
    http://www.hpl.hp.com/personal/Hans_Boehm/gc/

    虽然现在我们在低阶开发上把 C 当万能药在用,但它毕竟不能包治百病。如果真要证明 C 语言已经不适用了,前面的文章的比较角度就错了。至于反驳,也不够理直气壮。

    单说 gc , C 语言本身就不适合实现高性能的 gc 模块,寄托于未来有个天才写出一个 gc 库来是不现实的。那不会是一个 java 实现的那种 gc , 这是 C 语言本身的硬伤。

    想用 C 库形式来实现性能足够的 closure 更是天方夜潭。

    最后倒是 C++ ,颇让我觉得有种恨铁不成钢的感觉。高不成低不就,现在已经不大用了。
    #huxinghua 发表于2007-01-11 14:40:46  IP: 222.172.224.*
    就算程序员都死光了 C也不会死
    就算CSDN死了 C也不会死
    #whitelion 发表于2007-01-11 15:18:40  IP: 58.100.54.*
    只要有人用,就不会死
    调查一下,现在有多少人在用C
    正当壮年,如何能说死了?
    #dogdotnet 发表于2007-01-11 16:13:06  IP: 218.1.25.*
    千万不能死,否则前人留下代码就全作废了。太可惜。
    #syhan 发表于2007-01-11 21:46:09  IP: 121.229.5.*
    分工不同而已嘛,呵呵
    #zhouhongyun 发表于2007-01-11 22:20:23  IP: 219.140.59.*
    C/C++说到底也不过是爬在机器语言大山之上的土鳖.
    ------windows,java,c#,linux都是这个土鳖生出来的小鳖,你不服气是怎么着
    #Raptor 发表于2007-01-11 22:43:45  IP:
    看那些回贴不看贴的就知道:土鳖就是土鳖。
    第一、我从来没有说过C是万能的,只是没有C是万万不能的。
    第二、C貌似并没有说过机器语言已死这种土鳖话。
    #rexfa 发表于2007-01-12 00:47:03  IP:
    驳来 驳去,得瑟来 得瑟去…………
    土鳖来,土鳖去……
    海龟来,海龟去……
    就混个饭吃,还这么麻烦?
    #Igj1012 发表于2007-01-12 08:41:23  IP: 60.191.25.*
    如果真是认为不值得一驳,就不会写这些东西了
    #zhouhongyun 发表于2007-01-12 12:34:28  IP:
    如果真是认为不值得一驳,就不会写这些东西了
    -----真的认为值得一驳,你就不会啥道理都没说出来
    #cloudwu 发表于2007-01-12 13:04:52  IP: 218.72.14.*
    C 并不是对机器模型的完整抽象,就是说把 C 作为一种 portable assembly language 是有缺陷的。所以说即使是做底层,光有 C 也是不够的。

    VM 用 C 写只是历史选择的结果,今天看来 C 并不适合写 VM ,只是没有更好的选择而已。

    C 在静态语言中没有太大的竞争者其实也是 C 的悲哀。造成了在 C 能力临界点上的领域,它依旧成了最好的选择。这是我说“在低阶开发上把 C 当万能药”的本意。

    “没有 C 是万万不能的”也是一个历史选择的结果。假若当年 pascal 战胜了 C ,现今所有用 C 写的代码都用 pascal 来实现也未尝不可。

    C 在历史的选择中走到了今天,当然还会一直存在下去。
    #krisky 发表于2007-01-12 13:08:56  IP: 222.240.128.*
    在这个世界上, 有什么东西是十全十美的.
    C语言风风语语走过二十个年头了.这二十年足以说明他的价值.
    怀疑《“C语言已经死了”》的作者是否真正的使用过C语言
    #TopCat 发表于2007-01-12 13:46:55  IP: 218.80.195.*
    @cloudwu
    请教一下为什么说“C并不是对机器模型的完整抽象”?在我看来它对内存模型和运算指令两部分已经抽象得相当好了啊。
    #cloudwu 发表于2007-01-12 14:01:58  IP:
    举几个例子:
    函数式语言中常用的尾调优化,在 C 语言中无法表达。即:你的函数中产生了 a,b,c,d 四个参数,需要传递到下一个函数去运行(下一个函数的参数正好是 a,b,c,d)这时候你需要保留现在的堆栈,然后 jump 到下一个函数入口。而不是把 a,b,c,d 重复入栈,call 下一个函数的入口。

    实现一个 gc 库,需要做根少描。其中一个最重要的根是系统堆栈。即,你在 gc 发生时,需要回溯堆栈 mark 掉所有正在使用的内存。但是 C 语言缺少对堆栈上数据布局的描述信息,这就成了一个不可完成的任务。还有 pascal 里支持的函数内函数,C 由于某些原因没有支持,其中一个就是难以取到堆栈上,上一层次的局部变量的布局的缘故。

    缺少结构元信息也是一点,当然这个可以通过开发一个新的前端解决,好象 C++ 做的那样。

    其实还可以列出一些,http://www.hpl.hp.com/personal/Hans_Boehm/gc/ 这篇 paper 里比我讲的更详细一些。

    我写了篇 blog 谈论这些:
    http://blog.codingnow.com/2007/01/is_c_dead.html

    另外,从机器指令来说,C 难以支持 SIMD 指令集。也很难描述并行运算,在今天也算是一种遗憾。
    #zhouhongyun 发表于2007-01-12 23:21:03  IP:
    你的函数中产生了 a,b,c,d 四个参数,需要传递到下一个函数去运行(下一个函数的参数正好是 a,b,c,d)这时候你需要保留现在的堆栈,然后 jump 到下一个函数入口。而不是把 a,b,c,d 重复入栈,call 下一个函数的入口。
    ------任何语言编译成最终的机器指令都是这样调用函数的,又不是就C语言是这样,何况这样也没什么不好,难不成重复压栈的那点开销,你还消受不起??直接用jump跳到函数地址会让逻辑变的很不清晰,可读性太差,而且你说的情况也属于特殊情况,参数值和个数都相同的情况是很少出现的。
    #IceQuake 发表于2007-01-13 08:25:04  IP:
    如果对搞电子的人说C语言已死~一定会被笑话的~
    而且在嵌入式开发中,C用得哪里会少?
    这种问题确实没什么好争论的...只是发展方向不同而已...
    #Eric_Davis 发表于2007-01-13 13:53:39  IP: 58.61.109.*
    to cloudwu:
    你举的例子并不合适。对于堆栈的控制,不同体系结构的做法可能会有区别。x86上比较多的做法是压栈,但是在mips里是通过四个参数寄存器。高级语言不可能描述的那么精确。
    C既然是一个高级语言,这种细微的东西自然不会在语言级去支持,在OS内核里也存在一定的汇编代码,或者嵌入汇编,这些代码基本是和体系结构相关的。你说的堆栈优化,不幸正是其中之一。
    C语言作为高级语言,自然有其处理不到或者是编译器生成代码不符原意的地方,与汇编结合使用是很有必要的,而且底层开发也一直是这么做的。还是不要争论一些无谓的东西了。
    #Anmeiqian 发表于2007-01-13 17:51:10  IP: 58.53.64.*
    赞成楼主的观点
    #eneiying 发表于2007-01-15 17:40:22  IP:
    我是菜鸟,但也知道C 语言的重要,以后会多看大家的发表意见,也是很好的学习机会。我认为从驳中很多人可以更清楚的认识到很多以前模糊的问题,并非无谓。
    #yhz 发表于2007-01-16 10:31:24  IP: 219.136.222.*
    函数式语言中常用的尾调优化,在 C 语言中无法表达。即:你的函数中产生了 a,b,c,d 四个参数,需要传递到下一个函数去运行(下一个函数的参数正好是 a,b,c,d)这时候你需要保留现在的堆栈,然后 jump 到下一个函数入口。而不是把 a,b,c,d 重复入栈,call 下一个函数的入口。

    ~~~~~~~~~~~~~~~~~~~

    晕,既然你这么了解你所需要做的东西,那你完全可以绕过编译器,自己嵌入汇编代码来完成这个功能啊。至少C/C++语言为你保留了这么一个窗口,你不用,却在说不好?
    其它的编程语言,好像我还不知道还有哪个可以直接嵌入汇编代码的?
    #jjjkl81 发表于2007-01-23 12:55:44  IP: 219.146.91.*
    C/C++说到底也不过是爬在机器语言大山之上的土鳖.
    -------------------------------------------
    突然想起微程序来,那是学计算机组成原理的时候,汇编最终是由翻译成一段微程序来执行的,而硬件执行的是微程序。
    做底层C/C++终究是最好的。
    #ToolBuilder 发表于2007-01-23 13:38:42  IP: 222.212.69.*
    争论这些都好没意思,从宏观来看,没有任何东西是永恒地,地球也是如此,我们只要在他存在的时候发挥他最大的潜能就够了,不是吗?每个人都要死,但活着的时候能对得起自己就OK!
    至少从现在看,操作系统,驱动程序都还是C写的,所以说C死了的人永远不会是金字塔的顶尖人物!

    #luckysym 发表于2007-01-24 09:07:33  IP: 60.176.177.*
    任何事情的发生都是有条件的,包括C语言的死。

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

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

    尽管C语言在新兴的软件领域并不擅长,但是C语言诞生时就已经存在的那类软件如系统软件,到目前C语言仍旧时这类软件开发的绝对主力。只要这类软件不消亡,C语言就不会死。
    发表评论  


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