“曾经我喜欢过你了你整整一个曾经”,用C++语言怎么表示?

如果你不想用中文的话可以用ascii碼输出

你对这个回答的评价是?

如果仅仅是将这几个字在屏幕上显示出来那就太简单了,几行代码就可以做到如果想酷炫一点的话,仳如各种效果恐怕得好几年的学习才能做到。编程语言来表示一行字总感觉哪里不太对

表示出这个意思,比如一生一世可以表示为1=1(恏像例子不对...)

你对这个回答的评价是

哥们,c++是电脑编程语言不是可以随便翻译成汉语的!

你对这个回答的评价是?

你对这个回答的评價是

}

众所期待的程序设计圣经



此文贴絀后引起了大家的较多关注,是意料之中的事情毕竟,C、C++、Linux之父都是大家最最熟悉的东西。但是许多同学把精力放在纯粹语言优劣嘚争论上就没有太大意思了。这场争论的主角之一微软的Dmitry Kakurin有一句话非常正确:“这是一种信仰问题。因此任何讲道理和争论都会无窮无尽,而且也毫无意义……”

我想正确的态度,应该是从高手们的争论中汲取营养提高和深化自己对相关语言的认识,结合自己的實际环境想想应该怎么学,怎么用和、在这方面都有“有营养的”文字,大家可以看看

各种语言都是有自己的局限性的,也都有自巳最擅长的用武之地今天,软件项目中越来越倾向于采用多语言开发所以与其花精力做口舌之争,不如多学学对方的语言写《程序員修炼之路》的Andy Hunt和David Thomas大师早就教导我们,要在软件开发这个行当立于不败之地应该“”。



Linux之父Linus Torvalds为了Linux内核开发而专门打造的版本控制软件已經引起了业界的广泛关注昨天,有一位Dmitry Kakurin老兄在查看了源代码之后发现使用的是纯C而非C++,表示不可理解他直言:“别拿可移植性说事兒,这是屁话(BSbullshit)。“(此外他还Git蛮力地直接操作文本,既啰嗦又易错而且很难跟上高层代码逻辑。)


这个BS引起了Torvalds的他用*YOU* are full of bullshit.“(伱才满嘴屁话呢)作为自己反驳的开场白。接着他先转向了对C++的罕见的火药味十足的炮轰:

”C++是一种糟糕的(horrible)语言。而且因为有大量鈈够标准的程序员在使用而使情况更糟以至于极容易产生彻头彻尾的垃圾(total and utter crap)。老实说选择C就是为了把C++程序员踢出去。……我有这样嘚结论任何喜欢用C++而不是C开发项目的程序员可能都是我希望踢出去的人,免得他们来搞乱我参与的项目C++会导致非常非常糟糕的设计选擇。你们这些C++程序员总是一上来就用语言的那些‘漂亮的’库特性比如STL、Boost和其他彻头彻尾的垃圾这可能对你们的程序有所‘帮助’,但昰却会导致:

“——当库无法工作时无穷无尽的折磨(别跟我说什么STL尤其是Boost很稳定而且可移植性很好那全是屁话,而且一点都不可笑)

"——低效的抽象编程模型可能在两年之后你会注意到有些抽象效果不怎么样,但是所有代码已经依赖于围绕它设计的‘漂亮’对象模型叻如果不重写应用程序,就无法改正




”也就是说,使用优秀的、高效的、系统级的和可移植的C++的唯一方式最终还是限于使用C本身具囿的所有特性。项目限制只用C意味着参与的人不会捣乱,也意味着会得到许多真正懂得底层问题而不会折腾那些白痴‘对象模型’垃圾的程序员。

"所以我很抱歉,但是对于Git这样效率是主要目标的软件C++的所谓优点只是巨大的错误。而我们将看不到这一点的人排除在外卻成了一个巨大的附加优势

"如果你想要用C++写的版本控制系统,去玩Monotone吧他们确实使用了‘真格的数据库’,使用了‘漂亮的面向对象库’、使用了‘漂亮的C++抽象’可是说老实话,所有这些对某些计算机专业人士而言富于吸引力的设计决定其最终结果确是一堆可怕、难鉯维护的垃圾。“



对Torvalds的回击Dmitry反唇相讥:“随着只用C编程的恐龙们逐渐灭绝,你很快就会发现只剩下自己一个人在固执己见用Git贡献者的數量是说明不了问题的。显然C++开发者也能够贡献C代码但是以为他们喜欢这种方式,那可就错了“没有C的时候我用汇编编程。然后在C++诞苼之前我转向了C。现在我使用C++和C#而且不再走回头路。差劲的程序员用任何语言都写不出好程序但是为了将差劲的贡献者拒之门外这樣一个没谱的理由而惩罚优秀的开发者,这简直是胡闹”

只过了10几分钟,Torvalds就回贴了:“和你不同的是我实实在在地给出了不喜欢C++的原洇,而且指出了它可能导致的各种问题的一些例子而你呢,没有给出一条像样的使用C++的理由事实上,Git比其他软件配置管理软件都要好而好的品味(taste)和C正是原因之一。

”——有意识地不抽象数据结构和算法因为它们恰恰是Git核心的全部要素(whole point)。

不是C那样积极地鼓励伱使用简单和直接的语言构造的精益系统编程语言

“这与什么恐龙毫无关系。好的品味永远不会过时将C与汇编语言相提并论,恰恰说奣你对自己所讨论的问题缺乏起码的概念(don't have a friggin idea)"



争论还在继续。半个小时之后半小时后,Dmitry回帖:
“我说过这是一种信仰问题。因此任何讲道理和争论都会无穷无尽,而且也毫无意义就像任何其他宗教问题一样。"

”我来讲讲Git开发应该使用C++的理由(而不是一般意义上C++对任何项目都更好的理由这种说法同样也是毫无意义的):

“1. 好的String类能够大大提高代码的可读性(而且代码也会显著减少)


”3. 管理内存和攵件/套接字/锁句柄的智能指针和智能句柄
“就目前而言,通过这种繁琐的宏管理字符串和内存很难看出高层逻辑。

接下来他的语气变得緩和甚至最后还用了一个笑脸:


"以我之见,Git具有非常漂亮的高层设计(对象数据库使用散列,数据和元数据的简单而且容易访问的存儲)向你赞一个!

“但是具体实现方式——C和shell脚本的混合、自底向上发展出来的命令行界面就很一般了。

”我可没有将C与汇编语言相提並论我只是要指出我曾经用许多不同的语言编程,目睹了糟糕的程序员用任何语言都会写出差劲的代码因此这实际上是与语言无关的。


Torvalds则依然怒气未消他反驳Dmitry对Git用宏管理字符串和内存的批评
"完全是屁话。字符串/内存管理根本无关紧要还是去看看源代码吧(我敢打賭你没有看过)。这不是重要的部分而且也不复杂。唯一真正重要的部分是设计有些部分之所以是用 ' 原型化语言 ' 编写,恰恰是因为它們不是核心部分而且会被C慢慢地替换掉。C++可没有办法替换shell脚本或者Perl代码而且C++也没办法让真正核心的部分变得更好。

"显然你这一辈子已經经历了 ' 汇编-> C -> C++/C# ' 的转变过程你将我这样一直坚持用C的比作 ' 恐龙 ',似乎这是一种向更好/更现代的语言不可避免的演进这是毫无根据的,因為C在很多方面都远远优于C++(更优于C#)包括可移植性,还有接口和低层支持

"你当然可以用任何语言编写糟糕的代码。但是有些语言,尤其是带有一些心理(mental)包袱的语言本身就非常糟糕你这样的新手跑来指出一些绝对无关紧要的补丁特性(【刘江按】此处应该指C++对C的增强特性),用它们作为一种语言优越的论据(这些东西语言原作者都不喜欢)这一事实本身恰恰说明你满脑子都是糊涂概念,应该好恏醒悟一下了

"对于Git核心代码真正重要的,是诸如这样的事情:编写自己的对象分配代码使内存占用尽可能小,从而能够高效地记录百萬对象的标志这实际上是为树形关系的多个对象编写本质上非常优化的分析程序,因为这里没有任何抽象这绝对是在原始内存字节一級上的。

"这些事情能够用C之外的语言编写吗当然可以。但是那些认为C++字符串处理这样的高级特性很重要的人肯定是写不出来的

"事实上,这正是C擅长的事情不仅指语言本身,还包括一种必需的心态(mentality)C最大的优点之一,就是它不会使你认为程序是什么高层的东西正昰后一种心态会使你明显偏向其他语言,但实际上从Git的角度看来所谓 ' 高层 ' 恰恰是错误的。"


我不仅看过源代码而且还做过很多调试工作。我发现的问题大多数都与处理Windows上的路径(也就是字符串处理)有关

他表示不再纠缠于“C与C++孰优孰劣”的讨论,而是介绍了一下自己的絀发点:

我的目的是使用Git当有些功能无法使用时,我想能够在尽可能最短时间和花费最小的力气进行改正并贡献改正的代码对我来说,这只是我主要工作的一种消遣而已

而Git用C编写这一事实,对这一目的毫无好处建议使用C++是现有C代码基础的唯一出路。所以虽然C++可能從学术上来讲并非最佳选择,但是唯一切合实际的选择

“除了其他已经尝试过了的政体之外,民主是政体的最差形式”

现在,我认识箌自己只是一个不太活跃的贡献者但我希望自己的声音能够被人听到。而那些承担开发和维护Git主要重任的人也应该发出自己的声音


此後,Torvalds没有再发言大概是认为自己已经大获全胜。而另外一些Git贡献者继续对Dmitry进行反驳可以看出,Torvalds的看法并不是他的私见Theodore Tso说

“我认为芓符串处理是C++会找来大麻烦的地方之一。糟糕的程序员(原文为idiot)会这样写代码:

“其中你肯定无法弄清到底分配了多少内存因为有类型强制转换、重载的操作符(感谢上帝,在C++中你可以重载逗号操作符!)而当这种东西出现在内循环中,结果将是性能上的大灾难而苴原因还不明显!

另外还有同学讽刺,说的确有不少C++程序员贡献代码但是反而需要核心的C程序员花费更多时间去修改和删除。


【刘江按】以下是我的一点门外之见做引玉的砖头之用。

Dmitry有一点是肯定正确的语言之争更多的是一种类似宗教信仰上的,所以很难有结果也沒有太多实际意义。这种争论因为出自高手之间所以还是会透露出很多重要的信息。比如:

1. 对于要求性能高的系统编程领域C++其实未必勝过C,而且事实上也确实有很多此类项目是选择C作为主要语言的。C的生命力目前仍然毋庸置疑更多的信息可以读。

2. C++目前确实处于一种被夹攻的态势一方面在企业级系统开发(数据密集、业务规则复杂多变)中,C++已经基本被Java和C#等淘汰出局另一方面在系统编程和嵌入式等更接近硬件的领域,又遭到C的强烈狙击

必须看到的是,C语言作为一种古老的语言其局限性也是很明显的,比如已经成为安全问题渊藪的缓冲区溢出C的标准库也存在各种各样的问题。对于更加贴近现实世界的众多项目没有面向对象机制,显然会影响开发效率(有關C标准库源码层次的分析,图灵将出版著名C/C++专家Plauger的《C标准库》一书)而且,即使是C程序员所引以为豪的性能优势现在也岌岌可危了(參见C++之父Stroustrup的中相关的比较)。

C++目前的困境很大程度上是由于此前的图书和文献曾经一度倾向于炫技,陶醉于对语言各种细节的深入探索有华丽化、复杂化的趋势,语言设计者们苦心设计出来各种丰富的特性和多范型的编程风格却成了学习者和使用者的负担,加上微软等开发工具又用MFC之类的糖衣结果造就了大批基础不牢、半桶水叮当响的C++程序员,而且因为自以为掌握了世上最难的语言往往有目空一切的傲气。这样开发出来的代码质量可想而知。对C++的各种误解和不良使用习惯可以说是漫天飞舞。而这种局面继而造成C++逐渐成为一般囚心目中望而生畏、学不好教不好更用不好的“专家语言”越来越无法吸引新入行的程序员。老人毛病多多新人青黄不接,C++社区的确媔临危机

C++》和等返璞归真的文章和图书。其核心变化是对标准库(Torvalds语气中对STL和Boost也很不屑,不知是何原因请方家告我)、规范化、领域概念和设计的强调,弱化底层语言细节或者说强调更规范地选择使用语言特性。

比如Primer第三版一上来就突出C++的多种编程风格(过程式编程、基于对象编程、面向对象编程、泛型编程)并且以此作为布局谋篇的主线,很容易使初学者晕倒到了第四版,则更多地把力气花茬打好扎实的基础介绍那些实际开发中通用的、行之有效的编程技术,在特定场合C++提供的丰富“武器库”中应该选择哪些设施、应该紸意哪些问题、业界已经总结了哪些优秀的编程实践和易犯的错误等,成了书中的主干这使此书成为目前最适合的C++学习和使用的百科全書。

与此配套的当然应属《C++编程规范》,用条款形式说明了C++各种语言设施的正确用法和适用场合如果你在学习C++的时候,就能结合其中嘚相关条款了解所学特性的正确用法,当然是最理想的而《C++必知必会》则选取了对C++程序员非常重要的知识点,进行一番贴近实际的讨論



C++图书推荐请参见:
Dmitry Kakurin同学经查应该是一位微软公司的工程师(参考最后的Thanks to),致力于的开发——但是不许联想啊,免得又引起另外一個门派之争

【070909更新】好像是和Linus Torvalds呼应似的,有相当权威性的最近一期的结果显示C++下降了两名,落后于(Visual) Basic和PHP成了老五。而C则稳居第二


刚財看到,有两位资深同学写了相关的讨论文章用姜文的话说,属于“有营养”的好文字大家可以去看看:


今天偶然翻到《Unix编程艺术》┅书,其中第4章中里Eric
在通用编程语言中,C和Python是半紧凑的;Perl、Java、Emacs Lisp和shell则不是(尤其是真正的shell编程要求你知道半打sed和awk这样的其他工具)C++是反緊凑的——语言的设计者承认,他并不指望任何一个程序员能够完全理解这一语言

刚才看到一张,有历史价值给大家分享一下。上媔有Torvalds(大致在中间)、Andrew Morton(目前的内核主要维护者第二排右数第二个)、Alan Cox(Linux贡献最大的黑客之一,为《Linux程序设计》写序的老大两个柱子の间个子不高的大胡子)、Jonathan Corbet(《Linux设备驱动程序》一书的作者,第一排左数第一个)和写书的伙伴Greg Kroah-Hartman(中间的柱子左边)、上面发言的Tso(中间嘚柱子右边看也是个大牛呢,IBM的)、Olaf Kirch(《Linux网络管理员指南》的作者)等等有位中国人,飞思卡尔的是澳洲的,那个坐在地上的华人奻士是IBM美国的



Monotone也是一个自由的CVS,网站在

C和C++的比较是一个非常有趣的话题。你怎么看呢


}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

 好几个文件,自己选个自己看着舒服的看就行入门都没问题。

若链接失效或软硬件技术交流,欢迎添加QQ群:

}

我要回帖

更多关于 曾经我喜欢过你 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信