9月份的时候写了一篇“Why C++”。后来我把文章发给Bjarne,问问他的意见。Bjarne友好的对文章作了详细的评点并发回给我,我问他能不能把他的评点版发到blog上,他说原先发给我的评点比较随意,答应给我单独写一篇友情评注,也就是下面这篇。阅读全文>
发表于 @ 2007年12月04日 15:50:00|评论(loading...)|编辑
首先非常感谢waterwalk的辛勤翻译:-) waterwalk把翻译回贴在原文的下面了,为了方便阅读我提取出来编辑以后重发一个帖子。这篇文章原本是想对最近C/C++争论系统的整理一下一些思考的,但由于一开始的时候用英文写了两段,后来就干脆都用英文了,造成很多人阅读的麻烦,在此抱歉。不过好在waterwalk翻译了整篇文章,于是单独贴在这里:-)阅读全文>
发表于 @ 2007年09月14日 16:52:00|评论(loading...)|编辑
使用C++的理由和不使用C++的理由;为什么人们不使用C++;如何以正确的态度使用C++;如何判断你是否应该使用C++;etc. 内有英文慎入!阅读全文>
发表于 @ 2007年09月11日 14:19:00|评论(loading...)|编辑
一门语言应该是“Make simple things simple, make complex things possible”的。当我们用语言来表达思想的时候,这门语言应该能够提供这样的能力:即让我们能够最直接地表达我们的意思,多一分则太多,少一分则太少,好比古人形容美女:增一分则太肥,减一分则太瘦。阅读全文>
发表于 @ 2007年09月10日 10:24:00|评论(loading...)|编辑
上次说到,这次要说的是auto。此auto非彼auto,大家知道C++中原本是有一个auto关键字的,此关键字的作用是声明具有automatic(自动)存储期的局部变量,但跟register关键字一样,它也是个被打入了冷宫的关键字,因为C++里面的(非静态)局部变量本身就是auto的,无需多用一个auto来声明。然而,阴差阳错的,auto在C++09中获得了新生。阅读全文>
发表于 @ 2007年09月07日 15:20:00|评论(loading...)|编辑
最近写了一篇关于C++0x Concepts的文章,意料之外地引起了一场小规模口水仗。回各位帖子的同时,回想这些年C++社群的大小争论,觉得有必要把一些长久以来在C++争论中出现的误解列举出来。哈雷将军的笑话想必大家都听过。一句话经口口相传,每个人都根据自己的主观意念加以润色,修补,歪曲… 到最后就面目全非。这里最关键的一环就是主观意识,在历史学里面有这么一句话,大致意思是历史其实只存在于人的意念之中;就算完全客观的事件,通过不同的人的嘴说出来,造成的心理效应也往往不一样,每个人都会加上那么一两个形容词,驾驭语言能力高的更是能够舌绽莲花,而语言本就有自身的力量,其中的遣词造句对读者构成的心理影响力便应运而生。甚至于同一句话,用不同的语气说出来,都会造成不同的效果。同一句话,站在不同的立场上看,也会根本不是同一个意思。比如“C++还算是门不错的语言”,站在C++拥护者的角度听是在怜悯加诋毁C++,而站在C++反对者的角度听却是抬举了C++。阅读全文>
发表于 @ 2007年08月08日 18:32:00|评论(loading...)|编辑
好吧好吧,我承认我跳票了,上次说这次要写variadic templates的。但g9老大写了一篇精彩的散记,让我觉得concept应该先写,因为这实在是个有意思的特性,比variadic templates有意思多了。阅读全文>
发表于 @ 2007年08月04日 14:26:00|评论(loading...)|编辑
This post is a survey of what generic programming really is and what it means阅读全文>
发表于 @ 2007年07月29日 19:03:00|评论(loading...)|编辑
在泛型编码中经常出现的一个问题是(这个问题在实际中出现的场景很多,我们留到文章末尾再提,目前我们将这个特定的问题先提取孤立出来考虑):如何将一组参数原封不动地转发给另一个函数...
阅读全文>
发表于 @ 2007年07月18日 20:50:00|评论(loading...)|编辑
右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一,这点从该特性的提案在C++ - State of the Evolution列表上高居榜首也可以看得出来。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲,不动一兵一卒便可以获得“免费的”效率提升…阅读全文>
发表于 @ 2007年07月10日 16:09:00|评论(loading...)|编辑
内存模型是C++09最重大的特性之一,之所以重大是因为多线程并发编程将成为下一个十年的主题之一,对此C++小胡子Herb Sutter早有精彩的论述。为什么在C++里面要想顺畅地进行多线程编程需要对标准进行修订(而不仅仅是通过现有的多线程库如POSIX、boost.Thread即可)呢?对此Hans Boehm在他的著名的超级晦涩难懂的paper——《Threads Cannot be Implemented as a Library》——里面其实已经详尽地阐述了原因,但是,一,尽管这篇paper被到处cite,newsgroup上面关于到底能不能用volatile来实现线程安全性这类问题还是争议不断。这方面就连C++牛魔王Andrei Alexandrescu都犯过错误,可见有多难缠。
阅读全文>
发表于 @ 2007年06月20日 21:29:00|评论(loading...)|编辑
Disclaimer: You should first (but not the least) understand the fundamentals of multithreading memory models to be able to read the following text. I personally recommend you start with the related C++0x memory model proposals if you're a C++ programmer, or the java memory model if you're a java programmer. That being said, the principles behind the proof apply to all kinds of the so-called data-race-free models.
If it happens that you’ve been slogging through all the glories proposals of C++阅读全文>
发表于 @ 2007年03月09日 17:22:00|评论(loading...)|编辑
这几天断断续续一直在看关于C++0x的并发内存模型的proposal,这堆proposal显然是所有0x proposals里面最困难的。看的时候问题不断,单单是对原始单线程内存模型的改进和序列点概念的精化就非常tricky。所以看的时候总结了一些模糊的地方,昨天给发到comp.lang.c++.moderated上面去了,Francis Glassborow给了一个回贴澄清了里面的一个问题,不过尚留下不少其它的。相信后面还会有热心人(james kanze, maybe:))回复的,呵呵。
贴在这里,欢迎有兴趣的朋友与我探讨:-)
[后记] 果然不出我所料,新闻组上的大牛人&大热心人James Kanze果然火速给出了最为详尽的回复,哈哈,我帖子里的绝大部分推测都是对的:) 有兴趣的朋友可以查看新闻组上的链接阅读全文>
发表于 @ 2006年09月26日 15:19:00|评论(loading...)|编辑
随着C++标准委员会案头的C++0x提案[1]的与日俱增,tr1[2]的尘埃落定,tr2[3]的浮出水面,C++0x的脚步声似乎是离我们越来越近了,近到我们似乎能够嗅到她的气息...阅读全文>
发表于 @ 2006年02月15日 21:24:00|评论(loading...)|编辑