[book] 问问看过《0 bug——C/C++商用工程之道》的朋友

110 views
Skip to first unread message

sagasw

unread,
Jan 2, 2010, 4:45:45 AM1/2/10
to pongba
想问问看过这本书的朋友,是好书还是一般?豆瓣上评分人不多。
 
看了作者的blog,没看出特别的门道,难道是我见高人交臂失之?

------------------------------------
C++, Lua, living in Dalian
http://sunxiunan.com/
http://twitter.com/sagasw
------------------------------------

wang feng

unread,
Jan 2, 2010, 5:50:32 AM1/2/10
to pon...@googlegroups.com
未读,不过看到作者很是发了一通广告
方才翻看了一下目录,发现里边即有匈牙利命名法,又有 linux 程序开发的内容,感到非常怪异。

P.S: 真的有 0 bug 的程序么?

sec zte

unread,
Jan 2, 2010, 7:10:50 AM1/2/10
to pon...@googlegroups.com
一个商用工程,不可能0bug吧。。

2010/1/2 wang feng <wanng...@gmail.com>

Fei Yan

unread,
Jan 2, 2010, 7:33:21 AM1/2/10
to pon...@googlegroups.com
查了一下这个作者,找到他在51CTO上的一些反馈,摘几个要点如下:

-----------------------------------
http://book.51cto.com/art/200912/168805.htm

0 bug,要我这个作者来说,首先是不可能。我本人做了这么久程序,做到最好的成绩是1个bug,3万行代码的一个程序。

不过,我之所以这么提,是认为作为商用程序员,在进行商用工程开发时,会面临很高的质量标准,企业发布的软件产品,从老板的本意上,是希望0 bug的,避免用户投诉,避免不必要的维护成本支出。因此,0 bug,首先我认为是商业程序员一个永恒的追求目标,我们可能做不到,但是我们会尽量去争取。从这个意义上说,我认为提出0 bug的提法,是正确的,起码应该给程序员一个追求自身境界的目标。

----------------------------------

从其他一些对错误细节的解释来看,他本人是MCSE,做的貌似是硬件相关的一些软件应用;不过从他的一些发言来看,这位老兄的态度至少是值得赞扬的,professional programmer有这个目标是没有问题的;此外他的风格看起来也算坦诚、实在:

-----------------------

虽然本书提供了大量工程库源代码,但这个工程库是我个人总结的,主要贴合我过去的开发目标,并不见得适合每个人。因此,我并没有提供直接的代码光盘和源代 码下载。这些代码在我看来,其实是写书的另外一种语言,是程序员写给程序员看的一种语言,是用来讲清楚问题的,而不是直接拿来就用的。授人以鱼,不如授人 以渔,我希望大家能学习的,是开发工程库的能力,而不是使用工程库的能力,因为我们C和C++程序员,毕竟不是脚本程序员,不能简简单单会用库,而必须会 写库

------------------------

最后加粗的地方是我个人所不认同的地方。或许这位老兄在他的大作里边就在reinvent the wheel了(个人感觉可能不太准);对初学者而言似乎会造成一种误导。以写库为导向的思路,在我看来很不可取。


总体来看,我觉得这是一本介绍给初级C、C++程序员看的书。

作者的态度在国内浮躁的圈子里边算是比较难能可贵了;对于有3年以上经验的老鸟们,感觉意义已经不大了。


========================================

这里还有一篇,是作者自己答读者问的帖子,也间接印证了他是个比较负责人的写手。内容怎么样,我以猜测的态度,谨慎的持中等评价,因为我也没看过。

http://student.csdn.net/space.php?uid=39028&do=blog&id=20450



2010/1/2 wang feng <wanng...@gmail.com>

chuang

unread,
Jan 2, 2010, 8:11:52 AM1/2/10
to pon...@googlegroups.com
先写一本书,然后转向培训行业,忽悠更多的年轻人入行,是程序员转行的另一条路子,嗯.


2010/1/2 Fei Yan <skyscr...@gmail.com>



--
好装B,求甚解.

豆瓣:http://www.douban.com/people/Lichuang/
blog:http://www.cppblog.com/converse/

Fei Yan

unread,
Jan 2, 2010, 8:33:09 AM1/2/10
to pon...@googlegroups.com
这个人已经是个培训老师了;好多学生亲切的称之为老师。。。。。。


我感觉起码作者自己认为他自己说的那一套都是真理,两外一篇博客里边,也不时提到他自己十几年的工作经验,还是做通信的。
通信业的业务流程的确繁杂,但因此否认一些公认的软件技能,是有点眼界不够宽阔

不过他把自己的经验share出来,出发点的确还是很难得得
但是话说回来,传播错误的知识比什么也不做的确更有危害;这个界限很多时候难以道明的


2010/1/2 chuang <lichua...@gmail.com>

张沈鹏

unread,
Jan 2, 2010, 12:24:28 PM1/2/10
to pon...@googlegroups.com
2010/1/2 Fei Yan <skyscr...@gmail.com>:

> 这个人已经是个培训老师了;好多学生亲切的称之为老师。。。。。。
>
>
> 我感觉起码作者自己认为他自己说的那一套都是真理,两外一篇博客里边,也不时提到他自己十几年的工作经验,还是做通信的。
> 通信业的业务流程的确繁杂,但因此否认一些公认的软件技能,是有点眼界不够宽阔
>
> 不过他把自己的经验share出来,出发点的确还是很难得得
> 但是话说回来,传播错误的知识比什么也不做的确更有危害;这个界限很多时候难以道明的

不同的开发领域,有着完全不同的生态环境。

往往在一个环境很实用的方法套路,换一个环境就显得笨拙愚蠢。

一个人在初学时难免受到或左或右观点的影响,将种种模式生搬硬套,走一些崎岖坎坷的弯路。

美玉终究需要打磨掉上面的顽石,只有实践才能出真知。

成人往往害怕少年被错误的东西误导,但往往忽略了无菌室中培养出来的只能是温室的花朵,经不起雨露风霜。

善于思考的人能给从混乱地现象总结出适用的新规律,

不善思考的人往往被陈旧的经验或别人的建议所左右。

好吧,以上纯属意识流的扯淡,其实我想说的只有一句:

有人传播错误的知识,并不可怕;可怕的是,没人愿意去思考知识是否正确 --- 看《银河英雄传说》有感。

--
卖空间 http://stdyun.com/vhost
写书 http://kanrs.com
豆瓣 http://www.douban.com/people/zuroc
博客 http://zsp.javaeye.com

sagasw

unread,
Jan 2, 2010, 8:17:30 PM1/2/10
to pon...@googlegroups.com
经济危机影响,现在买书也是非常斟酌才下手了。
最近感觉最为值得买的就是《软件随想录》,阮一峰的翻译相当流畅,比上一版的《祖尔谈软件》强的不是一倍两倍。

从他的博客上看不出什么技术底蕴来,很难想象书里面的内容突然就功力深厚,所以就不冒险尝试了。


------------------------------------
C++, Lua, living in Dalian
http://sunxiunan.com/
http://twitter.com/sagasw
------------------------------------


2010/1/3 张沈鹏 <zsp...@gmail.com>

Fei Yan

unread,
Jan 2, 2010, 8:36:26 PM1/2/10
to pon...@googlegroups.com
是的,独立思考、批判的精神比什么都重要;
关键的问题是没有很多的积淀和背景的情况下,很可能得出错误的批判从而否定正确的道路;

因此往往这种情况,老鸟的作用就很重要也很意义深远;
他的作用并不是面面俱到的去培养“无菌的温室花朵”,而是应该明确指出哪些是明显错误的;哪些是可能有很大风险的


回到那段引用的方向标式的话上,我认为这是很多人把C++初学者带入阴沟的最阴险的方式之一。
具体到小的业务开发环境中,我也一直在电信业(传统的、新兴的都有)做,

我也认为喜欢自己做一个小库并将之封装起来来故弄玄虚,并炫耀自己技能的方式,坏处是相当的明显:
     往往是在人为的增加沟通的藩篱,小公司可能就尤甚;
     往往是这个库的原作者走了,新来的看不懂(常有的事儿)就重造一个

这种文化心态是封闭的、防御性的,结果往往是看不见的杯具

2010/1/3 张沈鹏 <zsp...@gmail.com>

张沈鹏

unread,
Jan 3, 2010, 9:44:11 AM1/3/10
to pon...@googlegroups.com


2010/1/3 Fei Yan <skyscr...@gmail.com>:

> 是的,独立思考、批判的精神比什么都重要;
> 关键的问题是没有很多的积淀和背景的情况下,很可能得出错误的批判从而否定正确的道路;
>
> 因此往往这种情况,老鸟的作用就很重要也很意义深远;
> 他的作用并不是面面俱到的去培养“无菌的温室花朵”,而是应该明确指出哪些是明显错误的;哪些是可能有很大风险的

一个人看来,明显错误的东西,另一个人看来很可能是对的。

对错是与当时当地的环境有关的,不可以一概而论。

师傅领进门,修行在个人。

比如下面两个例子。

===========================================

Andrew:在你的站点上,你提到在Peoples Archive上最近制作了一系列视频,在其中你回顾了过去的生活。在第93段“给年轻人的建议”中,你提醒人们不应该只是简单地因为某件事时髦就去做它。有一点我们都心知肚明,软件开发比起其他学科,在产生时髦技术上有过之而无不及。你能举出两个当前正在流行的技术么?对于这些技术,也许开发者不应该简单地因为它们当前很流行,或者他们正在使用,就欣然接受它们。你是否愿意再举几个软件开发范围以外的例子呢?


Donald:这个问题非常矛盾。我通常都是建议年轻人要相信自己的判断,而不是其他人。我就是“其他人” 中的一员。大概每一位你要效仿的“伟大人物”的传记上都会记载,他或她曾经向当时的“传统智慧”发起过挑战。虽然如此,我并不想回避这个问题,尽管我也不想触动其他人敏感的神经——有一种软件方法学已经类似于某种宗教了。首先声明:没有任何人有任何理应该听信我这种计算机科学家/数学家对于软件开发的种种评论。我要说的是,几乎每一件我听说过的与术语“极限编程”相关的事情,看起来都绝对是错误的...除了一点例外。这个例外就是“团队工作”和“互相阅读源代码”的思想。这个想法非常关键,甚至可以弥补极限编程中其他匪夷所思的方面。那些令我很不安。

我还必须承认我对“可重用代码”的流行保有强烈的偏见。对我来说,“可重编辑的代码”要远远胜于一个无法触及的黑盒或工具集。就这个问题我还可以不断地说下去。如果你对可重用代码深信不疑,我可能丝毫无法动摇你,但是你也无法让我相信,可重用代码并不总是麻烦制造者。


===========================================

毛泽东说自己做了两件大事,一个是新民主主义革命,一个是文化大革命。新民主主义革命是毛泽东用群众路线思想指导共产党觉醒人民凝聚人民,用凝聚起来的人民群众创造力搞武装革命消灭剥削阶级的暴力工具建立无产阶级专政社会主义政权。这时候的敌人是明确的,所以更容易斗争。但是,毛泽东非常明白在内部会产生变质产生走资派,产生投降派。毛泽东在建国初期就开始预防无产阶级政权变质,多次搞整风运动防止变质。但是,毛泽东发现变质问题越来越严重,那些有功大官们像封建社会的功臣一样想当新的贵族官老爷,他们根本就不懂马克思主义,不懂社会主义,不懂群众路线思想。还不断的打击群众路线,搞精英做主的民主,就是所谓的党内民主。不实行群众路线脱离了群众的共产党是变质的共产党,是精英专制党。

什么是社会主义?什么是共产党?共产党不是先进代表领导无知老百姓,共产党的真理不是领导无产阶级,而是用群众路线觉醒人民凝聚人民,形成共产党凝聚起来的人民群众创造力。马克思主义毛泽东思想不是学者和领导在学术理论上论述的学术思想,而是觉醒人民。社会主义就是用群众路线实践马克思主义觉醒人民凝聚起来的人民群众创造力。不实行群众路线脱离了人民群众就不能领导人民,只能逼迫人民服从。那就是精英专制。

在社会主义建设中毛泽东发现了两个重要的问题非常难以解决,这两个重要问题是危害社会主义变质的重要问题。

第一个重要问题就是毛泽东发现那些取得无产阶级专政政权的无产阶级有功大官们开始严重变质了,毛泽东用各种运动都无法改变这种严重变质问题。这种变质就是共产党要变成用党内民主代替群众路线人民民主,把共产党变成精英专制阶级,共产党脱离群众的结果最终会变成走资派。毛泽东感觉到了巨大危险。毛泽东在现实中明白了另一个问题,就是人民群众还没有真正的觉醒,人民群众还没有理解人民民主对自己是最重要的权利。毛泽东看到大多数工人,尤其是农民还是极端怕官,而官还是喜欢搞官僚主义,喜欢脱离群众瞎指挥。尤其是有些官已经开始敌对人民群众了。文革开始的时候官僚不就是敌对人民群众打击学生运动吗?现实中我们看到多少次官僚敌对人民群众的行为了?毛泽东最早看明白了这个问题的危险性,毛泽东明白了社会主义人民民主最大罪强硬的阻力破坏力是那种顽固的传统的自私自利的社会性行为文化。

什么是社会性行为文化?就是那种人们做的文化,不是那种说的文化。学术理论文化只能说的更完美合理,但是,大多数人是说得容易做得极少,人们在做的时候往往会找某种学术文化中的某句对自己有利的话做理论根据,那就是用诡辩歪曲的理论为自己自私自利服务。在剥削压迫的社会中满嘴仁义礼智信就是完美的说的文化,是贵族表演的文化,是愚民的文化。做的时候只用对自己有利的某句话,这就是真实的自私的社会性文化。大多数人就是自私的,没有人人公平平等的互相监督斗私批私酒不能建立社会主义大公无私社会性行为文化。自私的文化必然会产生精英专制,必然会产生剥削压迫,必然会导致社会道德沦丧,必然会产生严重的泛滥成灾的腐败,必然会产生严重的泛滥成灾犯罪。

Shuo Chen

unread,
Jan 4, 2010, 10:42:04 PM1/4/10
to TopLanguage
我从 china-pub 买了,正在看,我觉得是好书,值得一看。
当然,要抱着淘金的心态,而不是找茬的心态,这样才对
自己有益处。

说一条建议吧,作者的某些观点与 C++ 经典著作(Bjarne, Scott, Herb 等人的书)
不同(每个人都有自己的想法,我也不尽信书),如果作者能标出这些不同并给出
自己的充分理由就更好了。

臧秀涛

unread,
Jan 5, 2010, 4:31:26 AM1/5/10
to pon...@googlegroups.com
同感。
看过不少经典著作,下意识的对这本书里的一些偏执的观点有些反感。

说来搞笑,看国人的书总是有一种找茬的心态,劣根了……


2010/1/5 Shuo Chen <gian...@gmail.com>

chuang

unread,
Jan 5, 2010, 4:40:02 AM1/5/10
to pon...@googlegroups.com
现在时间都有限,本身看一本书就是要有收益的,如果看书的时候还要"淘金",也就是里面可能对你有帮助的占少数,那么是不是有点儿不值?总体上来说,一本书如果作者用心写的话,还是有一些"金"可以"淘"的,那么这么看,是不是又太多需要去看的了?

我还是觉得,阅读经典,而不是多处"淘金",更管用也更有效率一些.

2010/1/5 臧秀涛 <supe...@gmail.com>

chuang

unread,
Jan 5, 2010, 4:42:42 AM1/5/10
to pon...@googlegroups.com
我买了不少的书,现在回头再看,值得保留下来的太少了,更多的书是仅有几个章节甚至于更少的内容对我是有用的,我觉得这样的书,去书店或者图书馆看看也就好了,毕竟买书要成本,现在居无定所搬家起来也麻烦.

2010/1/5 chuang <lichua...@gmail.com>

Shuo Chen

unread,
Jan 5, 2010, 4:47:00 AM1/5/10
to TopLanguage
经典都读完了,只好到处淘金了。

On Jan 5, 5:40 pm, chuang <lichuang1...@gmail.com> wrote:
> 现在时间都有限,本身看一本书就是要有收益的,如果看书的时候还要"淘金",也就是里面可能对你有帮助的占少数,那么是不是有点儿不值?总体上来说,一本书如果作者用心写的话,还是有一些"金"可以"淘"的,那么这么看,是不是又太多需要去看的了?
>
> 我还是觉得,阅读经典,而不是多处"淘金",更管用也更有效率一些.
>

> 2010/1/5 臧秀涛 <super...@gmail.com>
>
>
>
> > 同感。
> > 看过不少经典著作,下意识的对这本书里的一些偏执的观点有些反感。
>
> > 说来搞笑,看国人的书总是有一种找茬的心态,劣根了......
>
> > 2010/1/5 Shuo Chen <giantc...@gmail.com>

Fei Yan

unread,
Jan 5, 2010, 7:02:09 AM1/5/10
to pon...@googlegroups.com
我一般是先到图书馆去借,看了一遍之后还想看第二遍的书,才会考虑买下来
经典书看完了,就是大致浏览,不过一般在图书馆难以借到比较新的书

看技术书籍,我到图书馆一般的习惯性动作都是到外文分馆去淘;中文馆的基本都是看社科类
可能的确遗漏了很多写的不错的中文技术书。。。

2010/1/5 chuang <lichua...@gmail.com>

jun lin

unread,
Jan 5, 2010, 7:06:22 PM1/5/10
to pon...@googlegroups.com
经典要的是反复读。
或者教别人经典,来提高。

2010/1/5 Shuo Chen <gian...@gmail.com>

Shuo Chen

unread,
Jan 5, 2010, 7:57:23 PM1/5/10
to TopLanguage
怎么教?

On Jan 6, 8:06 am, jun lin <linjunhal...@gmail.com> wrote:
> 经典要的是反复读。
> 或者教别人经典,来提高。
>

> 2010/1/5 Shuo Chen <giantc...@gmail.com>

jun lin

unread,
Jan 5, 2010, 8:00:34 PM1/5/10
to pon...@googlegroups.com
言传身教。
比如你知道一个概念:CPU架构,
你可以在公司内部上一次课,来向大家介绍。
大家会学到东西,你在教学的时候也巩固了基础,
大家提问,你也知道了自己的不足之处。

2010/1/6 Shuo Chen <gian...@gmail.com>

Shuo Chen

unread,
Jan 5, 2010, 8:09:15 PM1/5/10
to TopLanguage
我们公司的人技术都比我好,不用我教。

On Jan 6, 9:00 am, jun lin <linjunhal...@gmail.com> wrote:
> 言传身教。
> 比如你知道一个概念:CPU架构,
> 你可以在公司内部上一次课,来向大家介绍。
> 大家会学到东西,你在教学的时候也巩固了基础,
> 大家提问,你也知道了自己的不足之处。
>

> 2010/1/6 Shuo Chen <giantc...@gmail.com>

jun lin

unread,
Jan 5, 2010, 8:26:57 PM1/5/10
to pon...@googlegroups.com
就算技术都比你好,也不可能面面俱到,你也可以介绍一些他们没有用过的库。。
或者自己录制视频发教程到youku上面。

2010/1/6 Shuo Chen <gian...@gmail.com>

jun lin

unread,
Jan 5, 2010, 8:27:41 PM1/5/10
to pon...@googlegroups.com
或者你可以开会做学习总结,请同事来挑刺。

2010/1/6 jun lin <linjun...@gmail.com>

jun lin

unread,
Jan 5, 2010, 8:27:58 PM1/5/10
to pon...@googlegroups.com
再不然写博客也可以。

2010/1/6 jun lin <linjun...@gmail.com>

Shuo Chen

unread,
Jan 5, 2010, 8:58:32 PM1/5/10
to TopLanguage
在公司能用什么库不能用什么库不是由底层开发人员决定的,而是由公司技术委员会审核决定。
我们公司绝对不允许开发人员自己去网上随便下载一个库用到项目里,这会有法律方面的风险。
所以不太有可能我会用到别人没有用到的技术或库,要用就大家一起用,大家都弄懂,不然就
都别用。最怕一个人用了别人都不熟悉的库,造成代码交流困难。

大家时间都很宝贵,工作很忙,开一次会成本太高(20个人1小时,单时间成本至少1000元),
很难请得动人。

On Jan 6, 9:27 am, jun lin <linjunhal...@gmail.com> wrote:
> 或者你可以开会做学习总结,请同事来挑刺。
>

> 2010/1/6 jun lin <linjunhal...@gmail.com>
>
> > 就算技术都比你好,也不可能面面俱到,你也可以介绍一些他们没有用过的库。。
> > 或者自己录制视频发教程到youku上面。
>
> > 2010/1/6 Shuo Chen <giantc...@gmail.com>

chuang

unread,
Jan 5, 2010, 9:05:31 PM1/5/10
to pon...@googlegroups.com
这个好,赞一个,敢问是哪个公司么?

2010/1/6 Shuo Chen <gian...@gmail.com>

Shuo Chen

unread,
Jan 5, 2010, 9:13:33 PM1/5/10
to TopLanguage
不方便说,反正在上海。

On Jan 6, 10:05 am, chuang <lichuang1...@gmail.com> wrote:
> 这个好,赞一个,敢问是哪个公司么?
>
> 2010/1/6 Shuo Chen <giantc...@gmail.com>

shawn wang

unread,
Jan 5, 2010, 9:13:58 PM1/5/10
to pon...@googlegroups.com
估计是在国外的外国公司,要知道微软中国都在网上找随便抄。抄plurk的那个...

2010/1/6 chuang <lichua...@gmail.com>

Lei Zhao

unread,
Jan 5, 2010, 9:14:17 PM1/5/10
to pon...@googlegroups.com
他是代码大全的译者

2010/1/5 chuang <lichua...@gmail.com>

chuang

unread,
Jan 5, 2010, 9:17:04 PM1/5/10
to pon...@googlegroups.com
呵呵,我知道的,传说中的陈硕嘛.
我想应该是一个已经上了轨道的公司了.
这种选库的做法确实更严谨一些,对公司而言规避了可能的法律风险,还有也不会给项目组的成员造成接手别人使用外面的库带来的时间成本.

2010/1/6 Lei Zhao <jaw...@gmail.com>

jun lin

unread,
Jan 5, 2010, 9:25:58 PM1/5/10
to pon...@googlegroups.com
只是介绍,非采用,请不要误解我的意思。这里面的库,也可以是新技术之类。
开会成本是高,不过你们内部应该有定期的交流会吧?
任何专业人员之间都是需要交流的。在交流会上可以大致介绍下。
如果公司同仁都是牛,忙得飘上天的话,
也可以业余时间培训外面的新人。。对基础也是沉淀。
现在越来越感觉,学习是围着基础转,基础要定期牟牢。

2010/1/6 Shuo Chen <gian...@gmail.com>

jun lin

unread,
Jan 5, 2010, 9:29:01 PM1/5/10
to pon...@googlegroups.com
还有就是,大多数时候看1本书10遍,顶看100本书1遍。
光看书比不上记笔记,记笔记比不上给别人介绍。翻译可以说是介绍的过程。

2010/1/6 jun lin <linjun...@gmail.com>

Shuo Chen

unread,
Jan 5, 2010, 10:02:45 PM1/5/10
to TopLanguage
我很好奇你哪本书看了10遍?

On Jan 6, 10:29 am, jun lin <linjunhal...@gmail.com> wrote:
> 还有就是,大多数时候看1本书10遍,顶看100本书1遍。
> 光看书比不上记笔记,记笔记比不上给别人介绍。翻译可以说是介绍的过程。
>

> 2010/1/6 jun lin <linjunhal...@gmail.com>


>
> > 只是介绍,非采用,请不要误解我的意思。这里面的库,也可以是新技术之类。
> > 开会成本是高,不过你们内部应该有定期的交流会吧?
> > 任何专业人员之间都是需要交流的。在交流会上可以大致介绍下。
> > 如果公司同仁都是牛,忙得飘上天的话,
> > 也可以业余时间培训外面的新人。。对基础也是沉淀。
> > 现在越来越感觉,学习是围着基础转,基础要定期牟牢。
>

> > 2010/1/6 Shuo Chen <giantc...@gmail.com>

Shuo Chen

unread,
Jan 5, 2010, 10:06:06 PM1/5/10
to TopLanguage
要是有钱挣的话,我倒是很乐意培训新人。

On Jan 6, 10:25 am, jun lin <linjunhal...@gmail.com> wrote:
> 只是介绍,非采用,请不要误解我的意思。这里面的库,也可以是新技术之类。
> 开会成本是高,不过你们内部应该有定期的交流会吧?
> 任何专业人员之间都是需要交流的。在交流会上可以大致介绍下。
> 如果公司同仁都是牛,忙得飘上天的话,
> 也可以业余时间培训外面的新人。。对基础也是沉淀。
> 现在越来越感觉,学习是围着基础转,基础要定期牟牢。
>

> 2010/1/6 Shuo Chen <giantc...@gmail.com>

Tinyfool

unread,
Jan 5, 2010, 10:06:20 PM1/5/10
to pon...@googlegroups.com
青铜时代,看了7遍多,没有看得更多遍数的书了

2010/1/6 Shuo Chen <gian...@gmail.com>



--
Tinyfool的开发日记 http://www.tinydust.net/dev/
代码中国网 http://www.codechina.org
myTwitter: http://twitter.com/tinyfool

Lei Zhao

unread,
Jan 5, 2010, 10:07:57 PM1/5/10
to pon...@googlegroups.com
1、大道理、空话,看起来很美,但是适可而止吧,多解决点具体问题更有用
2、有话要说,请在一个帖子内说完,不要分多贴,没想好可以先不发,整理好再说
3、不要试图把你的观点强加给别人,表达清楚即可,接不接受是别人的事情

2010/1/5 jun lin <linjun...@gmail.com>

张沈鹏

unread,
Jan 5, 2010, 10:10:44 PM1/5/10
to pon...@googlegroups.com
2010/1/6 Shuo Chen <gian...@gmail.com>:
> 要是有钱挣的话,我倒是很乐意培训新人。

一般期望是多少钱呢
我有个朋友想搞搞培训

--
卖空间 http://stdyun.com/vhost
写书 http://kanrs.com
豆瓣 http://www.douban.com/people/zuroc
博客 http://zsp.javaeye.com

Changsheng Jiang

unread,
Jan 5, 2010, 10:37:40 PM1/5/10
to pon...@googlegroups.com
同问, 我也有个朋友想搞搞培训.

                                                     Changsheng Jiang


2010/1/6 张沈鹏 <zsp...@gmail.com>

jun lin

unread,
Jan 5, 2010, 11:18:44 PM1/5/10
to pon...@googlegroups.com
好吧,被打脸了。不继续说了。
确定看过10遍的文章,现在只记得有中庸。。

2010/1/6 Lei Zhao <jaw...@gmail.com>

Shuo Chen

unread,
Jan 6, 2010, 1:32:47 PM1/6/10
to TopLanguage
大致读了一遍,说几点体会。

这本书前半部分主要讲编程风格,后半部分介绍了作者自己多年积累的一些程序库。

编程风格见仁见智,我喜欢作者只用 for (int i = 0; i < n; ++i) 循环(《程序设计实践》
也是这么提倡的),但不喜欢他使用 goto 和宏。

这本书把代码用无衬线非等宽字体(大概是 Arial 之类)印在灰色底纹上,读起来很
费眼。我只认真读了第6章《锁》的代码,因为我对多线程编程比较熟悉。后面几章
的内存池和队列等没有细看,只大致浏览了一下。通读整本书的代码,有几点我很喜
欢,第一是没有用异常,第二是没有用继承(也就没有虚函数、设计模式这些东西),
第三是只出现过一个类模板,代码见
http://blog.csdn.net/tonyxiaohome/archive/2010/01/03/5124521.aspx

也有几点我不喜欢,整本书的代码基本上都是披着 C++ 外衣(马甲)的 C 代码,作
者多次先用C语言实现某个功能,再用C++简单封装一下。整体代码风格有90年代中
期用 Borland C++ 开发的C/C++程序的感觉,几乎没有见到 C++ 标准库的使用,只
使用了少量C的标准库(strcpy/memcpy/vsnprintf 之类)。C++语言的使用基本停留
在十年前的水准,与当前C++社区推崇的风格(我不是指模板元编程那一套,而是指
RAII)相去较远,连最基本的成员初始化列表和const修饰符都很少用到。这样的代码
风格,在我们组肯定会被毙掉的。

具体说说第6章《锁》。作者自己实现了一个读写锁,并命名为"单写多读锁"。说实话
我很佩服作者的勇气。另外我很好奇----除了作者本人和他的团队,谁敢把这段代码
用到产品中。如果这段代码是正确的,那么它的效率是否比系统提供的读写锁更好?
如果它的效率比系统的读写锁更好,如何证明它是正确的,会不会遗漏了什么边界条
件或race condition没有考虑?这些是我的疑虑。

我的体会是,搞多线程编程如履薄冰,千万别自己发明东西,那将几乎肯定是错的。
不说别的,单是一个 Singleton 模式的线程安全实现就能难倒很多人。一度人们认为
Double checked locking 是王道,兼顾了效率与正确性。后来有神牛指出由于乱序执
行的影响,DCL 是靠不住的。Java 开发者还算幸运,可以借助内部静态类的装载来
实现。C++就比较惨,要么全锁,要么eager initialize。然后 Java 5 修订了内存模型,
并增强了 volatile 的语义,这下 DCL (with volatile) 又是安全的了。然而 C++ 的内存
模型还没有修订,volatile 目前还不能保证 DCL 的正确性。(只在 VS2005+ 上有效)

举这个例子,是想说明编写线程安全的代码(遑论实现线程同步原语)是件多么困
难的事情。开发者需要深入理解多CPU下的内存模型、乱序、cache 一致性与memory
barrier、原子操作、各种常见陷阱等等,才不会重蹈覆辙。作为一般开发人员----或
者如作者所说,商业程序员----最好使用成熟的库(据我所知,pthreads 和
Windows Vista/7 直接提供了读写锁API),而不要试图自己发明轮子,特别是这种
极不容易造好的轮子。多线程代码常会在不经意中让你受伤。

这本书第6章用互斥器实现了线程安全的CMInt 和CMBool这两个类。我认为这完全
没必要,因为用原子操作(_InterlockedIncrement等)就能达到同样的效果,而且效率
只会更高。

作者在第6.1.4.6节提到在析构函数里额外做一次加锁和解锁,防止程序在多线程下
崩溃,这更是错误的,因为对象的生与死不能由该对象自身拥有的互斥器来保护。
我在2009年12月的上海C++技术大会上做的主题演讲的标题正好是《当析构函数
遇到多线程》,将来有空把演讲稿整理成文放到博客上。

这本书或许能从一个侧面反映国内C++开发的大体水平。


On Jan 5, 11:42 am, Shuo Chen <giantc...@gmail.com> wrote:
> 我从 china-pub 买了,正在看,我觉得是好书,值得一看。
> 当然,要抱着淘金的心态,而不是找茬的心态,这样才对
> 自己有益处。
>
> 说一条建议吧,作者的某些观点与 C++ 经典著作(Bjarne, Scott, Herb 等人的书)
> 不同(每个人都有自己的想法,我也不尽信书),如果作者能标出这些不同并给出
> 自己的充分理由就更好了。
>

> On Jan 2, 5:45 pm, sagasw <sag...@gmail.com> wrote:
>
> > 想问问看过这本书的朋友,是好书还是一般?豆瓣上评分人不多。
>
> > 看了作者的blog,没看出特别的门道,难道是我见高人交臂失之?http://blog.csdn.net/tonyxiaohome
>
> > ------------------------------------
> > C++, Lua, living in Dalianhttp://sunxiunan.com/http://twitter.com/sagasw
> > ------------------------------------

Tinyfool

unread,
Jan 6, 2010, 1:35:03 PM1/6/10
to pon...@googlegroups.com
恩,按照你这个评论,那么0bug,或者1bug的梦想,作者肯定是达不到了,呵呵

2010/1/7 Shuo Chen <gian...@gmail.com>

Shuo Chen

unread,
Jan 6, 2010, 1:48:11 PM1/6/10
to TopLanguage
我可没这么说。C++照他这么用,固然不符合我的审美和我们团队的性能要求,
但也不妨碍做出质量性能尚可、能卖出去的软件。特别是最后几章谈到抓内存
泄漏和sockets泄漏,虽说办法土,倒也是挺奏效的。

按照作者自己的说法

"我想,本书强调的0 bug标准,可能比大家通常认为的0 bug会高一点,简单
说来就是,最终产品卖到钱了,才能算作0 bug。"

这样算来,称为 0 bug 也并无不妥。

On Jan 7, 2:35 am, Tinyfool <tinyf...@gmail.com> wrote:
> 恩,按照你这个评论,那么0bug,或者1bug的梦想,作者肯定是达不到了,呵呵
>

> 2010/1/7 Shuo Chen <giantc...@gmail.com>

chuang

unread,
Jan 6, 2010, 7:47:27 PM1/6/10
to pon...@googlegroups.com
看了你的批评,我反而想看这本书了,不过,还是坚持我的这类书去书店图书馆看的做法,哈哈.

2010/1/7 Shuo Chen <gian...@gmail.com>

殷远超

unread,
Jan 6, 2010, 8:00:14 PM1/6/10
to pon...@googlegroups.com
最终产品卖到钱了,才能算作0 bug,这句话已经说明了,作者对0 bug标准定得很低,“大家”心目中的标准更低


Fei Yan

unread,
Jan 6, 2010, 8:20:45 PM1/6/10
to pon...@googlegroups.com
comments inline......

2010/1/7 Shuo Chen <gian...@gmail.com>

大致读了一遍,说几点体会。

这本书前半部分主要讲编程风格,后半部分介绍了作者自己多年积累的一些程序库。

编程风格见仁见智,我喜欢作者只用 for (int i = 0; i < n; ++i) 循环(《程序设计实践》
也是这么提倡的),但不喜欢他使用 goto 和宏。

这本书把代码用无衬线非等宽字体(大概是 Arial 之类)印在灰色底纹上,读起来很
费眼。我只认真读了第6章《锁》的代码,因为我对多线程编程比较熟悉。后面几章
的内存池和队列等没有细看,只大致浏览了一下。通读整本书的代码,有几点我很喜
欢,第一是没有用异常,第二是没有用继承(也就没有虚函数、设计模式这些东西),
第三是只出现过一个类模板,代码见
http://blog.csdn.net/tonyxiaohome/archive/2010/01/03/5124521.aspx

也有几点我不喜欢,整本书的代码基本上都是披着 C++ 外衣(马甲)的 C 代码,作
者多次先用C语言实现某个功能,再用C++简单封装一下。整体代码风格有90年代中
期用 Borland C++ 开发的C/C++程序的感觉,几乎没有见到 C++ 标准库的使用,只
使用了少量C的标准库(strcpy/memcpy/vsnprintf 之类)。C++语言的使用基本停留
在十年前的水准,与当前C++社区推崇的风格(我不是指模板元编程那一套,而是指
RAII)相去较远,连最基本的成员初始化列表和const修饰符都很少用到。这样的代码
风格,在我们组肯定会被毙掉的。


这个大概是某些行业国内企业的大现状;当然const本身会带来很多麻烦,这点我持有异议,少用也没什么大不了。
国内c++程序员对STL的藐视和reinvent也是个很严重的问题;好点的会自己找opensource的C版本,差点的就自己reinvent the wheel.

 

和我的猜测有几分相像。可惜我最近很忙,没空查一下图书馆有没有这本书。。。
建议老兄将你的share反馈给作者,看看他的看法,但语气委婉一些更好


 

Chen Bocheng

unread,
Jan 6, 2010, 8:59:29 PM1/6/10
to pon...@googlegroups.com
这个对毛泽东思想的理解,非常深入,被震撼了!Orz

2010/1/3 张沈鹏 <zsp...@gmail.com>

===========================================

毛泽东说自己做了两件大事,一个是新民主主义革命,一个是文化大革命。新民主主义革命是毛泽东用群众路线思想指导共产党觉醒人民凝聚人民,用凝聚起来的人民群众创造力搞武装革命消灭剥削阶级的暴力工具建立无产阶级专政社会主义政权。这时候的敌人是明确的,所以更容易斗争。但是,毛泽东非常明白在内部会产生变质产生走资派,产生投降派。毛泽东在建国初期就开始预防无产阶级政权变质,多次搞整风运动防止变质。但是,毛泽东发现变质问题越来越严重,那些有功大官们像封建社会的功臣一样想当新的贵族官老爷,他们根本就不懂马克思主义,不懂社会主义,不懂群众路线思想。还不断的打击群众路线,搞精英做主的民主,就是所谓的党内民主。不实行群众路线脱离了群众的共产党是变质的共产党,是精英专制党。

什么是社会主义?什么是共产党?共产党不是先进代表领导无知老百姓,共产党的真理不是领导无产阶级,而是用群众路线觉醒人民凝聚人民,形成共产党凝聚起来的人民群众创造力。马克思主义毛泽东思想不是学者和领导在学术理论上论述的学术思想,而是觉醒人民。社会主义就是用群众路线实践马克思主义觉醒人民凝聚起来的人民群众创造力。不实行群众路线脱离了人民群众就不能领导人民,只能逼迫人民服从。那就是精英专制。

在社会主义建设中毛泽东发现了两个重要的问题非常难以解决,这两个重要问题是危害社会主义变质的重要问题。

第一个重要问题就是毛泽东发现那些取得无产阶级专政政权的无产阶级有功大官们开始严重变质了,毛泽东用各种运动都无法改变这种严重变质问题。这种变质就是共产党要变成用党内民主代替群众路线人民民主,把共产党变成精英专制阶级,共产党脱离群众的结果最终会变成走资派。毛泽东感觉到了巨大危险。毛泽东在现实中明白了另一个问题,就是人民群众还没有真正的觉醒,人民群众还没有理解人民民主对自己是最重要的权利。毛泽东看到大多数工人,尤其是农民还是极端怕官,而官还是喜欢搞官僚主义,喜欢脱离群众瞎指挥。尤其是有些官已经开始敌对人民群众了。文革开始的时候官僚不就是敌对人民群众打击学生运动吗?现实中我们看到多少次官僚敌对人民群众的行为了?毛泽东最早看明白了这个问题的危险性,毛泽东明白了社会主义人民民主最大罪强硬的阻力破坏力是那种顽固的传统的自私自利的社会性行为文化。

什么是社会性行为文化?就是那种人们做的文化,不是那种说的文化。学术理论文化只能说的更完美合理,但是,大多数人是说得容易做得极少,人们在做的时候往往会找某种学术文化中的某句对自己有利的话做理论根据,那就是用诡辩歪曲的理论为自己自私自利服务。在剥削压迫的社会中满嘴仁义礼智信就是完美的说的文化,是贵族表演的文化,是愚民的文化。做的时候只用对自己有利的某句话,这就是真实的自私的社会性文化。大多数人就是自私的,没有人人公平平等的互相监督斗私批私酒不能建立社会主义大公无私社会性行为文化。自私的文化必然会产生精英专制,必然会产生剥削压迫,必然会导致社会道德沦丧,必然会产生严重的泛滥成灾的腐败,必然会产生严重的泛滥成灾犯罪。

Shuo Chen

unread,
Jan 6, 2010, 9:31:54 PM1/6/10
to TopLanguage
> 建议老兄将你的share反馈给作者,看看他的看法,但语气委婉一些更好

我稍微修改了一下,发到豆瓣上了: http://www.douban.com/review/2919204/

On Jan 7, 9:20 am, Fei Yan <skyscribe...@gmail.com> wrote:
> comments inline......
>

YiBin Liu

unread,
Jan 6, 2010, 9:55:02 PM1/6/10
to pon...@googlegroups.com
我已经转给作者了,作者有回复,大家不烦看一下。
不管怎样,这书的作者在写完书后跟读者的交流还是比较多的。





肖舸

 发送至 
显示详细信息 10:18 (34 分钟前)

嗯,也对也不对。

 

我一开始就有感觉,我的风格,可能见仁见智,喜欢的,真喜欢,不喜欢的,真不喜欢。

不过呢,我也有一个理由来宽解我自己,用我的风格,真正做到了接近0bug的地步,这是工程实测出来的数据,是实实在在的,并不是能伪造出来的。

近年来我写模块,基本上写一个成一个,白盒测试结束,就是0bug

我想,我的方法有其价值。

 

目前国内很少有书能真正讲点实战经验,是因为实战经验,有时候如果非要用理论去套用,是套不上的。但,实用就有道理。

比如他批评我做程序,先用C实现一遍,再用C++封装,其实是有很深的含义的。

因为为了预防内存碎片,我强调所有内存块必须有管理的重用,自己定义了重用内存池,而内存池没有C++对象new的功能,即无法自动调用构造函数和析构函数,只能提供简单的二进制缓冲区的调用,因此,我被迫在底层,实用纯C模式,把数据与操作函数分离,以便尽量利用这个内存池特性。反过来,上层调用时,由于以C++方式方便,因此,二次再封装成C++,方便调用。

这个读者,起码没有做过服务器,不知道内存碎片的危害。

C++很多特性,如模板,继承,虚函数,是以大量的动态内存分配实现的,这势必造成大量的内存碎片,事实上,C++不是一个好的服务器开发语言。

 

仅举这一个例子吧。

你有兴趣,看书的时候,我建议先不忙批判,我的书,一直建议大家不要太关注代码,关注我中文文字讲的道理,因为实际工程中,有很多顾虑,每个奇怪的设计,其实都在躲某件事情。你如果能理解这一点,其实再看代码就不刺眼了。

 

单写多读锁威力极大,你如果用好了,可以大幅度提升你程序的性能。这个代码简单,敲起来也不难,你也不必看别人评价,自己测试一下就知道了。

其实,代码好不好用,人说了不算的,计算机说了算,你说是吧?

 

感谢你的关注和关心,有问题可以随时和我讨论。

 

人在江湖漂,怎能不挨刀,目前,好的书籍我没看见多少,不挨骂的作品,一本都没有,呵呵,你说是吧,要说挨骂,我比谭浩强老师挨的骂少多了。


2010/1/7 Shuo Chen <gian...@gmail.com>

juv...@gmail.com

unread,
Jan 6, 2010, 10:28:32 PM1/6/10
to TopLanguage
说到pthread,早先也有大牛说了:Threads Cannot Be Implemented As a Library(http://
www.stanford.edu/class/cs240/readings/p261-boehm.pdf).
不过再怎么也比一般人手写的好用了。

On Jan 7, 2:32 am, Shuo Chen <giantc...@gmail.com> wrote:
> 大致读了一遍,说几点体会。
>
> 这本书前半部分主要讲编程风格,后半部分介绍了作者自己多年积累的一些程序库。
>
> 编程风格见仁见智,我喜欢作者只用 for (int i = 0; i < n; ++i) 循环(《程序设计实践》
> 也是这么提倡的),但不喜欢他使用 goto 和宏。
>
> 这本书把代码用无衬线非等宽字体(大概是 Arial 之类)印在灰色底纹上,读起来很
> 费眼。我只认真读了第6章《锁》的代码,因为我对多线程编程比较熟悉。后面几章
> 的内存池和队列等没有细看,只大致浏览了一下。通读整本书的代码,有几点我很喜
> 欢,第一是没有用异常,第二是没有用继承(也就没有虚函数、设计模式这些东西),

> 第三是只出现过一个类模板,代码见http://blog.csdn.net/tonyxiaohome/archive/2010/01/03/5124521.aspx

Shuo Chen

unread,
Jan 7, 2010, 12:02:10 AM1/7/10
to TopLanguage
To all 想转载这篇评论的朋友: 请使用豆瓣上的版本,而不是这个论坛里的初稿。
豆瓣地址: http://www.douban.com/review/2919204/

On Jan 7, 10:55 am, YiBin Liu <plaliuyi...@gmail.com> wrote:
> 我已经转给作者了,作者有回复,大家不烦看一下。
> 不管怎样,这书的作者在写完书后跟读者的交流还是比较多的。
>

> *
> *
> *
> *


> 肖舸 发送至 我
> 显示详细信息 10:18 (34 分钟前)
>
> 嗯,也对也不对。
>
> 我一开始就有感觉,我的风格,可能见仁见智,喜欢的,真喜欢,不喜欢的,真不喜欢。
>
> 不过呢,我也有一个理由来宽解我自己,用我的风格,真正做到了接近0bug的地步,这是工程实测出来的数据,是实实在在的,并不是能伪造出来的。
>
> 近年来我写模块,基本上写一个成一个,白盒测试结束,就是0bug。
>
> 我想,我的方法有其价值。
>
> 目前国内很少有书能真正讲点实战经验,是因为实战经验,有时候如果非要用理论去套用,是套不上的。但,实用就有道理。
>
> 比如他批评我做程序,先用C实现一遍,再用C++封装,其实是有很深的含义的。
>
> 因为为了预防内存碎片,我强调所有内存块必须有管理的重用,自己定义了重用内存池,而内存池没有C++对象new
> 的功能,即无法自动调用构造函数和析构函数,只能提供简单的二进制缓冲区的调用,因此,我被迫在底层,实用纯C
> 模式,把数据与操作函数分离,以便尽量利用这个内存池特性。反过来,上层调用时,由于以C++方式方便,因此,二次再封装成C++,方便调用。
>
> 这个读者,起码没有做过服务器,不知道内存碎片的危害。
>
> C++很多特性,如模板,继承,虚函数,是以大量的动态内存分配实现的,这势必造成大量的内存碎片,事实上,C++不是一个好的服务器开发语言。
>
> 仅举这一个例子吧。
>
> 你有兴趣,看书的时候,我建议先不忙批判,我的书,一直建议大家不要太关注代码,关注我中文文字讲的道理,因为实际工程中,有很多顾虑,每个奇怪的设计,其实都在躲某件事情。你如果能理解这一点,其实再看代码就不刺眼了。
>
> 单写多读锁威力极大,你如果用好了,可以大幅度提升你程序的性能。这个代码简单,敲起来也不难,你也不必看别人评价,自己测试一下就知道了。
>
> 其实,代码好不好用,人说了不算的,计算机说了算,你说是吧?
>
> 感谢你的关注和关心,有问题可以随时和我讨论。
>
> 人在江湖漂,怎能不挨刀,目前,好的书籍我没看见多少,不挨骂的作品,一本都没有,呵呵,你说是吧,要说挨骂,我比谭浩强老师挨的骂少多了。
>

> 2010/1/7 Shuo Chen <giantc...@gmail.com>

up duan

unread,
Jan 7, 2010, 2:40:29 AM1/7/10
to pon...@googlegroups.com


2010/1/7 YiBin Liu <plali...@gmail.com>

我已经转给作者了,作者有回复,大家不烦看一下。
不管怎样,这书的作者在写完书后跟读者的交流还是比较多的。





肖舸

 发送至 
显示详细信息 10:18 (34 分钟前)

嗯,也对也不对。

 

我一开始就有感觉,我的风格,可能见仁见智,喜欢的,真喜欢,不喜欢的,真不喜欢。

不过呢,我也有一个理由来宽解我自己,用我的风格,真正做到了接近0bug的地步,这是工程实测出来的数据,是实实在在的,并不是能伪造出来的。

近年来我写模块,基本上写一个成一个,白盒测试结束,就是0bug

我想,我的方法有其价值。

 

目前国内很少有书能真正讲点实战经验,是因为实战经验,有时候如果非要用理论去套用,是套不上的。但,实用就有道理。

比如他批评我做程序,先用C实现一遍,再用C++封装,其实是有很深的含义的。

因为为了预防内存碎片,我强调所有内存块必须有管理的重用,自己定义了重用内存池,而内存池没有C++对象new的功能,即无法自动调用构造函数和析构函数,只能提供简单的二进制缓冲区的调用,因此,我被迫在底层,实用纯C模式,把数据与操作函数分离,以便尽量利用这个内存池特性。反过来,上层调用时,由于以C++方式方便,因此,二次再封装成C++,方便调用。

这个读者,起码没有做过服务器,不知道内存碎片的危害。

C++很多特性,如模板,继承,虚函数,是以大量的动态内存分配实现的,这势必造成大量的内存碎片,事实上,C++不是一个好的服务器开发语言。

 

模板,继承,虚函数,是以大量的动态内存分配实现的? 这也太不靠谱了吧。

Fei Yan

unread,
Jan 7, 2010, 6:42:11 AM1/7/10
to pon...@googlegroups.com
我也有同样的疑问。

最奇怪的是,模板究竟和dynamic storage有什么干系?


2010/1/7 up duan <fix...@gmail.com>

Walkley He

unread,
Jan 7, 2010, 8:19:59 AM1/7/10
to pon...@googlegroups.com
代码风格虽说见仁见智,但不同的风格往往有不同的适应范围。例如bit field用在结构体中可方便的代替位操作,有时候用在布尔型成员变量后面也可以节省那么一点点内存,但若把这种方法当作一种风格或者是编程习惯而逢布尔型成员必用bit field就没有必要了。这也是所谓的过早优化问题。

我没有看过这本书。作者说是为了避免内存碎片而对代码作了特殊的处理,不知这本书中是否有讲避免内存碎片的技术。如果C++有诸多累赘实在干不了这活,用纯C不也行么,为何一定要再套一层C++呢?

2010/1/7 YiBin Liu <plali...@gmail.com>

Shuo Chen

unread,
Jan 26, 2010, 6:27:45 AM1/26/10
to TopLanguage
一篇新的评论, http://www.douban.com/review/2949973/

xxmplus

unread,
Jan 26, 2010, 6:43:20 AM1/26/10
to pon...@googlegroups.com
看来作者已经有点不耐烦了,我好不容易写本书,怎么你们不好好学,都来骂我这里写错了那里写错了,都是我的仇人穿了马甲来害我的吧。。。

2010/1/26 Shuo Chen <gian...@gmail.com>:

--
Any complex technology which doesn’t come with documentation must be the best
available.

Kenny Yuan

unread,
Jan 26, 2010, 7:47:05 AM1/26/10
to pon...@googlegroups.com
看了,笑了,同时也傻了——真有这么不要脸的人啊???
照他这样搞咱们许多人都应该等身了

2010/1/26 xxmplus <xxm...@gmail.com>

Tinyfool

unread,
Jan 26, 2010, 7:48:57 AM1/26/10
to pon...@googlegroups.com
我躺着的话,等身有点难

2010/1/26 Kenny Yuan <yuank...@gmail.com>

sagasw

unread,
Jan 26, 2010, 8:06:58 AM1/26/10
to pon...@googlegroups.com
从这一点上说,肖舸作为作者说的实在有些过分了。
可以辩论道理,人身攻击就没意思了,
这书没买,幸哉!

------------------------------------
C++, Lua, living in Dalian
http://sunxiunan.com/
http://twitter.com/sagasw
------------------------------------


2010/1/26 Shuo Chen <gian...@gmail.com>

机械唯物主义

unread,
Jan 26, 2010, 8:11:04 AM1/26/10
to pon...@googlegroups.com
作者没有腔调。更没有肚皮。

2010/1/26 sagasw <sag...@gmail.com>:

chuang

unread,
Jan 26, 2010, 8:12:01 AM1/26/10
to pon...@googlegroups.com
在书店看过几章,没买,基本上也知道说些什么了.
书中的做法有些山寨,我第一次看到有人拿自己的ID之类的作为类名的一部分的.
另外,看这本书的时候我看见他实现的那些组件:内存池,log之类的就想到了C\C++程序员喜欢自己重新造轮子.

2010/1/26 sagasw <sag...@gmail.com>

chuang

unread,
Jan 26, 2010, 8:14:26 AM1/26/10
to pon...@googlegroups.com
基本上,按照我的理解,这个作者所谓的"0 bug"类似于"无论白猫黑猫只要抓到老鼠就是好猫"的论调,呵呵.

2010/1/26 chuang <lichua...@gmail.com>

Kenny Yuan

unread,
Jan 26, 2010, 8:31:10 AM1/26/10
to pon...@googlegroups.com
你是在暗示你的size超过了Nacho Vidal这个世界记录保持者么?嘿嘿……


2010/1/26 Tinyfool <tiny...@gmail.com>



--
Kenny Yuan
C++, UI, LISP, MMA, Psychology and Automobile.
BLOG: CS巴别塔(Computer Science Babel)
URL1: http://csbabel.wordpress.com/
URL2: http://blog.csdn.net/yuankaining/

Tinyfool

unread,
Jan 26, 2010, 8:34:24 AM1/26/10
to pon...@googlegroups.com
我说的是肚皮的尺寸…唉,施主你怎么又想歪了…

2010/1/26 Kenny Yuan <yuank...@gmail.com>

chuang

unread,
Jan 26, 2010, 9:47:24 AM1/26/10
to pon...@googlegroups.com
看了回复,只能说失望之极 出来混,没点肚量能接点板砖可不好

2010/1/26 Tinyfool <tiny...@gmail.com>

Tinyfool

unread,
Jan 26, 2010, 9:51:50 AM1/26/10
to pon...@googlegroups.com
态度可以算是极其恶劣了… 

2010/1/26 chuang <lichua...@gmail.com>
看了回复,只能说失望之极 出来混,没点肚量能接点板砖可不好


SpitFire

unread,
Jan 26, 2010, 10:07:51 AM1/26/10
to pon...@googlegroups.com
唉,杯具啊,他书里如果不包括c++知识点的话,茶几会小一些。。

2010/1/26 Tinyfool <tiny...@gmail.com>

态度可以算是极其恶劣了… 

2010/1/26 chuang <lichua...@gmail.com>
看了回复,只能说失望之极 出来混,没点肚量能接点板砖可不好





--
SpitFire

Devymex

unread,
Jan 26, 2010, 10:29:00 AM1/26/10
to pon...@googlegroups.com
我觉得真正没有Bug的程序只出现在20多年前的任天堂游戏机(小霸王)的游戏中。相当年那些用ASM甚至是机器码写程序的人,真不知道他们是怎么搞维护的。不得不对小日本心服口服。

2010/1/26 SpitFire <spit...@gmail.com>



--
我坚信共产党将走在我前面。
欢迎 Follow @devymex

Tinyfool

unread,
Jan 26, 2010, 10:30:45 AM1/26/10
to pon...@googlegroups.com
那个一样有bug,老鸟都知道…

2010/1/26 Devymex <dev...@gmail.com>

Devymex

unread,
Jan 26, 2010, 10:35:14 AM1/26/10
to pon...@googlegroups.com
我想按照代码行数和Bug数的比例来算的话,应该是非常低的。有些游戏堪称完美。

2010/1/26 Tinyfool <tiny...@gmail.com>

Kemi Sprite

unread,
Jan 26, 2010, 10:40:25 AM1/26/10
to pon...@googlegroups.com
那位都找到这个thread里面来了

2010/1/26 Tinyfool <tiny...@gmail.com>

Tinyfool

unread,
Jan 26, 2010, 10:42:36 AM1/26/10
to pon...@googlegroups.com
很强啊,管理工作我们没做好啊,唉

2010/1/26 Kemi Sprite <kemis...@gmail.com>

Devymex

unread,
Jan 26, 2010, 12:33:37 PM1/26/10
to pon...@googlegroups.com
我怎么怀疑肖某人被仇家盗号了?出技术书的人我也接触不少了,从没见过这样的。
严重怀疑那个ID的身份!

2010/1/26 Tinyfool <tiny...@gmail.com>

Tinyfool

unread,
Jan 26, 2010, 12:36:37 PM1/26/10
to pon...@googlegroups.com
仇家要是这么喜剧的话…,我倒是蛮喜欢的

2010/1/27 Devymex <dev...@gmail.com>

Devymex

unread,
Jan 26, 2010, 12:52:00 PM1/26/10
to pon...@googlegroups.com
@tinyfool,fol你了。我是@devymex

2010/1/27 Tinyfool <tiny...@gmail.com>

sagasw

unread,
Jan 26, 2010, 8:32:35 PM1/26/10
to pon...@googlegroups.com
今早发现推上有几位在推这个话题,没想到我还有新闻推手的潜质。哈哈


------------------------------------
C++, Lua, living in Dalian
http://sunxiunan.com/
http://twitter.com/sagasw
------------------------------------


2010/1/27 Devymex <dev...@gmail.com>

Kemi Sprite

unread,
Jan 28, 2010, 4:14:38 AM1/28/10
to pon...@googlegroups.com
持续关注中:

肖老师的解释:

关于《0 bug-C/C++商用工程之道》一书出版前后的故事
http://blog.csdn.net/tonyxiaohome/archive/2010/01/28/5265573.aspx

Tinyfool

unread,
Jan 28, 2010, 4:17:47 AM1/28/10
to pon...@googlegroups.com
可怜的肖老师,他可真是惹了高人了,我们都是那张编辑的手下,召之即来,来之能战

2010/1/28 Kemi Sprite <kemis...@gmail.com>

Kenny Yuan

unread,
Jan 28, 2010, 4:31:03 AM1/28/10
to pon...@googlegroups.com
可怜的Shuo Chen,被用来当挡箭牌了

这种“拉一个、挡一片儿”的招数,那孙子玩得不错啊

Kemi Sprite

unread,
Jan 28, 2010, 4:38:23 AM1/28/10
to pon...@googlegroups.com
貌似还是唯一的挡箭牌

2010/1/28 Kenny Yuan <yuank...@gmail.com>

Jeffrey Zhao

unread,
Jan 28, 2010, 4:41:09 AM1/28/10
to pon...@googlegroups.com
明明还有一个不远万里邮购至纽约的朋友嘛……
 
 

Fei Yan

unread,
Jan 28, 2010, 4:41:38 AM1/28/10
to pon...@googlegroups.com
合理的技术讨论都被他过滤了

还有一个关键问题是,Shuo 做评论的时候,也只看了其中的一章;
那个美国友人,是否是个虎皮大鼓就无从得知了

真是无语了

2010/1/28 Kemi Sprite <kemis...@gmail.com>

Tinyfool

unread,
Jan 28, 2010, 4:43:21 AM1/28/10
to pon...@googlegroups.com
美国不也有文盲么…

我要是去了美国,谁的书需要美国大旗,第一个报名

2010/1/28 Fei Yan <skyscr...@gmail.com>

Kemi Sprite

unread,
Jan 28, 2010, 6:57:02 AM1/28/10
to pon...@googlegroups.com
最具有娱乐性的是肖老师不仅把在豆瓣上吐的吃回去了,顺便连自己blog也一并打扫干净
“我在我所有博客发文,也请我的朋友过来围观。
我还真不信了,这个世界上,几个人一群P,就可以把公理给改了。”
囧...
 
2010/1/28 Fei Yan <skyscr...@gmail.com>

chuang

unread,
Jan 28, 2010, 9:30:25 AM1/28/10
to pon...@googlegroups.com
我靠啊,目前看到他前后几天的言论只能用无语来形容了.
一个人不怕错,就怕错了不认还死撑着.

2010/1/28 Kemi Sprite <kemis...@gmail.com>

jinhu wang

unread,
Jan 28, 2010, 9:34:39 AM1/28/10
to pon...@googlegroups.com
我客观分析一下。
   肖老师是个经验丰富的开发者,具备写好程序的素质,不说别的,但看写的书的目录就知道是一个绝对的写程序的老鸟。
   Shuo少侠的技术功底是相当雄厚的,Shuo具备熟练的c++技能,雄厚的算法功底,对boost的狂热追捧,以及追求代码完美度的偏执。
   肖老师虽然经验丰富,但是给人感觉是博而不精。如果出书前能找shuo少侠这样一位严谨型的朋友进行校刊的话,相信这本书是一本绝对的好书。
可惜啊!!
2010/1/28 chuang <lichua...@gmail.com>

sagasw

unread,
Jan 28, 2010, 9:41:39 AM1/28/10
to pon...@googlegroups.com
你这话有着浓浓的长者之风,醇醇的领导之派啊


------------------------------------
C++, Lua, living in Dalian
http://sunxiunan.com/
http://twitter.com/sagasw
------------------------------------


2010/1/28 jinhu wang <wangji...@gmail.com>

jinhu wang

unread,
Jan 28, 2010, 10:01:40 AM1/28/10
to pon...@googlegroups.com
哦,能读出这个感觉来,不错:)
但是我只是根据我的理解尽量客观的评价一下这次的风波而已。
不想过多的抨击说错话做错事的前辈,写了20年代码挺不容易的。冒出个想法,把自己经验用一种方式攒成一本书,实属不易。
软件开发的一个名词叫迭代。不断迭代达到目标,趋近完美。
做人其实也是一样的道理。我总觉得写教育性书籍的人应该要做到厚积薄发,
这个作者总的来说还是缺乏很多基本素质,还需要继续沉淀过程,要为沉淀过程加个期限的话,我希望是再过20年。


2010/1/28 sagasw <sag...@gmail.com>

Shuo Chen

unread,
Jan 28, 2010, 11:13:24 AM1/28/10
to TopLanguage
我看完了的。

On Jan 28, 5:41 pm, Fei Yan <skyscribe...@gmail.com> wrote:
> 合理的技术讨论都被他过滤了
>
> 还有一个关键问题是,Shuo 做评论的时候,也只看了其中的一章;
> 那个美国友人,是否是个虎皮大鼓就无从得知了
>
> 真是无语了
>

> 2010/1/28 Kemi Sprite <kemispr...@gmail.com>
>
> > 貌似还是唯一的挡箭牌
>
> > 2010/1/28 Kenny Yuan <yuankain...@gmail.com>

Shuo Chen

unread,
Jan 28, 2010, 11:16:51 AM1/28/10
to TopLanguage
谬赞了。
把"对boost的狂热追捧"去掉就更妙了。boost 里边有好有坏,我们捡顺手的用用。

On Jan 28, 10:34 pm, jinhu wang <wangjinhu...@gmail.com> wrote:
> 我客观分析一下。
> 肖老师是个经验丰富的开发者,具备写好程序的素质,不说别的,但看写的书的目录就知道是一个绝对的写程序的老鸟。
> Shuo少侠的技术功底是相当雄厚的,Shuo具备熟练的c++技能,雄厚的算法功底,对boost的狂热追捧,以及追求代码完美度的偏执。
> 肖老师虽然经验丰富,但是给人感觉是博而不精。如果出书前能找shuo少侠这样一位严谨型的朋友进行校刊的话,相信这本书是一本绝对的好书。
> 可惜啊!!

> 2010/1/28 chuang <lichuang1...@gmail.com>
>
> > 我靠啊,目前看到他前后几天的言论只能用无语来形容了.
> > 一个人不怕错,就怕错了不认还死撑着.
>
> > 2010/1/28 Kemi Sprite <kemispr...@gmail.com>


>
> >> 最具有娱乐性的是肖老师不仅把在豆瓣上吐的吃回去了,顺便连自己blog也一并打扫干净
> >> "我在我所有博客发文,也请我的朋友过来围观。
> >> 我还真不信了,这个世界上,几个人一群P,就可以把公理给改了。"
> >> 囧...
>

> >> 2010/1/28 Fei Yan <skyscribe...@gmail.com>

Shuo Chen

unread,
Jan 28, 2010, 12:10:43 PM1/28/10
to TopLanguage
这本书是目前为止我知道的惟一一本关注服务器端程序设计的 C++ 书。而且又是国人的原创作品,十分难能可贵。
客户端 GUI 的 C++ 书有不少,讲 MFC 的、讲 QT 的都有。C++ 通用技术的书籍那就更是汗牛充栋了。

这本书涉及的几个方面我认为是有价值探讨的:
- 服务器端多线程编程、并发控制、跨线程数据传递、时间片管理
- 服务器端内存管理、缓冲区管理、资源管理(在多线程背景下)
- 服务器端的日志
- 服务器端的错误处理,包括 supportability
- 对 C++ 的规范化剪裁使用
这本书对这些问题的讨论深度让我相信作者是有经验的、做过成功的大项目的程序员。
当然服务器开发远不止这些内容,目前似乎也没有见到更好更全的 C++ 著作,比如
C++ 网络编程。(UNP 一二卷是入门到中级的书,可惜无福读到第三卷了;ACE 就算了吧)
这本书给出的解决方案在我看来很多时候不是最优的(常见原因是为了跨平台,
虽然我认为 C/C++ 跨平台是个伪命题),往往不如我接触过的专于某一特定平台的代码。
但是我接触到的代码都是各家公司的不传之秘,是核心竞争力,不能轻易示人。

目前对这本书的指责主要集中在作者的一些 C++ 知识点,比如语法和对象模型。
说实话我认为这样的批评没有多大价值,没有说到点子上。
你拿一本 C++ Primer 或 Effective C++ 来逐条批判肖舸,除了获得踩人的快感(啊哈,
你看作者也不过如此嘛,没有我懂得多,到此一游给个 1 星),对你自己有什么提高?

要我说,不如针对前面的具体的技术搞 PK,就拿 logging 来说,大家比试比试技术和代码。
谁的办法好、设计简洁、效率高、易用性强,口说无凭,代码写出来见真章。
就像几个星期前我出的两道面试题,高低好坏一下子就能分辨出来。
这样或许对大家都有点益处。

jiang yu

unread,
Jan 30, 2010, 4:54:13 AM1/30/10
to pon...@googlegroups.com
我比较赞成 Shou 的观点;肖老师大概是野草,在c++方面确实不够学院,好比是围棋界的徐奉洙,但是并不能就是抹杀了本书的价值。
源于实践是这本书最大的特色,野草是最大的风格——作者摸索的多,参照的少。我看这本书,对比自己的实践,是非常理解(注意是理解并非赞成)作者的理路和实际的。对于很多尚在摸索的同仁来说,这本书非常有价值。
正是摸索的多,参照的少,写成文章才更难,并且我看作者并不是善于写文章的人,比起老外来语言比较生硬,这两点也造成了读者有点冷淡;但是作为热爱编程的诸君,应多点宽容。


2010/1/29 Shuo Chen <gian...@gmail.com>

Jeffrey Zhao

unread,
Jan 30, 2010, 5:23:55 AM1/30/10
to pon...@googlegroups.com
其实我觉得吧……没有人不宽容,也没有人说这本书不值得看或是一文不值什么的,只是作者实在,怎么说……敏感了点?
 
 

From: jiang yu
Sent: Saturday, January 30, 2010 5:54 PM
Subject: Re: [TL] Re: 问问看过《0 bug——C/C++商用工程之道》的朋友

jinhu wang

unread,
Jan 30, 2010, 5:32:08 AM1/30/10
to pon...@googlegroups.com
服务器端软件设计一般会牵扯大量技术:数据库,操作系统,文件系统,socket,并发,还有流行的软件架构,设计模式等等。
写这样的书还是难以入手,就像写计算机网络设计,只能在宏观角度写个大概。
这本书应该算是作者服务器端软件开发经验总结的那种。
而服务器端的基础架构,确又如shuo所说都是些不传之秘,但是见的多了,基本也就是这本书里点到的那些点,什么样的架构都是绕着这些点在转,没有一个真正完美的解决方案。

Fei Yan

unread,
Jan 30, 2010, 10:13:22 AM1/30/10
to pon...@googlegroups.com
我想这里的列位并不是批判这本书完全狗屁不通,而是批评作者这种“顺我者昌逆我者亡“的态度,似乎他自己写出来的必须要是绝对权威,任何人不能提出任何不同意见;否则就骂你是”某某编辑的棋子儿“,虽然我不知道这个编辑是谁,我也没在豆瓣上发帖。

如果有人跳出来说那个地方不对,就马上找其他的东西来镇压(什么7*24,什么天上飞),这种态度我个人强烈反对。

本来有这些宝贵的探索经验,并且将其分享出来是需要很大的勇气;但是要写书就得忍受被拍砖,然后通过别人的批评,进而取得提高(可能肖老师觉得自己不需要提高了,在自己的领域已经顶天了),这是写书的最大意义,这样商业报酬等副产品自然就会有了,这是个良性循环,显然肖老师是将商业看做第一,目的是赚一票。

一个题外话就是,我看到这个书和作者,才知道原来还有个csdn学生大本营,并且被这么多人归为至宝。

BTW,我感觉肖老师讲述的更多是嵌入式服务器开发,这些东西和真正的服务器开发(Unix、Linux)还是有些差距吧。

以下我也讲讲自己以前在嵌入式上遇到的实际情况(那时候我用了很多C++的东东在代码里边,代码里边全是STL而很少有手工管理内存,鲜有兼容问题),回忆的背景都是在08年以前了,但是时代应该不会退步:

========================================
总体上来说, 不可避免的时代潮流是,arm7的时代已经渐行渐远,arm9的应用已经相当广泛(我说的是民用领域,大部分的嵌入式开发者应该在这个阵营,而不是军方那些老套老家伙),更不要说更强劲的arm11,Davinci,x86 powerPC等;
ucLinux/MontaVista等对std c++的支持已经非常完善,譬如我2年前用的板子上就有gcc 3.4.3,  C++03的特性支持的也八九不离十。

几十块钱的硬件代价,相比高昂的软件维护费用,可能就是鸡毛蒜皮(处于生存壮大期的除外)。

当时公司的一帮技术大大们围在一起干的一个项目就是把所有的基础库用template C++重新实现了一遍,性能的损耗比原来的大套虚函数继承差不了太多

以前订阅boost的maillist,还发现有不少老外已经将整套boost在arm上搞了起来

=========================================
现在已经是2010年,由于2年不碰嵌入式,我已经不太清楚目前是否还有多少arm7在产品上跑,估计arm11应该也有不少应用了;
貌似uclibc已经早支持到了gcc4.x


2010/1/30 Jeffrey Zhao <je...@live.com>

Fei Yan

unread,
Jan 30, 2010, 10:17:11 AM1/30/10
to pon...@googlegroups.com
我觉得根本的问题是你必须学会去trade off,并没有十全十美的solution存在
这个也是网络编程的魅力

对于这个方面,我觉得还是要大量的代码+实践,才能或许些许宝贵的经验,而这些经验可能脱离了很具体的环境就可能毫无用处

这也许是没多少人写书的原因之一

2010/1/30 jinhu wang <wangji...@gmail.com>

jinhu wang

unread,
Jan 30, 2010, 10:45:32 AM1/30/10
to pon...@googlegroups.com
对于7*24的嵌入式来说,适配内存管理是必须的,原因就在于要避免内存碎片导致的内存危机。

jinhu wang

unread,
Jan 30, 2010, 10:51:06 AM1/30/10
to pon...@googlegroups.com
题外说一句,记得上次有人来公司讲解架构,提到内存管理,问大家:为什么我们为什么需要自己的内存管理模块。当时几乎没有一个人能点到点子上。
在有了适配好的内存管理的基础上,用stl等模版类还存在的一个问题就是编译生成的二进制文件膨胀明显。

chuang

unread,
Jan 30, 2010, 11:28:35 AM1/30/10
to pon...@googlegroups.com
说真的,我也不觉得他书里面谈到的那些东西,内存池,log系统有太多的参照意义,你找一个不错的开源服务器项目,这些全有了.

jinhu wang

unread,
Jan 30, 2010, 11:32:18 AM1/30/10
to pon...@googlegroups.com
      其实服务器架构相关的书要是没有一个实际产品做例子,写出来往往是个四不像,脱离了产品这条主线,空谈经验很容易就虚,或者落入俗套。
《多任务下的数据结构与算法》给人感觉也是理论很多,有实例,但是没有一个实例能贯穿始终。
能用一个或几个实际产品做线锁来普及经验和知识的书也不少:《道法自然--面向对象实践指南》就很不错,作者以自己做的一个嵌入式产品的开发过程做例子,把设计模式、c++讲的很透彻。侯捷的深入浅出MFC更是绑定在mfc平台基础之上的。好像还有做游戏的、做嵌入式操作系统的都写过类似的书,而这些书我觉得都应归在实践型中,都是真实开发场景的纸面再现。如果有人能再弄些协议栈开发的,数据库的那就更好了。
对于个人修炼来说多写代码多实践肯定是对的,之外就是从已有代码和框架里汲取营养,像有些百年老店的软件作品里有传承了几十年的开发流程和框架产品,都是众多优秀设计师一步步迭代出来的,这些成熟思想不是你个人实践写大量代码能顿悟的。自我修为也是个迭代过程。
之所以说没有完美的解决方案,是因为每个框架搭建之初往往是为了应对某些共性问题,但是特性问题是永远想不全的,就像各种技术标准总是多少的有些漏洞一样。

jinhu wang

unread,
Jan 30, 2010, 11:47:20 AM1/30/10
to pon...@googlegroups.com
没错,这也是很多人不愿意写这样的一本书的原因。一旦想到这些问题,往往都有现成的例子做对照,或者自己面对的产品已经具备了这样的基础库。
我没有读那本书,我只是看目录和根据作者的工作年限猜测,他可能属于有经验有积累,但是缺乏理论指导和没见过太多已有优秀的作品尤其是一些流行的开源作品,眼界比较窄的那一类。
06年的时候,我还在想要是有这么一个跨平台+通用工具性类集成的开源库那该多好,当时甚至有去写这么一个库的冲动,但是不经意间在sourceforge上像探宝一样的搜到了poco。然后我就明白了,一个人闷头想出来的东西,不一定就是现在没有的东西,一定要多探索,多交流,多学习,多积累。沉淀也是门技术。

Fei Yan

unread,
Jan 30, 2010, 8:18:45 PM1/30/10
to pon...@googlegroups.com
我认为问题要根据对应的芯片是否有MMU来区别对待

老的arm是没有mmu的,这样的系统上,会有很多问题;
在有MMU的较新的arm上,内存碎片的问题应该就能缓解不少

即使自己实现内存管理,也不过是参照一些常见的MMU实现算法(slab/buddy)做裁剪。

内存问题的本质,大概是OS将应该由自己做的事情踢给了programmer;看起来是硬件成本减少了下去,但软件成本提升了不少(写出一个高效的软MMU可是比买一个带MMU的板昂贵很多)


在 2010年1月30日 下午11:45,jinhu wang <wangji...@gmail.com>写道:
It is loading more messages.
0 new messages