《编程高手箴言》读后 #1

seacloud(原作)
关键字     编程高手

毕业也有几年了,也看了和学了不少东西。有时也想写点什么,但总是觉得头绪很多,一直没有动笔。最近翻了翻梁先生的《编程高手箴言》,突然想写点什么,权且用读书笔记的形式写点东西。等号上面的摘字《箴言》,下面则是笔者自己的感想。希望大家指教,但是谩骂就不必了,谢谢。

注:这一部分涉及《箴言》第一章。


在PC这个领域,现在的程序已不等于软件了。

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

现在的程序不等于软件, 那么什么时候的程序等于软件呢? 我想,不管什么时候,都存在有用的和没有的程序, 而软件, software,在计算机领域里就应该指那些有用的程序,而不论这些程序有没有商业化。呵呵,应此只要我们在为自己或者为别人写有用的程序,那么我们就可以说我们是在写软件了。


商业软件的功能和所要达到的目标就不是一个人能“玩”的起来的了。这就是美国新的软件公司没法产生的原因。比如Netscape网景是在1995~1996产生的新软件公司,但是,两三年后他就不见了。

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

所谓商业软件的功能和目标从来都没有过严格的定义,也不会有严格的定义。何谓商业软件?看发布时的代码量?看可执行程序的尺寸?看有没有复杂神妙的算法?看有没有优良的售后服务?还是干脆就把大公司发布的东西就叫做商业软件? 当然,现在在一些通用领域,一些不涉及复杂算法设计的场合,一些已经有大公司进入的场合,单凭个人的力量想要做出可以和大公司抗衡的东西确实几乎不太可能。但是,计算机科学是门涵盖很广的学科,很多分支,比如数字图像处理,视频音频处理,人工智能和机器人,等等,只要有人得到了突破性的发现,我想快速形成商业软件也非不可能。当然了,很可能这些刚出现的小公司很快就被那些巨无霸吞并了。如果稍微看看现在这些巨无霸公司的发展轨迹,就会发现它们吞并刚出现的小公司是家常便饭的事。但即便是这样,硅谷还是有很多小软件公司出现。毕竟,软件业这块平面上单凭巨无霸公司那些大圆还是填不满的,圆和圆的结合部总会有空隙存在。

至于说到Netscape的消失,原因大家都明白,这其实更多的不是取决于技术。事实上微软进军这个领域太直接不过了,软件上已经有了Visual Studio和MS Office,因此开发浏览器的技术对他而言几乎都是现成的。即便这样,Microsoft的IE还是在NCSA Mosaic的基础上完成的。所以Netscape没有被收购,而是彻底被打败了。


任何一个行业初始阶段时的门槛都很低,但是,只要发展到一定的阶段后,它的门槛就必然抬高。

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

笔者十分赞同这句话,软件业创意太重要了。什么东西都是最先做出来的那几家获益最多,后来者通常都是分些残羹。前两天在同事那里看一个搞笑的flash,突然冒出一个念头,怎么当初我就没有想到在浏览器里写个插件来支持动画和音乐呢。呵呵,归根结底还是个人的水平有限啊:-)

大家每天睡觉前不妨花个几分钟想想,说不定就被你想到个点子从此一步登天了呢,呵呵。


现在中国软件行业正在形成,所以现在做一个程序员一定要有耐心。

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

我想程序员不管什么时候都需要耐心,耐心可以说是软件开发者的必备素质,并且体现在各个方面:

写程序的时候没有耐心那你就等着后面抓不尽的虫吧;给自己充电的时候你没有耐心,那么你永远只能掌握肤浅的东西;追女朋友的时候没有耐心,那你就......,晕,怎么有番茄扔过来了,我闪 😃


你一定要把所有的问题搞清楚,然后再去做程序。

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

软件设计是门要靠脑力的活,而软件发展的迅速和需求的不断提高是人所共知的。什么时候我都不敢奢望把所有的问题都搞清楚了。实际上每个开发者,哦,不,:-)是我本人在开发的过程中总是不断发现新问题,不断在解决问题,是个螺旋提高的过程。我一向认为在开发中学习是最快最有效的。


事实上,美国的商业编译器也不是一个人能”玩“的,现在你可能觉得很简单的,甚至Linux还带了一个GCC,且源程序还在。你可以把它改一改,做个VC试一试,看它会有人用吗?即使你再做个界面,它也还是GCC,绝对不会成为Visual C++那样能商业化的软件。

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

我依稀记得曾经看过一篇章,说Borland当初的Turbo Pascal主要就是一个牛牛用汇编写出来的。呵呵,如果有人给GCC写个类似VC的界面我举双手双脚赞成,免费帮他测试:-) 有时我在想,Borland当初开发Delphi的时候不用Pascal而用C++的话,现在开发工具的市场份额会是个什么格局?(本人绝对没有瞧不起Pascal的意思,事实上我的第一门语言就是Pascal,只是因为图书馆里Pascal的书被人借光了才自学了C)

如果我给Gcc写了个界面,当然还是GCC。用过GCC的人从来不会说GCC比不上Visual C++,两者实在没有办法比,不在一个数量级上。GCC是个强大的编译器,支持N种硬件平台和官方的软件标准,同时也引入了很多软件开发者急需的好特性。大多数优良的库,罕有不能在GCC上编译通过的。嘻嘻,有为GCC做广告之嫌?

至于GCC的商业化,我就看到过一些卖硬件产品的公司,它们附带的编译器就是GCC或者其变种。再说了,大量大型的软件都可以用GCC编译出来的,从稳定上讲我想不会比Visual C++差吧。事实上,我用Visual C++的时候就遇到过所谓的Internal Error,而我用GCC,就从来没遇到过这种莫名其妙的内部错误的抱怨。我想,GCC绝对有商业软件的潜质,呵呵,就是在可视化方面比不上Visual C++,虽说也有一些GCC的图形前端。


机遇是从耐心中产生的,越有耐心,就越有机遇。

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

名言啊名言,我有耐心啊,机遇快来吧,呵呵。

大家还是埋头苦干吧,别真的机遇来了你还没有准备好,呵呵~~


如果你是从MFC入手的,或者是从VC入手的,那么要做出一个真正的能应用个人领域的通用软件,就会走非常多的弯路。

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

怪了去了,怎么从MFC或者VB入手就会走非常多的弯路呢?从MFC或者VB里调用Win32 API很直接,尤其在Visual C++ MFC里。《箴言》很看重底层,Win32 API难道还不够底层吗?难道非要在汇编一级才可以写出真正的通用软件吗?那我干脆去给CPU写微码去了,呵呵~~~。VB我用的很少,就不说了。至于MFC,如果你真正弄懂了MFC那么你对于Windows的各个方面几乎就全部精通了(当然,我是指Windows内核外用户空间的东东)。

计算机这个东西不管是硬件还是软件,层次很重要。开发很重要的一个方面就是要弄明白你自己需要在什么层次上做东西。一个用java写中间件的开发人员,有多大必要去精通系统底层的东西呢?我想如果你不立足于自己的层次做东西,而胡乱搞跨层的东西,结果可能就是出力而不讨好了。自己研究研究还行,如果在工作中还是这样层次不清楚的话,呵呵,就很危险了。

当然,我没有让大家不去钻研,但我想最好还是找个前辈请教,根据自己的兴趣制定自己的学习计划。人的精力毕竟有限,我们要把有限的精力投入为人民服务之中去嘛,可不要浪费了哟,呵呵。


只想混口饭吃,找个工作,可能教你成为MFC的高手之类的书对你就足够了。

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

现在的同志好幸福啊,国内在不停的引进国外的名书。想当年在95年左右的时候,外国参考书实在是不多。我建议大家在计算机领域里面看书最好是找老外的。不是我崇洋媚外,老外出书基本上还是蛮负责的,而国内引进的大多还不错。但是即使你在修炼国外大牛们关于MFC的书,如果你不认真实践,那么光靠书你是不可能成为MFC高手的。MFC这个类库的设计已经有很多人在抨击了,我们不多谈,但是如果你真的深入到MFC的源代码里面去,其他我不知道,但是你肯定可以对Windows的运作有个很深入的理解。


从最低层做起,从最基本坐起。

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

笔者的看法是从中间层做起。就以Win32上的Java为例,一开始我绝对不会从Java虚拟机规范,java和本机系统的交互,Java垃圾回收算法的实现等等很底层的东西着手。也不会一开始就涉及那些什么设计模式,Frameword框架之类的高层抽象。我会就从Java语言本身着手,熟悉它的语法,熟悉它的基本库,试着不断用Java描述问题。在这个过程中,你自然会遇到一些或高层或底层的问题,这个时候你在去钻研它们绝对不迟,并且只可能是事半而功倍。


高手成长的六个阶段

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

《箴言》一书把程序员的成长分成了六个阶段。笔者却认为只有第一阶段,即熟练的使用某种语言是每个程序员必备的。其他的一些能力对于不同的开发方向应该是不同的。比如《箴言》认为第二阶段是精通某种平台的接口(比如Win32 API)。然而,很多做高层开发的同志,往往不太接触这些底层的API,因为在他下面,操作系统上面已经叠加了很多的层次了。比如,如果你用Java在Win32上面编程,几乎不需要和系统API打交道。这其实也体现了软件分层的思想:每一层只负责自己的职能,只和自己相邻的层通讯。

《箴言》认为能够进行VxD编程,或者进行操作系统内核的修改就算进入了高层次了。且不说VxD已经被Microsoft抛弃了,新的Win32驱动模型WDM,Linux/Freebsd kernel的小修改笔者都参经碰过,但是我从来不认为我到了很高的层次,尤其和那些做高层开发的朋友比。因为实在是没有办法比,比较是要在同一个层面上进行的,不同层面的东西你怎么比?就算你设计了操作系统,如果让你去规划一个ERP系统,你也未必成功。再说了,我写过WDM,觉得WDM也不那么神秘。但反观如果让我设计一个ERP Framework,我倒是觉得很多东西需要学习,我想反之也是一样。至于说到底层开发,难度大概应该实在比较少的资料和例子程序(尤其在Win32下面),不太友好的调试工具,以及较少的系统支撑。不妨举个例子,在做应用程序开发的时候,开发环境往往有完善的调试工具,也不太容易把整个操作系统搞死。然而做Kernel开发就不一样了,一不小心操作系统就崩溃了。记得笔者在做WDM开发时,就挂了第二个硬盘,随时准备Ghost,呵呵。


这时Win32或Linux在你眼里已经没有什么差别了。

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

从操作系统的角度看,Win32和Linux就都是操作系统,没什么差别。但是涉及到具体的开发,你就不得不清楚的认识到两者的不同,用户态程序还好一点,大致把几个重要的发面,比如线程,消息机制,GUI等方面抽象一下,就像QT,GTK做的那样,就可以实现Win32和Linux的跨平台。然而,在内核里面,两者差别是很大的,我从来没有看到过有什么Driver开发库能够做到很好的在Win32和Linux下面跨平台。我所看到的最接近的可能是Driver Works带的那个C++库。

BTW,也许有什么好的库我不知道,希望知道的朋友不吝赐教:-)


初级程序员他会觉得VB也能做出应用来,到中级程序员他可能就不会选择VB了,可能会用MFC。到高级程序员时,他绝对不是首先选择以上工具,考虑的绝对是什么才是具有最快效率,最稳定性能的解决问题的办法。

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

不知道《箴言》怎么把VB和初级程序员绑到一起去了,不管你用什么开发工具,你水平不到家你就是初级程序员,并不是说你选择了看似高档的开发工具你水平就高了。再说VB和MFC两者是不同的概念,没的比!至于说到高级程序员,我觉得《箴言》的看法还是对的,我有个老师就曾经把一个大项目分成了多块,每块都选择了适当的开发工具,最后项目成功了。每每看到论坛上有人在讨论开发工具的优劣,我就想只要讨论就落入下乘了。没有一个工具是十全十美的,聪明的人应该根据自己项目的情况做正确的评估。你想想,如果真的出来个十全十美的东东,那别的人还怎么生存?


最高境界的时候,想的就是“我就是程序,程序就是我”。

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

”我就是程序,程序就是我“,这是不是走火入魔了?人脑和电脑的差别无疑是巨大的,否则就不至于人工智能领域多年来都缺乏革命性的进步了。我想最高的境界反而应该是认清人脑和电脑的巨大差别,设法用程序搭桥,让他们能够沟通。实际上,我们想想数据结构里,操作系统里的很多概念是不是都是直接反映了人类生活的一些经验呢?(比如字符串匹配的快速算法,各种同步和Cache技术)。我想,让电脑去适应人脑还可以,反之怎么才能进行?


如果你达到高手的状态,你就是操作系统,你就能做任何程序。

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

假设我现在就是操作系统了,我就可以做任何程序了吗?操作系统不是什么特别的东西,它就是在替我们管理硬件资源而已。

什么是程序?程序是给人解决问题的代码的集合。操作系统的功能是受硬件资源约束的,而人类需要解决的问题是误穷尽的。


实际上技术到达最高境界,是没有分别的。

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

对于同一种技术,到了比较高的境界,确实是相通的。为什么呢?其实可以理解,你们都是在解决一个具体的问题,这个问题本身所具备的特性你怎么也回避不了的。比如你做分布式数据库,那么数据的一致性问题就是分布式数据库的一个没法绕过的问题,不管你用什么方法,你最终还是要回到这个问题上来。然而,这种所谓的没有差别只是概念上的,你可千万不要奢望说你明白了Microsoft的DCOM,你就可以不需要花什么力气就能很快上手Sun的分布式技术。我想这也就是我们这些做软件的家伙命苦的地方吧。如果有个什么标准化组织把软件的方方面面也定义好严格的规范,我们也能省去好多事了啊。


作者说微软的那些“老头”在64位的机器上去做虚拟windows,然后就说“微软的技术能不先进吗?是Linux那几个玩家能搞定的吗?

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

怪了去了,在CPU上跑几个操作系统就很牛了吗?这根本就不是什么新的想法,且不谈Java环境就具备了初步的虚拟计算机的能力,sourceforge上一度排名很考前的bochs就是个很好的x86模拟器,我就在它上面跑过一个小小的linux。

再说现在的VMWare,性能已经很好了,我同事在PII350的机器上都可以在VMWare里跑Win2000,那里还要什么64位机啊。再说了,64位的威力就在可以同时跑跑多操作系统,不会吧?


微软的技术非常雄厚,世界计算机的最新技术绝对集中在这几个人(指微软设计内核的人)手里。

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

晕啊,计算机是门涉及面很广的学科,操作系统就是计算机全部吗?我看不见得吧。我们如果看看Microsoft的发展轨迹,就可以看到它的”原创“其实也不是想象中的多。Microsoft本身就不是靠先进的技术起家的。我想让《箴言》举一些Microsoft的最新的而别人没有的技术,恐怕也不容易吧。(也许还锁在比尔的保险柜里,我还不知道,呵呵)


尤其现在很多的程序员,都被误导从MFC着手,这样很容易形成封闭式的思维模式。

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

奇怪了,从MFC着手怎么就算被误导了?怎么从MFC入手就容易形成封闭的思维模式了呢?MFC恐怕应该算是对Win32 API封装最薄的了吧。而对MFC的研究你迟早要深入到源代码一级。你想想,Microsoft一向对源代码视如珍宝,它还是公开了MFC的源代码,为什么?很明显,微软明白MFC的封装是不完善的,它几乎是鼓励你自己做扩展了。难道非要我们哪怕打开一个窗口还要做那些手工编写资源文件,注册窗口类,大的CASE语句处理消息分发,消息循环那些”杂事“?我记得当初我对在Borland C++ 3.1下面不得不做那些蠢事恼火的很,甚至还写了个小程序用来生成那些千篇一律的代码。

所以我认为用MFC不但不会形成封闭的思维模式,恰恰相反!呵呵,如果MFC的设计者看到《箴言》对他们的评价不知会做何感想了。


在你能够成为高级程序员的时候,对MFC这些是不屑一顾的。

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

从对C++威力利用的角度或者从纯面相对象的角度看,MFC的封装确实不算最高明,但是如果你去看看它的源代码,闪光点还是随处既是的 。不知道《箴言》是不是想到过用C语法的宏来构造消息处理系统呢?我想不是对系统和语言都有深入了解的人,恐怕是不会想得到吧。微软作为一个大公司,里面有很多牛人很正常。在research.microsoft.com上有一个正则表达式库就是微软一个牛人用C++实现的,现在正则表达式库不希奇,但是微软那个牛人是用C++模板来构造自动机的,确实不失巧妙,据说性能还不错。

所以,MFC能够在微软的产品里存在这么多年,不是没有原因的吧。呵呵,我也希望我有能够对MFC不屑一顾的那一天啊:-)


正确的程序设计思路是成对编码,先写上面的大括号,然后马上写下面的。
当你要用到一个内存的时候,写一个分配函数分配一块内存,马上接着写释放这块内存的代码。

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

呵呵,对于大括号的问题,不同的编码规范有不同的定义,我想没有必要强行规定吧,至于《箴言》所说的便于查找,我看这个理由也站不住脚。稍微好一点的编辑器,比如GNU Emacs就支持括号的自动匹配,哪里用的着自己去找,不累啊。

至于说到内存的分配和释放,这是C/C++永恒的话题了,如果就如《箴言》所说的这么容易解决,也就不会被讨论这么多年了。你想想,很多时候都是在这个地方分配了内存而在别的地方释放,而这个别的地方有可能是在别的人的程序里。比如在Linux网卡驱动里分配的内存,就可能被很多其他的高层协议处理程序释放(当然,对于一块特定的内存,只会被释放一次),这时你怎么才能做到成对编码呢?


集成环境的TAB首先要设成8, 因为TAB的基本定义就是8,而现在的VC把它设成4,这样你编出的程序放到一个标准的环境里看的时候就是乱的。

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

应为我习惯了TAB是4的风格,但我还是做了试验,在TAB是4的VC环境里,写的代码在UltraEdit打开一点问题都没有。不知道《箴言》是用的什么标准环境,呵呵~~~


如果写出来的代码大家都看不懂,那绝对是垃圾。

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

我觉得这话可以和这句话类比,如果写出来的论文大家都看不懂,那绝对是垃圾。 呵呵,怎么可以这么武断哟。什么代码是垃圾?我想对于一个大家都知道的思想而你用别人看不懂的代码表达,那才是垃圾。工作中这种代码是十分有害的,不利于维护还会隐藏很多bug在里面。这里可以举个例子,有个网站收集很多以难懂著称的C源程序,有些还是在一个什么难懂程序比赛里得奖的东西。然而我下回来后,很多都在现在主流的编译器里不能成功编译了。


比如你从Linux中或者网上下载了一个”烂“程序后。

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

看来《箴言》是把Linux中的程序和那些”烂“程序相提并论了,我就不懂它的这种结论是从哪里来的。怎么它就看不到Linux里大量优秀的源程序呢,呵呵,我都不愿意多说了,大家都有自己的眼睛。


(Linux里)那些程序还在不断的升级,那程序还会有新版,如果你把他拿来看一下,对你来说其实没有什么价值。

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

没有价值?!别人我不知道,但我自己的事我明白,我可以坦率的对大家说我从Linux/BSD的代码里获益良多。各个方面,算法,系统架构,硬件等等方面,都可以从这些优秀的代码里获益,希望大家不要听信《箴言》里的说法,有空根据自己的兴趣去多读读源代码,保证获益不浅。就以超级解霸擅长的东西而言,Linux社区里一些播放器,性能就十分出色。而且免费,源代码全都有,只要你水平高,想怎么改就怎么改,多好啊。不知道《箴言》里说上面那些话的用意是什么。


VC自动给你生成一堆堆的垃圾框架,相对于网上Linux程序来说,它可能更”臭“一些。

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

呵呵,又是赤裸裸对VC的打击,老实说我确实很少听人说VC生成的是垃圾代码,更很少听人说这些代码很臭。难道非要用纯C去给Win32编程才香吗?


Linux是个操作系统,很厉害呀!其实那些程序你拿回来,耐心的去读它,会发现,它里面乱的很。

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

难道操作系统能够和普通的应用程序相提并论吗?我就读过Linux里面网络部分和文件系统部分的源代码,我怎么没感到”乱的很“啊。操作系统程序直接架构在硬件上面,当然和普通的程序不同,你硬要用普通应用程序的写作眼光来看操作系统的编码,我想这只能说明你的方法没有对头。实际的情况是,Linux里面核心的代码已经经过了多次提炼,有很多好的东西在里面。而一些牛人对于C和硬件系统的深入了解而写下的程序确实能够使后来人获益了。更别说一些特殊的场合,那些大牛们在没有办法的情况下写下”脏“的代码都会给出说明,看着那些充满幽默的注释,往往你会会心一笑,从心底佩服那些人的水平和率真。


所有程序都是调试出来的,不是写出来的。

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

呵呵,不先写出来你怎么调?再说了,也不是什么系统你都可以慢慢去调的。现在的很多大型软件代码量十分庞大,哪里有可能让你在汇编状态下慢慢琢磨,我想只有在那些很少的关键的部位才有可能吧。所以好的软件它们那些对效率十分敏感的部位才是在汇编状态下慢慢调慢慢改出来的。


int i;
extern int In[], Out[];
for(i=0;i<100;i++)
{
    Out[i] *= In[i];
}

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

呵呵,当心Out[x]溢出变负数从而于你的预期不符哦。


如果说哪个系统是编出来的,那它肯定会有很多性能方面的问题,包括可能有不可预测的各种各样的问题。

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

现在硬件告诉发展,很多时候性能的考虑已经放到第二的位置上去了。我们更多的是关注代码的可理解性。至于可能有不可预测的问题,我想什么东西都自己动手而不去用一些饱经考验的库,可能更遭。以我为例,我在用了STL后,对于常用数据机构的使用就不再出现指针问题了。


有可能完全是编译器的错误,也有可能因你程序里面增加了什么,而对程序产生干扰。

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

记得在刚开始编程的时候,经常抱怨编译器有问题,可是越到后来这种抱怨就越少了,几乎都没有了。就比如现在吧,如果你给Visual C++打了最新的补丁后想要找个bug出来,保证不容易。至于在程序里添加了新东西而导致新的问题,这点很正常,所以才需要一些源码控制软件来跟踪软件的修改。


MFC里很常见的一种设计思维,就是任何一个东西,只管创建,不管释放和销毁。这种思路是现在很多程序员做的程序没用几下就会死机的原因。MFC让你这么做,就是让你永远成为不了高手,你写的程序永远不可能稳定。

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

我在MFC里编程也有几年了,怎么就是第一次听说任何东西都是只管创建,不管释放和撤销呢?还有《箴言》怎么知道MFC就是让人不能成为”高手“了呢?呵呵,我好同情那帮设计MFC的人啊,居然有人说用MFC写的程序永远不可能稳定。


任何一个软件一定都是跟一个平台相关联的,脱离平台之上的软件几乎都是不能用的。

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

不知道《箴言》所谓的平台只什么,开放源码领域里很多程序都是跨操作系统和硬件平台的。为什么我能这么说?很简单,C可以跨硬件平台和软件平台,很多库在设计的时候就考虑到了不同的软件平台,所以在这样的基础上写出跨平台的软件再直接不过了。再比如,Borland就声称Win32上的Delphi程序几乎不用修改就可以跑在Kylix/Linux上。


一个很普通的程序员,如果他能够考虑到将程序分成好几个动态库,那么他的思维就已经有点开放性了,就已经不是MFC那些思维方式了。 =========================================== 软件用DLL实现就叫做有开放性思维了,原来这么简单啊,呵呵。 MFC好像重来也没有限制过你在程序里用DLL吧,连动态连接的MFC程序里都要求目标系统里有MFC动态连接库啊。VC向导里好像也有生成DLL的Wizard吧。


你看MFC的思路,那就是一层套一层的,要把所有的类都实现了,然后继承。他从CWnd以后,把所有的东西都包含进去了,然后组成一个巨型的类。这个巨型的类连界面到实现系统都包括在里面。这时你怎么拆?根本没有拆的方法,这就是封闭式思维。

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

继承,当然就是一层套一层了!MFC作为一个Framework,实现很多的类有什么希奇的?我们看看MFC的类图,好像在CWnd下面还有很多继承关系吧? CWnd作为对Win32里window的抽象,其复杂性是天生的,因为win32的概念里窗口本来就是个复杂的概念,里面设计各种各样的资源的管理,自绘,消息处理等等。至于说道拆分,我看很容易啊,我实现个新的窗口类我就从CWnd派生,不是窗口类而要支持什么Serialize之类的,那么我就从CObject派生。要么我就干脆自己实现自己的类层次体系。像BCGSoft的基于MFC的界面库就是大量的用自己的类去替代MFC,也没听他们抱怨说MFC没法扩充啊。


每个小函数出错的几率就会很小,那么组合起来整个程序出错的几率就很小。

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

软件设计的一个讨厌的地方就是有时它不是简单的1+1=2,我们常常会说联合调试,如果真的小部件OK,大系统就OK,我们干吗还需要联调啊。对于函数拆分的原则,可能没有个普适的并且能付诸实践定义。但是在设计的时候心中尽量想着软件工程里面的那些原则,比如什么松耦合之类的总是没错的。


动态库,包括它的代码和数据都是独立的,绝对不会跟其他的动态库串在一起。但是如果你把所有功能放到一个EXE工程里,他的数据和代码都是放到一起的,最后产生可执行程序的时候就会互相干扰。

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

谁说不会相互干扰的,别忘了,一旦DLL被加载了,它就会映射到你的程序地址空间里面来。一度大家讨论的很多的DLL注入大法不就是DLL干扰宿主程序运行的典型吗?当然这种干扰有良性和恶性的区别罢了。


通用软件是一行一行编出来的,而且每一行的结果要到达一种可预测性。

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

从《箴言》的上下文理解,好像是不推荐利用一些现成的库而崇尚什么都自己写。别忘了,很多有工业强度的库,比如STL是饱经考验的,而开发工具生成的代码都是那些很死板的东西,我倒是认为人工去写不仅效率低,而且反而在不经意间容易出错。如果这么不信任开发工具,干脆自己写机器码算了,但是这可能吗?


也就是从症状就能判断出哪些代码产生了问题。

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

如果能够从软件的症状就可以知道哪些代码出了问题,我想微软也就不会要在它的错误代码报告里包含一大堆系统映象数据了。尤其是软件的复杂性提高后,问题产生的原因往往是复杂的,交织在一起的。高手相对于普通人的一个显著标志就是对出现的问题能够直接或者借助调试器的情况下准确定位。当然了,如果程序规模不大,还是可以根据症状而定位出问题的代码的。


所有的代码必须是经过测试的,必须是一步一步调试过的。代码在汇编一级是怎么执行的,你都得非常清楚。

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

所有的代码都经过测试,这是理所当然的,然而对于经过测试的代码是不是要一步一步调试。我想是不必要的,都没有问题了,还调什么啊?再说,现在软件规模这么大也不太有时间让你一步一步调试,一些不提供源码的第三方库你不会都在汇编一级慢慢调试吧,呵呵。


作者相关文章

其它相关文章:



对该文的评论 人气:7888

nlm_wboy(2004-1-8 19:00:42)

老梁的面是窄了些,可能跟它的书名有关,有很多争议的地方,但搂主既然如此厉害,怎么不挤点时间也编个心得体会,让俺们这些虫虫们提高提高哦。

wowocock(2004-1-7 21:43:56)

看待事物要有2面性,不过没办法,中国人就喜欢自己骂自己
所以一个中国人是龙,十个中国人就是虫,阶级斗争搞了那么多年,还在自己内讧,
讽刺,漫骂,可悲啊。。。。。。

chinacommander(2004-1-7 9:40:14)

对于这种书,我在书店看了一下,我觉得根本没有必要买。梁的视野太过狭小,对计算机领域的全局根本不了解,妄认为底层才是计算机高手,而他错了,我觉得真正的高手是那些“图像识别,语音识别,机器视觉,模式识别等”方向,这些人才有可能的图灵奖(计算机的Nobel奖)。有兴趣的人可以看看www.acm.org图灵奖得主的简历。

梁,顶多是一个不错的底层程序员而已。哈哈

xhunanpp(2004-1-7 9:26:06)

疯了```疯了```,一群疯子 ,

nbcool(2004-1-7 9:00:14)

评者的评论有很多可取之处,但也存在很多不足,但从言语之间,感觉到评者并不是从事底层开发的,也没有操作系统开发的经验,在许多方面看问题的角度和层次与梁先生并不相同,才会有如此多的不满,建议五年之后再评.

liaowei_2000(2004-1-6 20:05:12)

梁,呵呵,就是一个业余的高手罢了
作为一个程序员,首先要具备严密的逻辑分析能力和严谨的态度
而梁满篇”箴言“仅仅是经验之谈而已,骗骗小孩子可以,实际中没有多大的用处,

这些道理不说自明,我想只要是个明白人,动动手和脑子,自己会有更多的深刻体会

~还不如买本c++ programming language 吧,比较一下高下立出,什么才是箴言

twlx_0(2004-1-6 19:22:47)

《箴言》这本书我稍微看了一下,我个人觉得讲的还是有一些道理的,
要不然也不会有这么多跟贴了!!

不过书这种东西,本来就是不可全信,带有批判性的去看待,我们就能提高的更快了!!!

老梁 是个牛人
楼主 也不错

rubyhy(2004-1-6 18:16:36)

梁TMD就是大骗子!我2001年买的正版解霸竟然不能用了,老说编解码器过期了!

Purpleendurer(2004-1-6 13:52:56)

我看过一篇本书作者写的关于在实模式下访问4GB存储空间的文章, 其中有基于BC++的演示程序, 说实话写得不怎么样, C++的许多特性没有用上.

不过我看到是别人录入的, 希望是录入者的错误....

luoshayu(2004-1-6 13:18:57)

rtm
我没有说我是高手了,我很烂的,你千万不要这样说我,我也早不在豪杰做了,我之所以这样说,是因为我还是尊敬老梁的
不过我不会像某些人一样随便的去攻击别人的
你能保证你所说的每句话都是正确的吗,就算是正确的也又仁者见仁智者见智的情况
善意,激烈的批评谁的欢迎,但是恶意的攻击就是不正确的了
批评没有关系,可是恶意的攻击就是人品有问题了.
老梁所说的就是书中的内容,没有要告诉你读完他的书后会教会你其它的东西,什么叫箴言,自己的一点心得罢了,告诉你的是一个老程序员的经验而已.并没有欺骗你啊,干什么那么愤愤不平了

naturer(2004-1-6 12:17:17)

教教我~:(

smartcard(2004-1-6 11:41:12)

首先我先说此书我认同的方面:

  1. “软件行业将很快成熟,门槛越来越高。”没错,随着软件行业的发展,想成为成功的软件企业,投资越来越大,门槛越来越高。而且,软件工程师这个行业也随之成熟,最后将和传统行业中的工程师成为一体,变成一个可以干到退休的职业。
  2. “规范的格式是入门基础。”没错,既然程序员摇身一变,成为软件工程师,那么就要达到“工程师”的标准。我出身工程师世家,对这个有些心得。首先,要遵守行业行为规范(洋文叫SOP)。没有规矩,不成方圆。我们是做产品(梁老师所说的“软件”),稳定压倒一切,靠质量取胜。那么一定要符合行业规范,企业规范,以及生产规范(也就是代码规范)。现在已经是21世纪了,太空时代早就过去,网络时代也经历了10年,什么功能现在做不出来?大家竞争的早已不是功能,而是性能(看谁做的更快,更高,更强)。其次,作为工程师,责任心是必需的。我就不多说了。
  3. 开放性思维要扩大知识面(非原文)。我认为,更重要的是打好基础。其实梁老师所说的知识面,念书的时候基本都讲了(我就不明白,好多学生说学校学的东西没用),比如CPU结构(计算机体系结构),操作系统原理,软件工程,不是都有课程么?一个练武的,连马步都扎不牢,从来不压腿,只会一些花拳绣腿能行么?
  4. “雄心的一半是耐心”,呵呵,此言不假。年轻人切忌浮躁。
  5. 再说说这本书排版。页边留了“读书笔记”空白,大大方便了我这种特喜欢加注解的人。以前我念书的时候,从来不写读书笔记,觉得那是浪费。但是工作后,发现,写读书笔记是一种非常好的总结经验的方法。可惜,我都硕士毕业了才开始写笔记。

说了一些正面印象,我再说说负面印象。

  1. 高手成长的几个阶段我不敢苟同,梁老师他忽略了一点。计算机业,说到底,是一种辅助行业,纯的计算机公司很少(微软,甲骨文这样的公司),他多多少少要依附在某个主业上。比如,通讯业,金融业,制造业,商业等等。与之产生的是通信软件,金融软件,ERP软件等等。作这些行业软件要掌握的一方面是计算机技术,一方面是相关行业的业务。只有两方面都精通,并及时更新知识(行业知识更新也很快),才能称得上合格的行业软件工程师,才能干到退休。不掌握行业知识,如何设计系统?
  2. 梁老师说选择VB,MFC作系统的人是初级程序员,只有用C的人才是高手,这种想法又有点像还没毕业的大学生了。做产品,成本是很重要的。选择哪种开发工具是有商业上的考量的,最难使用的工具往往做出来的产品成本最高。梁老师对MFC一顿臭骂,但是MFC能打遍天下无敌手,成为行业标准,的确有他生存的理由。我最近写一个程序,win32平台,全部调用API,不使用MFC,其它还好,但一涉及到界面,就把我累着了,随便画个控件就要写无穷的代码,相比之下,有个MFC多省事阿。
  3. 总体来看,梁老师视野过于狭小,比如对嵌入式系统的程序开发的评价。估计梁老师只见过单片机吧。我现在所在的产品就属于嵌入式系统。一般来说,我们一个小模块差不多5000到10000行代码,一个大模块由7到10多个小模块组成,整个系统由30多个大模块构成,算算我们的系统有多大吧。不说别的,我所在的这个大模块中,仅仅归档了的调试工具程序就有18万行。整个系统的接口规范5000多页!全部是C代码,开发工具是,呵呵,UltraEdit,没有用集成开发环境。梁老师视野狭小还表现在对linux的评价上。linux从Unix一脉相承,不是面对终端用户,而是面对开发人员的,和windows各有特点,不好比较。而且,现在早已是win32天下了,怎么还总说win9X呢?还有就是对C++的看法,很多都太初级了。
  4. 对高手的定义。首先高手这个称呼就非常业余,我更认同“专家”这个称呼。另外,不是对底层深入了解的人才是高手。现在一个计算机系统很复杂,所以有分层的概念。只要在相应层次中成为专家,即可为高手。再说说超级解霸,他的技术核心的核心是什么?是编解码算法,比如jpeg算法mpeg算法等等。这些核心掌握在谁手中?数学家,图像处理专家。这些人根本就不了解什么windows平台阿,debug方法阿,人家靠的是过硬的数学基础。程序员只是用程序实现了人家的数学公式,梁老师干的再好,一辈子也是给jpeg算法提出人打工的(人家有专利阿)。所以说,术业有专攻,不是会debug的人才能称专家。我个人感觉,数学功底好(不是说那些解题专家),才有成为专家的可能性。越到高处,越觉得数学分析能力差。
  5. 有一个词,“玩”,我感到有些不妥。既然成为一个软件工程师,就要有严谨的态度,并有一种职业自豪感。“玩”和工程师这个名称不搭配,显得太业余了。书中还有很多地方显示梁老师“业余”的地方,比如什么调整键盘响应速度。呵呵,我们公司大部分时间是在开会,写文档,调整键盘响应速度有什么用?好不容易写了几千行程序,又要把他申请专利,又是一堆文档。现在这社会,公司手里没有几百个专利,怎么和世界级大公司竞争?
  6. 再从书的内容上说,我总觉得很多地方讲的不够透彻。有的地方我懂,他讲了很多也没超过我的知识范围,而且我还能说出哪本书讲的比他还透彻。有的地方我不懂,可是梁老师点到为止,搞得我很恼火。还有就是不列出参考书目。其实有些地方(比如计算机体系结构,操作系统),梁老师是“参考”“引用”了一些书的内容,可是,引用的地方从来不注明,不得不说这是个遗憾。也许这是非科班出身的缘故,不讲究这些吧。

总体来说,梁老师眼界有点窄,层次还是一个程序员。

coolpine(2004-1-6 9:24:04)

作者是个高手,当然,也不见得那本书就差,各抒己见而已

Winner25(2004-1-5 21:55:24)

呵呵!看啦书或买啦书的人,我想有一部人对梁先生所说的技术是不会的!当然我也不赞同梁先生的一些看法
当然也有很多人是一种批判的态度去读这本书的!
梁先生的有些话是有些欠妥,但是想一想这是他自己的真实看法!
能像楼主写出这么多感想也不错哟!
这里面很多人都是自诩为所谓的高手的!
还是多做点自己想做的或者有意义的事吧!

doocoo(2004-1-5 21:35:37)

有句话说,中国人,一个人是条龙一群人是条虫。错,中国人,一个人是条虫,一群人还是虫,但是,每个人都以为自己是龙。
看看网友们的精采发言吧。在法律问题上,比如宝马撞人案,慷慨激昂者有之,叹息伤感者有之,凭空猜测者有之,喊杀喊打者有之,还有一堆在一旁挖苦讽刺的。但是,十个网友评论中,能有一个讲到几个法律词汇,能有一个从法律的角度来剖析的,就已经算是谢天谢地了。中国自古以来就是文人的天下,笔杆子一动,黑的能写成白的,死的能写成活的。宝马是身份和财富的象征,在不患贫而患不均的中国,这种车撞死了人,惊动了一班文人,能不把你写死么?法律在民意的汪洋大海中飘摇,就像在文革中飘摇一样,不同的是,风向变了,但是法律仍然是一艘破船。
所以,当写了这么多年的梁要出书的时候,因为他不幸地出生于中国大陆,因为他不幸地有点喜欢夸夸其谈,立马就有人来为他“炒作”了。梁先生的书有几百页,本文作者没有逐字逐句地“DEBUG”,实在是不幸中的万幸

Powerkkk(2004-1-5 20:26:01)

仁者见仁、智者见智!
“敢于上下求索,敢于独立思考钻研”--支持老梁!!!

codecopier(2004-1-5 18:38:21)

丑不要紧,出来吓人就是你不对了!

丑不要紧,出来吓人就是你不对了!

... 此间省去 72 个(丑不要紧,出来吓人就是你不对了!)

丑不要紧,出来吓人就是你不对了!

beckz(2003-12-30 14:09:14)

我觉得这是今年我买的书中最烂的一本。

Desertfish2(2003-12-29 10:56:29)

哈哈,牛人碰到牛逼人物,大概不不免有些针锋相对。

梁有梁的优点和让人尊敬的地方,楼主还是很谦虚的,我还是很感谢楼主的言论。

大部分人其实很普通,会一些MFC,设计模式、懂一些操作系统。也没有非得要做什么高手。

其实高手本来就没法定义,梁偏偏弄了个"底层高手"把CSDN 论坛搞的乱轰轰。 把俺这小辈给震晕了,乖乖。闪 😃

typecheese12345(2003-12-29 2:01:24)

看到了中国计算机业的希望.

rtm(2003-12-28 8:31:39)

to fxiangh:
"linux是你一砖我一瓦搭起来的"

--------------
先去看看Eric.Raymond的大教堂与集市.

rtm(2003-12-27 13:05:13)

不知道国外的高手有过什么类似的书.
Brain.W.Kernighan写过指导编程风格的书,但是没有叫什么"高手"或者"箴言"
书名是"The practice of programming".
什么?我听见豪杰的工程师在说我们的梁总比Brain.W.Kernighan厉害得多!
好,I 服了 you.
这种书最好别被国外高手看见,可能被当成怪胎,中国特色的怪胎!

rtm(2003-12-27 12:59:08)

支持楼主.

rtm(2003-12-27 12:58:40)

如果说linux很混乱,是极度可笑的事情,复杂归复杂,和混乱是两码事.

rtm(2003-12-27 12:56:58)

to luoshayu:
豪杰公司的那位仁兄,楼主毕竟还是认真读了这书的,不会因为你的几句话改变大家的看法.
你提到你是豪杰公司的工程师,这没什么大不了的,小小的软件公司而已.
这样只会让大家觉得你更烂.

peon(2003-12-26 21:43:53)

梁的确有几把刷子!把自己的经验写出来给大家共享是件好事!
楼主觉得梁说的不对,就捅出来,也是应该的,难道就因为梁有名,梁就什么都是对的?

争论就争论,真的搞不懂有人又是什么论资排辈,又是人身攻击。

Korny(2003-12-26 12:37:48)

双方的争议缘由双方判断的标准不同
计算机领域范围之广已众所周知,几乎包含了所有的领域,要想一个人对所有领域都比较了解的话,那是有点难,所以梁对LINUX或其他领域的某点观点自然有些狭义,这无可厚非,更何况这楼主也是牛人,那仁者见仁,智者见智了。我个人对某些片断是这么理解的

1。“我就是程序,程序就是我”。这并不是走火入魔,而是有点像武侠小说里的人剑合一。虽然程序是CPU执行的,难道我也被CPU执行吗,是的,因为是你写的程序,自然代表你的思想,这种意识不要局限于几条指令,扩大到一个系统的构架,那这种观念将更明显,当然程序也成了软件
2。关于内存的申请和释放。大家都已明白,老梁要提醒我们要养成一个良好的编程习惯,比如括号的匹配,虽然  有些编辑器如Jcreator等会自动匹配,但如果没有自动匹配的环境而括号的嵌套多达10几层时,你会发现当初要。。。。当然这是个人习惯而已:)
3。你看MFC的思路,那就是一层套一层的,要把所有的类都实现了,然后继承。他从CWnd以后,把所有的东西都包含进去了,然后组成一个巨型的类。这个巨型的类连界面到实现系统都包括在里面。这时你怎么拆?根本没有拆的方法,这就是封闭式思维//
  这个我倒不认为是封闭式思维,现在好像许多人都喜欢开放,不喜欢被人束缚,思维是好的,但是有必要吗?如果喜欢的话,那不如自己用C写个MFC好了或是干脆从微指令到汇编到OS到高级语言都自己设计一套好了。说明了,是设计的层次不同而已,没有什么好争的,如果觉得别人设计的好或是方便,就拿来用好了,如果有牢骚,那自己设计一套嘛
常言道,辩则明理,但如果一方没有按客观标准来衡量对方的判断,而是按自己的意愿来衡量,那么双方就南辕北辙了

ckacka(2003-12-26 12:13:03)

####################################################

####################################################

那些无聊的家伙来这里。

http://www.csdn.net/Develop/read_article.asp?id=22924

####################################################

####################################################

w1w2w3w4(2003-12-26 11:24:56)

在下也看了但没看完。对本文作者的很多地方都完全赞同。如对书中MFC、高手的定义、初级程序员和高级程序员、程序员的六个层次、对linux的评价等都非常赞同本文作者的观点。
但对书中梁老的程序是调出来的却认为有一定的道理,好的程序确实是需要大量的调试测试的,但如果初期写就没能有一个良好的大观、高效合适的算法、扎实的软件硬件功底、良好的程序风格及好的技巧我看就算你再调还是一坨差程序。
至于老梁的所谓的用汇编、编底程才是高手的看法我和楼主的看法差不多,汇编确实是一个好东东是至今我都想学好的宝贝,可惜实践太少至今都是阿菜。至于所谓的驱动程序才是高手,即难才是高手,那它和一些解数学问题的算法、图像处理、人工智能、编译器、模式识别等等比起来呢,我看这些就完全就不亚于它而且有像一些解数学问题的算法那才是难,难到你可能再也不想编程序。那么那是否才叫高手?再请问如果一个编底程序很厉害能甚至能写微代码的人可以称为高手、那难道一个开发photoshop的人就不叫高手了吗?

liun02(2003-12-26 11:12:53)

to:{{{{林子大了 什么鸟都有
你自己出本书 看看有没有《箴言》卖的多?
这叫什么?
嫉妒
人家写了10年程序 你呢?}}}}

这是什么理论??写了十年程序能代表什么?是不是等你七八十岁的时候,也就是当你吃了七八十年饭的时候你做的饭就肯定比二十几岁的厨师会做饭???我去。

minotaurus(2003-12-26 9:37:58)

我还是在等,这位老兄写的其它章节的读书笔记,等待拜读中...

JohnsonPoon(2003-12-26 9:27:47)

从小先生就告诉我们,读书要:要取其精华,去其糟粕。
稍大一点,我们都觉得发表观点该:百家争鸣。
现在总觉得说话要:就事论事,切忌谩骂。

findmydream(2003-12-26 8:42:29)

其实,一个人是否讲卫生是否从他的谈话也可以看出,

很让人怀疑下面那位XX什么是不是很久未涮牙或者没上厕所了?

不管是智者还是白痴,不上厕所或不涮牙可不好啊!

呵呵

cdimp(2003-12-25 23:04:26)

有新意,充分体现了独立思考的精神,支持.

cdimp(2003-12-25 23:02:31)

有新意,充分体现了独立思考的精神,支持,

fxiangh(2003-12-25 21:58:47)

你好厉害,开口中国人,闭口中国人,往"中国人"上踩一脚.

我毕业时,还是dos,window31的时代,但我的业务方向是xenix,unix,informix,c,久而久之,汇编这类逐渐疏远,
看着书,让我想到过去,“当你要用到一个内存的时候,写一个分配函数分配一块内存,马上接着写释放这块内存的代码。”,这不是“幼稚”,即使是scounix讲师也建议这样做,"永远不要相信操作系统是完美的!!",我师傅改错
时给过我忠告,至于C++在某些条件下不用显示释放,这和他的框架有关;

Linux确实不是什么东西,他不过你一砖我一瓦堆砌的,代码到体系有其他系统的影子,把他神化,只显你浅薄;
莫"浅尝则止",这是梁苦心劝戒的.

jbczj(2003-12-25 21:55:19)

我看了很久这个论坛,但是极少回帖,首先搞软件的人都有些固执的因素在里面,二也觉得没有什么好说的,说什么呢,

曾经读了一个故事,说一个村里有一口井喝了其中的水人就要疯,村里只有一个聪明人没有喝,但其他人就说他一人是疯子,最后他也喝了井里的水,我不同的是我不会喝,但我可以装疯,所有我只看看大家的回贴,不发表言论,因为我知道世界是白痴和智者组成。
人们说过一句话:丑不要紧,但不应该出来吓人!
其实一个人有能力与否或智商的高低通过谈话就可以知道,各位是否知道鲁迅先生曾经说尼采说自己是太阳,而说尼采是疯子,我就通过这句话得出鲁迅先生没有尼采聪明!我通过梁的这本是得出,梁SB赶上了一个商业时机,计算机综合能力可以打75分,他个人很固执,坐井观天!!
具体的反驳帖主已经很详细了,关键是梁SB的方法论不好,以点概全。
梁的那本是我是在新华书店书架上看的,我有很多年没有买书看了,当然术业有专攻,我指的是在我从事的领域,商业管理软件开发领域。
通过软件开发发达必须要有一个商业的时机,他的播放软件就是赶上了一个商业时机,就象在DOS下的CCED,其实并不是说搞了几十年的软件开发就很不得了,因为一代人肯定比一代强,而他从事的仅仅是一个图象播放软件,但我也不希望因为这个讨论,让有误导之嫌的书销量增加,大家可以在新华书店书上翻翻就可了。
我对此书的看法有:
这个梁SB是看武狭入了魔?!
“我就是程序,程序就是我”。
我怀疑现在播放软件没有多大市场,是出一本书捞一把:
这个软件我从不买正版,我都是用盗版。
其他就懒的说了,我的实话实说,如果觉得好的人我认为还没有窥到计算机实际应用的门!

hb_longbow(2003-12-25 21:41:05)

刚刚看完《箴言》第八章。想不到有这末多的朋友都看了这本书,呵呵。
我觉得看这书就像和作者聊天一样,很亲切的感觉。
俺是玩ASM的,对老梁的“程序是调出来的”严重赞同。窃以为"内核优化"一章写得还比较地道。
好像书中有很多不够精确和严密之处,不过要在七八年的时间里掌握这末多技术,难能可贵。
本来想用这书学C的,昨天把SetHook敲进去,改了俩小时才编译通过。

TripleX(2003-12-25 18:07:46)

我觉得梁太不对了 大家都是混饭吃的 夸自己的东西没错 可是何必去贬低别人的东西呢?
gcc可是我用来混饭吃的开发工具之一 被梁贬低成这样 我想叫好也叫不出来啊 大家都多点宽容吧

wangao88(2003-12-25 16:12:04)

书买了,也看了,收获不少,不同意的也很多,尽信书则不如无书,作为读者我们应该有自己的脑子,认为对的就试着去做,认为不对的,就忘了他!如果国内高手都把自己的经验拿出来共享,而不顾及自己是否会说错,也是功德无量。

cocoboy79(2003-12-25 15:26:18)

读书要会读,取其精华,有些东西要看你怎么理解了。人家写本书也不容易,也用不着这样吧。
不过这两个人说的都一些道理,具体看怎么理解了。

yashio(2003-12-25 15:06:52)

梁老毕竟是dos出身的程序员
可以理解 呵呵

rujor(2003-12-25 14:59:42)

有一点我也不爽,他说linux没有值钱的技术,是从网上down下来玩玩的。ibm os2为什么不用了也不开放源代码。因为里面有会值钱的技术,活活。现在ibm不也是用linux了。我看他是踏到钱眼里了。不过我还是很佩服他的。

MoreBug(2003-12-25 14:53:34)

说白了,老梁是不希望大家都跑到linux平台上去了,那他的“X霸”还怎么卖啊?

JavaQueen(2003-12-25 14:41:56)

两个都是牛人!都支持!学习中................

wolfyang(2003-12-25 13:37:48)

哈哈,咬文嚼字阿
我买一本书哪怕我能看到一句对我有启发的话我就觉得他是本书!!
我买了,我也看了。
老梁错就错在他的每一句话都不是名言!!
至于mfc/gcc大家都以为自己搞懂了-----------哈哈学学老梁的开放思维吧!!!!!!!!
支持老梁

wolfyang(2003-12-25 13:36:35)

哈哈,咬文嚼字阿
我买一本书哪怕我能看到一句对我有启发的话我就觉得他是本书!!
我买了,我也看了。
老梁错就错在他的每一句话都不是名言!!
至于mfc/gcc大家都以为自己搞懂了-----------哈哈学学老梁的开放思维吧!!!!!!!!
支持老梁

wolfyang(2003-12-25 13:35:11)

哈哈,咬文嚼字阿
我买一本书哪怕我能看到一句对我有启发的话我就觉得他是本书!!
我买了,我也看了。
老梁错就错在他的每一句话都不是名言!!
至于mfc/gcc大家都以为自己搞懂了-----------哈哈学学老梁的开放思维吧!!!!!!!!
支持老梁

wolfyang(2003-12-25 13:33:42)

哈哈,咬文嚼字阿
我买一本书哪怕我能看到一句对我有启发的话我就觉得他是本书!!
我买了,我也看了。
老梁错就错在他的每一句话都不是名言!!
至于mfc/gcc大家都以为自己搞懂了-----------哈哈学学老梁的开放思维吧!!!!!!!!
支持老梁

wolfyang(2003-12-25 13:33:08)

哈哈,咬文嚼字阿
我买一本书哪怕我能看到一句对我有启发的话我就觉得他是本书!!
我买了,我也看了。
老梁错就错在他的每一句话都不是名言!!
至于mfc/gcc大家都以为自己搞懂了-----------哈哈学学老梁的开放思维吧!!!!!!!!
支持老梁

wolfyang(2003-12-25 13:29:08)

哈哈,咬文嚼字阿
我买一本书哪怕我能看到一句对我有启发的话我就觉得他是本书!!
我买了,我也看了。
老梁错就错在他的每一句话都不是名言!!
至于mfc/gcc大家都以为自己搞懂了-----------哈哈学学老梁的开放思维吧!!!!!!!!
支持老梁

wolfyang(2003-12-25 13:27:55)

哈哈,咬文嚼字阿
我买一本书哪怕我能看到一句对我有启发的话我就觉得他是本书!!
我买了,我也看了。
老梁错就错在他的每一句话都不是名言!!
至于mfc/gcc大家都以为自己搞懂了-----------哈哈学学老梁的开放思维吧!!!!!!!!
支持老梁

vcnewer(2003-12-25 11:30:59)

断章取义,吹毛求疵

myadvice(2003-12-25 11:19:25)

俺的哲学差得羞于提起,但是有句话似乎我还是死背下来了,对许多东西要去粗取精,但怎么个“去”怎么个“取”,大家环境不同,见解不同,有差异也是正常的,俺的做法是别人轻易改变不了我的大想法,我也不会去改变别人的见地。

lbaby(2003-12-25 10:49:35)

对牛人的见解,俺向来是认为对的就采纳,不对的就当没听.
不过,我觉得,一个人至少要为他所说所作负责才对,
另:下边的结论是错误的:(学过概率的人都知道,虽然俺才考了28分):


每个小函数出错的几率就会很小,那么组合起来整个程序出错的几率就很小。
===================================================================

pinel(2003-12-25 10:19:40)

同意楼主的大部分观点。

haha886(2003-12-25 9:37:39)

刚才的是气话。我感觉我距离这些大家很远。 平时也很少和别人交流什么思想,所以有这些书不错。比如人件,人月神话

haha886(2003-12-25 9:35:50)

毕竟写了,毕竟说了自己的看法,总比那些高深莫测,不漏声色的对大家有好处

Ailong(2003-12-25 9:27:22)

喜欢买就买,不喜欢买就不买,总不会是你的公司把他当教材逼着你学吧??废话一堆的人,有几个人真正看过,真正悟过编程行业的“道”呢?

MMDD(2003-12-25 4:30:52)

"人,只要开口说话,肯定难免有所“疏忽”(说不定还只是作者自己特定的习惯说法被别人所误解呢)。"
我不统一这个说法,书是给读者看得,因此就应该表达的清楚,将作者的原意尽量准确的传递给读者。为方便读者,那你的表达方式就应该改遵循标准,就应该用大家的表达方式,而不是用自己特定的表达方式,当然如果你要说的东西还没有较统一的表达方式,或是认为自己的习惯说法更好,更容易理解,那也没什么关系,但一定要解释清楚,否则让读者猜的话肯定会误解。外国的书就做得不错,与别的书籍有不同的表示方式时,都会解释得很清楚。

我说的只是上面的那句话,没有说梁自己特定的习惯说法让人产生误解的意思,其实这本书我也只是在书店随便翻了一下,看了一些章节,觉得还不错。
楼主的意思只是对作者的某些话有不同意见,说出来大家讨论一下,并没有“互相攻击,互相践踏”的意思啊。怎么不允许有不同的声音呢?

cnswdevnet(2003-12-25 4:17:32)

再回一次,免得有的人不服。(下面“作者”一词,指“箴言”的作者)

1。作者对MFC, Linux, GCC... 认识太浅薄了。//大错特错,作者所说用MFC的人只是说用MFC的入门者和停留在这一级上的人,这些人往往只会做做界面,写一些没什么实际功能的代码。而不是指对MFC构架和实现进行深入剖析的人。

-- 简单一个例子,你认为如果作者“对MFC构架和实现进行深入剖析”,他会说出“MFC里很常见的一种设计思维,就是任何一个东西,只管创建,不管释放和销毁。”这样的话吗?
-- “(Linux里)那些程序还在不断的升级,那程序还会有新版,如果你把他拿来看一下,对你来说其实没有什么价值。” 我无语。。。建议把作者关于Linux的话放到某Linux版去,看人家真正“对Linux构架和实现进行深入剖析”的人,是如何评论的(假设别人有这个兴趣),看人家的道理。
-- “它也还是GCC,绝对不会成为Visual C++那样能商业化的软件。”这句话虽然没有明说GCC是无用的垃圾,但意思是很明显的。我可以告诉你,GCC比很多商业编译器都做得好得多,无论是标准兼容性,还是优化性能上,还是夸平台上(证据我就不写了,累,你爱信不信)。恐怕GCC唯一可以肯定比任何商业化的编译器“差”的地方,就是它是完全免费的(如果你认为免费是缺点的话)。
-- 作者对Linux和GCC等,所知几乎为零(因为用过的都不会说出他那样的话来),就敢做出那些断言,真是够“独立思考”的,也真够“敢想敢做”的。哈哈。

2。作者的很多断言毫无根据,误人子弟。//你说他的哪些断言毫无根据,那你的这几个断言有哪来的根据?呵呵,稍稍别生气。有种你批批Bill盖茨,人家才不鸟你。人说十年磨一剑,一个做过十年的人说出来的话俺不说。说对的我点头,说不对的我不听,但我不会去批(除非我有万分把握)。
-- 我是就着这片文章说的,根据在这篇评论里,秃子头上的跳蚤,还用我说么?
-- 我不妨给你copy/paste几个例子:
任何一个软件一定都是跟一个平台相关联的,脱离平台之上的软件几乎都是不能用的。
如果写出来的代码大家都看不懂,那绝对是垃圾。
Linux是个操作系统,很厉害呀!其实那些程序你拿回来,耐心的去读它,会发现,它里面乱的很
你看MFC的思路,那就是一层套一层的,要把所有的类都实现了,然后继承。他从CWnd以后,把所有的东西都包含进去了,然后组成一个巨型的类。这个巨型的类连界面到实现系统都包括在里面。这时你怎么拆?根本没有拆的方法,这就是封闭式思维。

-- 上面只是随便paste几个,不局限这几个。
-- 为何说这些话是毫无根据,误人子弟?看这篇评论,我就不重复说明了。

3。原来以为作者在底层编码上应该是个高手(都是那些不负责任的媒体惹得),现在这一点也要打个大大的问号。//你想从这本书里面得到什么?本书不是跟你讲底层编码的,作者没必要在这方面给你交待他有多强。是不是把解霸的全部给你,你才觉得梁厉害啊?(呵呵,人家才不干)
-- 你这个话,我都不知道怎么回。哭笑不得。

看看这句“当你要用到一个内存的时候,写一个分配函数分配一块内存,马上接着写释放这块内存的代码。”我的天,一个C/C++熟手都不会说出这么“幼稚”的话。//这句是让程序员养成把分配后且用完的内存释放掉的习惯
,可是你把他理解错了,呵呵。一个人的眼光不是正的,看出来的东西自然不是正的,呵呵
-- 呵呵。恐怕是你以为我把他理解错了,而不是我把他理解错了。
-- 写过非hello world级别程序的人都知道要“把分配后且用完的内存释放掉”,这一点没有疑问,根本不用他说。问题是怎么做到这一点。作者的“箴言”说了,“写一个分配函数分配一块内存,马上接着写释放这块内存的代码。”。这是很“幼稚”的说法,在很多比较复杂的情况下,你不可能这么做。
-- 举个例子,一个C/C++熟手都知道,在不 简单(trivial)的程序中,内存分配和释放在空间和时间上往往是脱节的,这种情况下,写内存分配的时候不可能知道where / when 写内存释放。

我们需要看到的是这些人说的话对我们有多少好处;而不是像一部分人去挑错,然后再一番批驳……
-- 挑错?如果是小毛病,你自然不会感到尴尬;如果别人对错误的指出让你觉得下不了台,那就不是小毛病。

这样的高手箴言还是咱们中国人自己藏拙吧。还好这世界上除了中国人会中文的也没几个,否则不小心让外人读了,中国人可就丢大脸了。”
看来这样的人对外国人的敬仰真是……——到了无法言传的境界。
-- 从我的话能推出“看来这样的人对外国人的敬仰真是……——到了无法言传的境界。”,这样的逻辑又是超乎我的思维之外了。

但是即使你认为人家的东西不好,不能给你什么好处,也应该先说:“无论怎么样,首先谢谢你写了这么一本好书!”
-- 认为不好,表面上却还要喊好,这种虚伪自己藏着好了,还好意思拿出来显波。😄

——从小学到初中到高中到大学……难道都从来没有在学习英语的过程中学到过类似上面的那一句话么?这可是日常交际用语。如果一个简单的“Anyway”的道理都没有领悟的话,我只能对这种人说:
“对他人最起码的尊敬都没有,不能不说是做人原则上的一种遗憾。”
-- 什么是起码的尊敬?指出错误,就不是“起码的尊敬”了?认为不好,表面上却还要喊好,这才是尊敬?你若要把虚伪和尊敬划等号,恐怕是你还不了解尊敬的涵义吧。。。

难道除了互相攻击,互相践踏外,真得什么都没有了么?
-- 指出你的错误,也许会让你觉得没面子,但那不是在攻击,践踏你,而事实上是在帮助你;不过,你得有一颗平和谦虚的心去承认和接受自己的错误,帮助才可能有效。别人的话是诲人还是毁人,完全决定于你自己。
-- 说一些毫无根据歪曲诬蔑的话,意在把别人搞臭,那才是攻击和践踏。

henyiwen(2003-12-25 2:38:33)

别的不说, 梁先生对Linux下的软件的评论给人无知者无畏的感觉. gcc是真正工业重量级编译器, 光源代码就有几十兆, 但给梁先生一说就跟玩具似的. Linux下的软件绝不是什么"烂程序", 高水平的代码比比皆是, 不知梁先生看过多少就得出"烂"的评语?

ckacka(2003-12-24 22:59:43)

支持梁先生……
鄙视那些鸡蛋里面挑骨头的人。

人,只要开口说话,肯定难免有所“疏忽”(说不定还只是作者自己特定的习惯说法被别人所误解呢)。
我们需要看到的是这些人说的话对我们有多少好处;而不是像一部分人去挑错,然后再一番批驳……

我相信很多人都听过余世伟先生的讲座吧?余先生在讲座之前就说了,他不指望它所说得对大家都有用,但是如果每个人在这几天的讲座中能够学到一对自己有用的话,那么余先生就很满意了。

换到这里一样。而那些认为别人说的话、做的事都不能让自己满意的人,恐怕是自己的问题了吧?因为我实在想不出一个人有什么资格随时随地地漫天责。
——难道连“三人行,必有我师焉”的道理都不懂?

再换个角度。如果你真得从这本书里面学到了什么的话,是否应该先存有感谢之心呢?
有的人动不动就说:
“这样的高手箴言还是咱们中国人自己藏拙吧。还好这世界上除了中国人会中文的也没几个,否则不小心让外人读了,中国人可就丢大脸了。”
看来这样的人对外国人的敬仰真是……——到了无法言传的境界。
但是即使你认为人家的东西不好,不能给你什么好处,也应该先说:“无论怎么样,首先谢谢你写了这么一本好书!”
——从小学到初中到高中到大学……难道都从来没有在学习英语的过程中学到过类似上面的那一句话么?这可是日常交际用语。如果一个简单的“Anyway”道理都没有领悟的话,我只能对这种人说:
“对他人最起码的尊敬都没有,不能不说是做人原则上的一种遗憾。”

难道除了互相攻击,互相践踏外,真得什么都没有了么?

NeutralEvil(2003-12-24 21:02:08)

我倒觉得这本书可取的地方是在微观上,如果在宏观上信了老梁的话,嘿嘿……

thilon(2003-12-24 20:10:42)

我的天啊,好像评论的过了吧,不管怎么说,读这本书总比读那些昂贵又满处错误的这个教程那个通的好吧。梁先生的这本书至少从宏观上给我们指了条如何成为高手的路。
要知道唐僧西天取回的经书不也是有残缺的吗?

luoshayu(2003-12-24 17:44:30)

呵呵,大家仔细看看楼主的文章啊,太可笑了
简直什么都不知道
大家看好了,这就是梁总(我在豪杰公司呆了好长一段时间,所以这么称呼)的书里提到的初级的阶段的表现
仔细研究研究吧
找找自己有多少和他相似的地方
然后改进,估计离高手的境界也就进了一步了

zwq78(2003-12-24 16:32:27)

同意作者,这本书有些论断还是显得有点武断的。

minotaurus(2003-12-24 16:08:18)

第一章的读书笔记俺看了好几天了,第二章的读书笔记写好了吗?正等拜读......

WalkWorld(2003-12-24 16:03:33)

不过我觉得国内的牛牛都把自己的经验拿出来交流,真是一件大好事!
大家可以讨论技术,但是不能太偏激!
不管书的内容如何,我还是很欣赏梁大侠的做法!

WalkWorld(2003-12-24 15:57:21)

看了这篇评论真是大快人心啊!快笑死了.
其实里面的有些话还是有些道理的.
错就错在作者的定位不对,他把自己看作了编程高手!
第一眼看到这本书很想买,前天去了书店仔细看了看,觉得没必要了,wuwu

da_yu(2003-12-24 15:46:33)

所以你别听这些大瞎们成天在网上吹,要实际看看他们到底有几刷子再说。譬如我在网上
看了吐沫心子乱飞介绍某某书如何如何优秀的大话之后,一定要去书店静静地翻它半天,才
肯最后掏银子,哪怕它比DEARBOOK贵不少也罢。新年来了,准备用奖金购书的,小心哟!

starfeng(2003-12-24 14:14:41)

to 梁:
不出书的时候,我是十分敬配
书一出来,我只剩了一分

befree(2003-12-24 13:57:38)

原来是这个人写了这么本书
误人子弟,做十多年程序很牛?我自己也是,并不觉得。
bill老兄就不爱写程序的书,c++的作者同志写c++的书,值。
他开个公司,做个有人买的软件就乱说话,自毁清名。
“高手箴言”?口气有点大,不过也符合咱国人的好名之风。

kylinux(2003-12-24 13:56:41)

忍不住要多说两句了,分配内存的事不要老是纠缠不清吧,要把这个主题讲透怎么也得要个把章节吧。
我还是一直把《箴言》当散文来读,要按教科书的标准来评价恐怕疑点多多哦。
我主要工作也是Windows下底层开发,和老梁有些相似,功力可就远了去了,所以总的来说这本书对我来说很有启发,很同意楼上的评语:“这是一个有独立思考钻研能力,敢想敢做的程序员的十多年心得”。

希望老梁继续《箴言》系列的写作,我支持您~

nju011221189(2003-12-24 13:39:45)

总觉得这本书里面的东西一个本科生都能说出来。真搞不懂老梁都那么多年的经验值了,怎么还像一个年轻人那样说话不负一点责任。
诚然,老梁是一个高手,但是高手说话更应该慎重,一不小心就会误导很多像我这样的学生。
老梁对Linux、GCC看得也太低了,好像只有你喜欢的代码才是好的,别人的都不行。真觉得莫名其妙。人家有自己的哲学思想,我们在这里妄加评论,这会让人笑话。

YuLimin(2003-12-24 13:21:51)

努力学习!天天向上!

alwssoan(2003-12-24 12:58:26)

!!!cnswdevnet(2003-12-23 13:42:48) 我只是个初学者,但是你的观点都批错了!!
我不是梁的拥护者,但是我一定要指出你所谓的负面印象,都是你误解了梁的意思

1。作者对MFC, Linux, GCC... 认识太浅薄了。//大错特错,作者所说用MFC的人只是说用MFC的入门者和停留在这一级上的人,这些人往往只会做做界面,写一些没什么实际功能的代码。而不是指对MFC构架和实现进行深入剖析的人。
2。作者的很多断言毫无根据,误人子弟。//你说他的哪些断言毫无根据,那你的这几个断言有哪来的根据?呵呵,稍稍别生气。有种你批批Bill盖茨,人家才不鸟你。人说十年磨一剑,一个做过十年的人说出来的话俺不说。说对的我点头,说不对的我不听,但我不会去批(除非我有万分把握)。
3。原来以为作者在底层编码上应该是个高手(都是那些不负责任的媒体惹得),现在这一点也要打个大大的问号。//你想从这本书里面得到什么?本书不是跟你讲底层编码的,作者没必要在这方面给你交待他有多强。是不是把解霸的全部给你,你才觉得梁厉害啊?(呵呵,人家才不干)
看看这句“当你要用到一个内存的时候,写一个分配函数分配一块内存,马上接着写释放这块内存的代码。”我的天,一个C/C++熟手都不会说出这么“幼稚”的话。//这句是让程序员养成把分配后且用完的内存释放掉的习惯
,可是你把他理解错了,呵呵。一个人的眼光不是正的,看出来的东西自然不是正的,呵呵

看完评论,我真的想去买一本,毕竟我只是一个写过三年代码的中专生,呵呵
----------------------------------------------------------------
一碗清水里你能看出什么?青光眼的人看出里面有道光,盲人看不出东西,红眼病的人看出一片红血水

luoshayu(2003-12-24 12:10:19)

有病,我在豪杰做过很长一段时间.最瞧不起的就是只说不作的家伙
你也做一个超级解霸,做一个LINUX下的超级解霸出来啊
你也做一个LINUX下的模拟器来啊
你能吗

如果你牛的话别人自然会知道的
你谁啊,没听说过
有能力的话你可以在办一个豪杰公司啊,也可以在出一本<箴言>啊
在这里嚷两句就以为你是高手啊

derryzhang(2003-12-24 11:16:56)

梁先生的这本书名字包含箴言二字,我想大概就是以一种推心置腹的方式把自身多年来的开发经验和在此过程中的一些感想一吐为快吧。

仁者见仁智者见智这是很正常的,不过,作为一个没有多少经验的开发新手,箴言确实给了我很多思考的空间。当然,对任何事情,都不能盲目追从,而应该“批判的继承”。

梁先生在箴言的前言里似乎提到了,在这样篇幅里要把整个编程的方方面面阐述清楚是不可能的。我倒是很希望梁先生能够实现自己的诺言,将箴言中提到的不同领域,或者阐述的不够透彻的部分分册撰写。以进一步澄清编程高手的概念。

Alaex(2003-12-24 11:13:06)

妙!
批判的实在是妙!

程序界,偏激的观点无处不在,N多人都觉得老子天下第一.

litowen(2003-12-24 10:54:16)

我看了几页,前面关于汇编的那几章和我以前在网上看过的几篇文章一模一样。但是作者不是梁,当然有可能这个作者是梁的笔名。但如果不是,就是抄袭了。我有证据。

yijian1(2003-12-24 10:45:36)

up

DonQuixote(2003-12-24 10:19:39)

只是在书店里慕名 翻了几十页书。立即决定不买了
我自己承认不是什么高手,不过还是能感觉到一些问题。
感觉梁只能是一个程序员了,目光短浅,更要命的是他自己没有,也不可能意识到这一点
他的一些经验大部分出自打多年来"底层"的编程经验,但是这种经验不可能全部拿来给所有的程序员借鉴,就像是你不能拿作ERP的经验来写游戏一样。这是两种不同的应用。所以需要鉴别
他自己对MFC, VC, Linux的一些看法有些偏激,个人猜测他可能曾经使用VC和MFC来写他的媒体播放器【顺便说一句,他的东西我从来不用。连盗版都懒得用】。有经验的人都应该知道这是什么结果。这个干本就是他的错误。就好像你不能使用MFC结构来写成功的游戏一样。记得它在介绍软件架构时,提到了他的软件和Linux。说商业软件之所以值钱是因为他的架构,Linux因为开放所以不值钱【大概意思时这样,记不清除了。如有出入,请大家包涵】。可见一斑! 呵呵

不过他有一些 关于编程习惯的经验值得大家借鉴。比如 括号一次写两个什么的。
个人建议:这本书翻翻就行了,不值得买.

我也不是什么高手,只是一些个人观点。供大家参考。 希望不至于引起什么误导...

Herong(2003-12-24 9:16:21)

看到这么一说,偶也想去看看了^_^

真希望以后还能再看到这样的文章,不要总是那种一边倒的状况。

要是大多数人都能这样去看书,也许就好多了,包括我自己,呵呵。

对每一本比较重量级的书,都这么发表一下自己的意见。

adu42(2003-12-24 3:49:34)

有必要看看吗?好忙的

PFOOD(2003-12-24 0:37:16)

当你要用到一个内存的时候,写一个分配函数分配一块内存,马上接着写释放这块内存的代码

作者说明的是一个思想吧。也不必责难太多。大多数情况还是适用的。调试过交换机代码的人都清楚一块内存不释放,也许就是一个隐藏很深的致命的BUG。梁这么说的意思可能是提醒无论是哪个模块都要注意使用内存后是否要释放的问题。

记得当年一个RPC调用的内存(集中式申请,发散式释放。就如本文作者所说的"比如在Linux网卡驱动里分配的内存,就可能被很多其他的高层协议处理程序释放")泄漏问题整整查了两天,分析了内存片中大量相关的二进制数据才找出罪魁祸首...

crazybit(2003-12-23 22:28:24)

看看这句“当你要用到一个内存的时候,写一个分配函数分配一块内存,马上接着写释放这块内存的代码。”我的天,一个C/C++熟手都不会说出这么“幼稚”的话。

非常同意,在OO系统中,分配的对象一般交给管理者来释放,如command模式中的command对象。

bjhua(2003-12-23 21:49:31)

楼上这位位老兄的话,觉得说得真是好!我都忍不住想再重复一下:)。我想那个梁先生,水平也是有的,但看了他的书真的觉得这人好像有毛病,打个比方说吧,就是那种旧中国的老书生那样,熟知了自己的那两本四书五经,两亩三分地,就真地认为可以一叶落知天下秋了。怎么想怎么让人觉得好笑。那本书我翻了几下,总的感觉就是听我的,我是高手,底层编程最牛差。我真得很想揍他一顿。
我总觉得做Unix上的软件的人真的要踏实一些,没见过那个C++或者Java之父写出类似的东西……

michaelz2001(2003-12-23 19:23:55)

什么是箴言? 象Effective C++ 那些才真是箴言。

Goooder(2003-12-23 18:44:58)

我相信这本书和这位作者的意见都有高明之处。

意见对于任何人而言:有则改之,无则加勉。

vbbird(2003-12-23 18:02:10)

我也看过这本书

看了之后
觉得
写的是有点乱 但总体上来说还是不错 真的也挺好

这也是唯一个写出了程序员这些年的经验 据我所知 国内还很少有把经验都写出来的

如果楼上的哪位说写的不好 那就请把你的经验写出来让我看看 对照一下我看你写的怎么样???

不要总那么崇洋媚外

lxy6080(2003-12-23 17:55:40)

不知道这算不算“程序员相轻”呢?

bing_huo(2003-12-23 17:43:21)

林子大了 什么鸟都有
你自己出本书 看看有没有《箴言》卖的多?
这叫什么?
嫉妒
人家写了10年程序 你呢?

coolfire729(2003-12-23 16:13:03)

呵呵,《箴言》虽然写得文采差点,头绪乱了些,想法偏执了些,我认为他至少有很重要的一个优点^_^
----这是一个有独立思考钻研能力,敢想敢做的程序员的十多年心得:)

独立思考钻研能力,苦苦上下求索的精神----这是现今Windows上RAD环境里的“编码劳动者”(又名软件蓝领)最缺乏。

虽然不赞同老梁对linux的评价,但“敢于上下求索,敢于独立思考钻研”--佩服老梁的精神:)

呵呵,看来老梁是知音难求啊:)
这很正常:)

minotaurus(2003-12-23 15:40:12)

我看了这本书,正偷着乐呢,觉得讲的很好,没想到就受到了无情的打击。我对这篇文章的评价是:当牛人遇到了牛人,能不顶牛嘛。如果本人作者把所有章节都这样评出来,精力够写一本好书了,我拭目以待,一定买。

cnswdevnet(2003-12-23 13:42:48)

看来这书要比我想象的糟糕得多。而那些媒体,把作者吹得似乎中国无人能出其右,可真TMD无耻呀。读了你这个评论,我又对此书增加了几分负面印象:

1。作者对MFC, Linux, GCC... 认识太浅薄了。
2。作者的很多断言毫无根据,误人子弟。
3。原来以为作者在底层编码上应该是个高手(都是那些不负责任的媒体惹得),现在这一点也要打个大大的问号。
看看这句“当你要用到一个内存的时候,写一个分配函数分配一块内存,马上接着写释放这块内存的代码。”我的天,一个C/C++熟手都不会说出这么“幼稚”的话。

这样的高手箴言还是咱们中国人自己藏拙吧。还好这世界上除了中国人会中文的也没几个,否则不小心让外人读了,中国人可就丢大脸了。

Contributors: FHL