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
不同的开发领域,有着完全不同的生态环境。
往往在一个环境很实用的方法套路,换一个环境就显得笨拙愚蠢。
一个人在初学时难免受到或左或右观点的影响,将种种模式生搬硬套,走一些崎岖坎坷的弯路。
美玉终究需要打磨掉上面的顽石,只有实践才能出真知。
成人往往害怕少年被错误的东西误导,但往往忽略了无菌室中培养出来的只能是温室的花朵,经不起雨露风霜。
善于思考的人能给从混乱地现象总结出适用的新规律,
不善思考的人往往被陈旧的经验或别人的建议所左右。
好吧,以上纯属意识流的扯淡,其实我想说的只有一句:
有人传播错误的知识,并不可怕;可怕的是,没人愿意去思考知识是否正确 --- 看《银河英雄传说》有感。
--
卖空间 http://stdyun.com/vhost
写书 http://kanrs.com
豆瓣 http://www.douban.com/people/zuroc
博客 http://zsp.javaeye.com
说一条建议吧,作者的某些观点与 C++ 经典著作(Bjarne, Scott, Herb 等人的书)
不同(每个人都有自己的想法,我也不尽信书),如果作者能标出这些不同并给出
自己的充分理由就更好了。
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>
On Jan 6, 8:06 am, jun lin <linjunhal...@gmail.com> wrote:
> 经典要的是反复读。
> 或者教别人经典,来提高。
>
> 2010/1/5 Shuo Chen <giantc...@gmail.com>
On Jan 6, 9:00 am, jun lin <linjunhal...@gmail.com> wrote:
> 言传身教。
> 比如你知道一个概念:CPU架构,
> 你可以在公司内部上一次课,来向大家介绍。
> 大家会学到东西,你在教学的时候也巩固了基础,
> 大家提问,你也知道了自己的不足之处。
>
> 2010/1/6 Shuo Chen <giantc...@gmail.com>
大家时间都很宝贵,工作很忙,开一次会成本太高(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>
On Jan 6, 10:05 am, chuang <lichuang1...@gmail.com> wrote:
> 这个好,赞一个,敢问是哪个公司么?
>
> 2010/1/6 Shuo Chen <giantc...@gmail.com>
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>
On Jan 6, 10:25 am, jun lin <linjunhal...@gmail.com> wrote:
> 只是介绍,非采用,请不要误解我的意思。这里面的库,也可以是新技术之类。
> 开会成本是高,不过你们内部应该有定期的交流会吧?
> 任何专业人员之间都是需要交流的。在交流会上可以大致介绍下。
> 如果公司同仁都是牛,忙得飘上天的话,
> 也可以业余时间培训外面的新人。。对基础也是沉淀。
> 现在越来越感觉,学习是围着基础转,基础要定期牟牢。
>
> 2010/1/6 Shuo Chen <giantc...@gmail.com>
一般期望是多少钱呢
我有个朋友想搞搞培训
--
卖空间 http://stdyun.com/vhost
写书 http://kanrs.com
豆瓣 http://www.douban.com/people/zuroc
博客 http://zsp.javaeye.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修饰符都很少用到。这样的代码
风格,在我们组肯定会被毙掉的。
具体说说第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
> > ------------------------------------
按照作者自己的说法
"我想,本书强调的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>
大致读了一遍,说几点体会。
这本书前半部分主要讲编程风格,后半部分介绍了作者自己多年积累的一些程序库。
编程风格见仁见智,我喜欢作者只用 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修饰符都很少用到。这样的代码
风格,在我们组肯定会被毙掉的。
===========================================
毛泽东说自己做了两件大事,一个是新民主主义革命,一个是文化大革命。新民主主义革命是毛泽东用群众路线思想指导共产党觉醒人民凝聚人民,用凝聚起来的人民群众创造力搞武装革命消灭剥削阶级的暴力工具建立无产阶级专政社会主义政权。这时候的敌人是明确的,所以更容易斗争。但是,毛泽东非常明白在内部会产生变质产生走资派,产生投降派。毛泽东在建国初期就开始预防无产阶级政权变质,多次搞整风运动防止变质。但是,毛泽东发现变质问题越来越严重,那些有功大官们像封建社会的功臣一样想当新的贵族官老爷,他们根本就不懂马克思主义,不懂社会主义,不懂群众路线思想。还不断的打击群众路线,搞精英做主的民主,就是所谓的党内民主。不实行群众路线脱离了群众的共产党是变质的共产党,是精英专制党。
什么是社会主义?什么是共产党?共产党不是先进代表领导无知老百姓,共产党的真理不是领导无产阶级,而是用群众路线觉醒人民凝聚人民,形成共产党凝聚起来的人民群众创造力。马克思主义毛泽东思想不是学者和领导在学术理论上论述的学术思想,而是觉醒人民。社会主义就是用群众路线实践马克思主义觉醒人民凝聚起来的人民群众创造力。不实行群众路线脱离了人民群众就不能领导人民,只能逼迫人民服从。那就是精英专制。
在社会主义建设中毛泽东发现了两个重要的问题非常难以解决,这两个重要问题是危害社会主义变质的重要问题。
第一个重要问题就是毛泽东发现那些取得无产阶级专政政权的无产阶级有功大官们开始严重变质了,毛泽东用各种运动都无法改变这种严重变质问题。这种变质就是共产党要变成用党内民主代替群众路线人民民主,把共产党变成精英专制阶级,共产党脱离群众的结果最终会变成走资派。毛泽东感觉到了巨大危险。毛泽东在现实中明白了另一个问题,就是人民群众还没有真正的觉醒,人民群众还没有理解人民民主对自己是最重要的权利。毛泽东看到大多数工人,尤其是农民还是极端怕官,而官还是喜欢搞官僚主义,喜欢脱离群众瞎指挥。尤其是有些官已经开始敌对人民群众了。文革开始的时候官僚不就是敌对人民群众打击学生运动吗?现实中我们看到多少次官僚敌对人民群众的行为了?毛泽东最早看明白了这个问题的危险性,毛泽东明白了社会主义人民民主最大罪强硬的阻力破坏力是那种顽固的传统的自私自利的社会性行为文化。
什么是社会性行为文化?就是那种人们做的文化,不是那种说的文化。学术理论文化只能说的更完美合理,但是,大多数人是说得容易做得极少,人们在做的时候往往会找某种学术文化中的某句对自己有利的话做理论根据,那就是用诡辩歪曲的理论为自己自私自利服务。在剥削压迫的社会中满嘴仁义礼智信就是完美的说的文化,是贵族表演的文化,是愚民的文化。做的时候只用对自己有利的某句话,这就是真实的自私的社会性文化。大多数人就是自私的,没有人人公平平等的互相监督斗私批私酒不能建立社会主义大公无私社会性行为文化。自私的文化必然会产生精英专制,必然会产生剥削压迫,必然会导致社会道德沦丧,必然会产生严重的泛滥成灾的腐败,必然会产生严重的泛滥成灾犯罪。
我稍微修改了一下,发到豆瓣上了: http://www.douban.com/review/2919204/
On Jan 7, 9:20 am, Fei Yan <skyscribe...@gmail.com> wrote:
> comments inline......
>
|
|
显示详细信息 10:18 (34 分钟前)
|
嗯,也对也不对。
我一开始就有感觉,我的风格,可能见仁见智,喜欢的,真喜欢,不喜欢的,真不喜欢。
不过呢,我也有一个理由来宽解我自己,用我的风格,真正做到了接近0bug的地步,这是工程实测出来的数据,是实实在在的,并不是能伪造出来的。
近年来我写模块,基本上写一个成一个,白盒测试结束,就是0bug。
我想,我的方法有其价值。
目前国内很少有书能真正讲点实战经验,是因为实战经验,有时候如果非要用理论去套用,是套不上的。但,实用就有道理。
比如他批评我做程序,先用C实现一遍,再用C++封装,其实是有很深的含义的。
因为为了预防内存碎片,我强调所有内存块必须有管理的重用,自己定义了重用内存池,而内存池没有C++对象new的功能,即无法自动调用构造函数和析构函数,只能提供简单的二进制缓冲区的调用,因此,我被迫在底层,实用纯C模式,把数据与操作函数分离,以便尽量利用这个内存池特性。反过来,上层调用时,由于以C++方式方便,因此,二次再封装成C++,方便调用。
这个读者,起码没有做过服务器,不知道内存碎片的危害。
C++很多特性,如模板,继承,虚函数,是以大量的动态内存分配实现的,这势必造成大量的内存碎片,事实上,C++不是一个好的服务器开发语言。
仅举这一个例子吧。
你有兴趣,看书的时候,我建议先不忙批判,我的书,一直建议大家不要太关注代码,关注我中文文字讲的道理,因为实际工程中,有很多顾虑,每个奇怪的设计,其实都在躲某件事情。你如果能理解这一点,其实再看代码就不刺眼了。
单写多读锁威力极大,你如果用好了,可以大幅度提升你程序的性能。这个代码简单,敲起来也不难,你也不必看别人评价,自己测试一下就知道了。
其实,代码好不好用,人说了不算的,计算机说了算,你说是吧?
感谢你的关注和关心,有问题可以随时和我讨论。
人在江湖漂,怎能不挨刀,目前,好的书籍我没看见多少,不挨骂的作品,一本都没有,呵呵,你说是吧,要说挨骂,我比谭浩强老师挨的骂少多了。
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
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>
我已经转给作者了,作者有回复,大家不烦看一下。不管怎样,这书的作者在写完书后跟读者的交流还是比较多的。
显示详细信息 10:18 (34 分钟前)嗯,也对也不对。
我一开始就有感觉,我的风格,可能见仁见智,喜欢的,真喜欢,不喜欢的,真不喜欢。
不过呢,我也有一个理由来宽解我自己,用我的风格,真正做到了接近0bug的地步,这是工程实测出来的数据,是实实在在的,并不是能伪造出来的。
近年来我写模块,基本上写一个成一个,白盒测试结束,就是0bug。
我想,我的方法有其价值。
目前国内很少有书能真正讲点实战经验,是因为实战经验,有时候如果非要用理论去套用,是套不上的。但,实用就有道理。
比如他批评我做程序,先用C实现一遍,再用C++封装,其实是有很深的含义的。
因为为了预防内存碎片,我强调所有内存块必须有管理的重用,自己定义了重用内存池,而内存池没有C++对象new的功能,即无法自动调用构造函数和析构函数,只能提供简单的二进制缓冲区的调用,因此,我被迫在底层,实用纯C模式,把数据与操作函数分离,以便尽量利用这个内存池特性。反过来,上层调用时,由于以C++方式方便,因此,二次再封装成C++,方便调用。
这个读者,起码没有做过服务器,不知道内存碎片的危害。
C++很多特性,如模板,继承,虚函数,是以大量的动态内存分配实现的,这势必造成大量的内存碎片,事实上,C++不是一个好的服务器开发语言。
2010/1/26 Shuo Chen <gian...@gmail.com>:
--
Any complex technology which doesn’t come with documentation must be the best
available.
2010/1/26 sagasw <sag...@gmail.com>:
态度可以算是极其恶劣了…2010/1/26 chuang <lichua...@gmail.com>看了回复,只能说失望之极 出来混,没点肚量能接点板砖可不好
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>
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>
这本书涉及的几个方面我认为是有价值探讨的:
- 服务器端多线程编程、并发控制、跨线程数据传递、时间片管理
- 服务器端内存管理、缓冲区管理、资源管理(在多线程背景下)
- 服务器端的日志
- 服务器端的错误处理,包括 supportability
- 对 C++ 的规范化剪裁使用
这本书对这些问题的讨论深度让我相信作者是有经验的、做过成功的大项目的程序员。
当然服务器开发远不止这些内容,目前似乎也没有见到更好更全的 C++ 著作,比如
C++ 网络编程。(UNP 一二卷是入门到中级的书,可惜无福读到第三卷了;ACE 就算了吧)
这本书给出的解决方案在我看来很多时候不是最优的(常见原因是为了跨平台,
虽然我认为 C/C++ 跨平台是个伪命题),往往不如我接触过的专于某一特定平台的代码。
但是我接触到的代码都是各家公司的不传之秘,是核心竞争力,不能轻易示人。
目前对这本书的指责主要集中在作者的一些 C++ 知识点,比如语法和对象模型。
说实话我认为这样的批评没有多大价值,没有说到点子上。
你拿一本 C++ Primer 或 Effective C++ 来逐条批判肖舸,除了获得踩人的快感(啊哈,
你看作者也不过如此嘛,没有我懂得多,到此一游给个 1 星),对你自己有什么提高?
要我说,不如针对前面的具体的技术搞 PK,就拿 logging 来说,大家比试比试技术和代码。
谁的办法好、设计简洁、效率高、易用性强,口说无凭,代码写出来见真章。
就像几个星期前我出的两道面试题,高低好坏一下子就能分辨出来。
这样或许对大家都有点益处。