从“装B被雷劈”讲起

谨以本文,积极响应《JavaScript征途》读后感写作有奖召集令!参见这里……

最新进展,《真相总是能被还原的——兼批一切口号党、标题党与托托党!》

装B被雷劈

关于我对《JavaScript征途》这本书在51js.com上的讨论在这里),readkid
在 blueidea.com
上说了一句:爱民真有范儿。这话,说得我真脸红。这次是真正脸红,不是装——我又不是明星要人,既然不是,还有人家的那个“范儿”,是我的错。做人做到不诚恳,这就是毛病。用时下流行的话来说,就是“莫装B,装B被雷劈!”

话粗,理是对的。有人喜欢这么讲,也有人喜欢那么讲,比如“君子坦荡荡,小人长戚戚”,于人于事,我还畏言畏行,不是“长戚戚”么。

好。我们回头来说理。王昊同学曾经说“有些时候的争论,不是为了正误,而是为了面子”。这话很好,我给画到“架构师能力模型图”里,还给写到了文章里头,时时拿来自省。然而这两天,又忽有领悟,觉得王昊这话原来还是只说了一半。另一半,也是可以反过来说的,就是:

有些时候的不争论,也不是为了正误,而是为了面子。

比如我在51js.com上的不争论,把自己置身事外,以及看起来的那个所谓的“范儿”,其实,并非因为朱同学或hax同学的正误,而不过是为了面子。

撕掉面子问题,我们来谈谈事呢?是所谓“君子和而不同,小人同而不和”。其实我并不认可朱同学的言论与行为的,表面上我们却做成了一团和气,朱同学还一声声“爱民”地称呼着,仿佛我与他熟识一般——话到这里,我们论坛上讨论,就用论坛ID好了,大名叫上来,听起来就不真诚,也无宜于谈是论非。所以呢,这个局面,也就是所谓“(表面上看来)同,而不和”,做成了小人一般。

所以无怪于readkid说我“有范儿”的时候,我的脸红得跟猴屁股一般。自己也有小人之行,别人揭了出来,哪能装得没事人一样地呢?就算哪天有我这个心思,也怕没那个脸皮,厚得可以遮住屁股红。

好不好呢?是个问题。

所以还说回来。朱同学的书好不好呢?是个问题。我的答案是:不好。而且是:相当不好。

因为要听我的意见嘛,自然要从我的角度上来讲,而不是从他所谓的“初学者的”角度上来讲。初学者喜欢什么,我们就给什么,那不也是误人子弟么?初学者的选择能力弱,分辨能力弱,这是众所周知的,但如果因为这个,我们就塞给人家毒品,还说“人家喜欢”——那不是犯罪么?而且还是利用人家弱点的犯罪,前者是为不义,后者是为不德。所以前两年确有出版社约我写“给初学者的书”,我拒了,我没那个道行,写不出来我就不接嘛。

那我——主观地啊——认为应该给初学者看的书是如何的呢?首先的、起码的,要“没错”!这是第一要务。你可以不写,可以留问号,可以说“参见”,但是,要写出来,就起码要“不错”。例如:

JavaScript
里面有6种基本类型,对象是其中一种,各种对象是“对象(object)”这一种类型中的子类(类型)。

这是基本常识。如果要讲错了,把HTML中的DOM对象说成是基本,或把null说成是类型,那就是的确错了,教坏了新同学。但是朱同学就是要犯这样的错误。他写道:

JavaScript 语言只有 3
种最原始的数据类型:数值型、字符串型和布尔型……JavaScript
还定义了几个特殊的数据类型,如空类型(null)和未定义类型(undefined)。基本数据类型按值传送,而复杂数据类型按引用传送。

这样的写法不但是“错”,而且还相当可笑。这样的写法,难道就是“让初学者看得更懂”吗?或者不这样写就无益于初学者阅读了吗?绝对不是!显然不是!而更显然的,不过是作者在基本概念上的模糊、糊涂!以及,根本上连一些手册都没读明白,写东西不过是“想当然尔”!

作者朱同学的问题在于:他不单不认为这是个问题,还认为作为读者的——初学者,理所应当地应该接受他的这种写法。

这种写法到底是什么样子的呢?

1、扯虎皮拉大旗

对初学者,用汇编、机器指令甚至于敏感电流的强弱来充塞门面:反正你也看不懂,我说说说就说说,起码看起来比你高端。

2、语言轻佻视为乐趣

书中说,“柔弱的JavaScript 语言——JavaScript
是一种弱类型语言,其柔弱性具体表现如下……”我真的不明白,讲语言的性质有讲“柔弱性”的吗?又不是评价人家小姑娘的小蛮腰。

3、把随意猜想当成理论系统

例如把数据分成值类型和引用类型——这是可行的,但——然后说“值存储在栈中、引用类型存储在堆”中。这是典型的:

  • 把动态语言当成静态语言讲
  • 把解释语言当成编译语言讲
  • 把猜想当成理论讲

能犯的错在这里都犯了,能乱讲的都尽可能地讲乱了。又尤其是朱同学后面给出了一个“栈和堆数据结构比较”,要是初学者拿着这个表格进考场的话,哈哈,监考老师都不用抓,反正抄出来也是个不及格!

所以,我的答案是:相当相当地,不好!

不好,不好你还不说,害人掉坑里头!

有一张图,一个人站在大坑前面自说自话,全然不顾后面有人掉进了水坑:

1

是谓“小人”!当人做成了君子模样,行为上却还是小人的话,那就是危害大了。比如我前面的那个“范儿”,就让我做了回小人:你知道不好,你为啥不说?!

月影同学写的书《JavaScript王者归来》我看过样章,就提了大把意见给他。我特地在MSN里跟月同学一一讨论。但书出版了,我就什么话也不说了。这是一种不说,叫“先说后不说”。朱同学的书还没出,发了样章,我觉得不好,但没啥交情在里面,所以也不会象给月影那样地发个消息去讲讲;直等到hax同学揭批了,列了个清单,我才去分析下错误,然后就停下不说;最后两方面的把事情吵得天响,等到有人来揭我的“范儿”了,我又才跳出来说话。这也是一种不说,叫**“先不说后说”**。

总是有“不说”的行为在里头的。为啥“不说”呢?为啥不跳出来一一说清楚呢?

一是你得看给谁说。《观止》这本书就相当好,责编前些天跟我讨论,我就直言:书做得没品味、粗糙;这么好的书,做成这样,不如重做!果真,人家责编就冒着影响业绩的风险,停止了旧版的印刷发货,赶着工夫做新版,采纳了我的几条建议:把目录做细、把纸张用好、把背景说清。这位责编,我就佩服。佩服啥呢:能广开言路啊!出版做啥?买纸挣钱啊!你说他纸都用不好,不跟挖他财路差不多吗?哈,人家听得进去。好编辑!这就比拿多少个大奖要好!因为人家是真为作者做书,为读者做书。

二是你也得看怎么说。出版社的朋友问我对朱同学这样事的看法。我在MSN里头说:“我觉得,作为对作者的珍惜,在出版之前,能在作者之间相互沟通,多多互助,这是很好的。非得等到出版了,大家一拥而上地去批评,人家接受不了,也是正常。”所以呢,如果真想评论什么,就不要掐着人家咽喉说“你听我说呀!”屁话,人家都快被你掐死了,还听你说个鬼啊?

所以,道理我是懂的,我也在做。但是呢,这件事的双方都要明理才行。你给人家讲讲好坏,人家不听,反倒嫌你挡了人家晋升的道途,反倒说你说的是恶言,要把你放在老虎凳上过过堂。那,接下来的争论,不是为了正误,而是为了面子——就成必然的事情了。

反过来说,为了面子而不说,也成了必然的事情了。

我为啥不说?

出版社的朋友问我为啥不说话?我说,如果我没写JavaScript的书,我大概会发言的。因为我写了一本,朱同学出同类的书,我就要跳出来“喊打喊杀”,好象说不通。

有小人心啊!——现在我就是这么看自己的。我出言批评别人了,并不见得就是在把自己“立为正统”,别人真要这么想,我没这心思不就成了?!再者,朱同学再来辩解的是所谓“学术问题”吗?不是啊!那些都是“基础问题”,基础问题讲不清,误人啊!看着误人,跟看着人跳坑里有区别吗?

小人心啊。

所以我不说,是小人心在作祟。说出来,别人再说我小人,起码也是真小人哈。儒家啊,你分个啥小人君子嘛。还是佛家说得好嘛:本心做事,心即是佛。所以我们不妨高喊着“起来!起来!”把那些做着样子的,装着“范儿”的,都拍到他们自己挖的坑坑里头去:

2

所以呢,我想要说的是:大家都拉下架子,我也没那个“范儿”了,朱同学也没有那个“范儿”了。由此开放言路,我们都来讨论技术,才有得发展。批评是要的,自我批评也是要的,接受批评更是要的。做错、写错、表错情都没啥了不得的,能自降一格,真正虚了心的去听人骂、接受、改进,“范儿”才会由外至内的消失,这才是真情、真知。没有真心对人,没有虚心对事,你发个贴来甚?拉那么多人来做招牌做甚?心不在了,于诸事无益,骂仗还会继续,看客也还将口水。

最后,关于用心,我还是再讲讲那个故事吧:

我藏行的路上,就看见过朝圣的信徒们,三步一叩首地行进着、行进着……到得寺庙之前,用酥油给佛像贴上一块钱一角钱一分钱,分分角角摞满寺庙的山墙。然而信徒们,贫苦的依然贫苦着,羼弱的依然羼弱着,迷惑地绕行于山墙之外的转经路上。这情景,恰如同那些书本上的标题,以及被标题蛊惑着、燥热着的读者与“作”者。

我便真到过一个在翻新的寺庙里去,见到过一尊没有金漆彩描的佛像。绕到他的背后看去,在左上、肩下的位置有一个方形的孔洞。那时我问庙里的住持,这个孔洞有什么意义呢?住持说,在佛像落成之前,要请了经文放进去,那是佛像的心的位置。

En...连做法事的老住持也知道,只铸个泥菩萨在那里是没用的,华衣锦服的名头下面,有没有解决问题的实质,方可见真正的良心。

(又,关于这本书的“技术讨论”,我另发博客。这里我只自顾自的反省与揭批先。)