Aimingoo's profileAimingoo's 网上空地PhotosBlogListsMore Tools Help

Blog


    June 17

    感受支付宝

     

    感受支付宝
    
    去年英雄会前后到的北京,而今年离开北京也是在英雄会的前后。时间匆匆便是一
    年,一面是无有所得,另一面则是心性练得越发的沉稳了。有很多东西渐渐地去做、
    去感受、去蹉跎,慢慢地也就明白了。所以人嘛,不要怕错,不要怕烦,不要怕没
    成绩,怕的是没思考。走过了路,摔过了跟头,跟没事人一样,那便是白经历了,
    老天爷掉块宝在他身边,也是无视的。
    
    去年赴京时正赶上英雄会,那时便做了一首小诗,写道:
     昨夜方泸闵,此时已京中。
     将相王侯府,笑谈作一梦。
     回见来时路,山峦几多重。
     俯仰清声处,执手是英雄。
    今年再见英雄们,心气已经被蹉跎了许多,没了俯仰清声,也没了笑谈一梦。那晚
    跟韩磊坐在一起大嚼烤鸡翅,与许多CSDN的朋友们在一起灌啤酒说闲话(*见这里),
    回复了平常,便体会出来:我们这些白领金领,无过于一群饭桶。所以还是David I
    更为真实,我2005年在上海见他时,他用叉子举着大大的肉块开心得象个大孩子,
    这次再见他仍是无肉不欢,见到素菜在眼前晃的时候,神情还是象个孩子丢了糖
    果。
    
    在杭州基本安定了,支付宝的内训时间相当长,大概得有近一个月的时间。所以还
    在内训着,看着、听着阿里的文化,而非走进它、感受它。在上海的时候,跟王昊
    便论到这个“感受”二字,那是“以体察之,感同身受”。感受,可不是轻易能得
    的,是要设身处地去察去领去受的。所以大多数时候我们说我们有种种“感受”,
    那都是相当的肤浅,充其量不过是“感觉”而已。再就是前些天在Beijing Openparty
    上,与朋友讨论起“清醒”二字,我当时就说:多年前的一些经历让我意识到大多
    数人已经不记得树叶是绿色的,以及阳光的亮色,因为他们都没有停下来看过,更
    远远谈不上清醒。所以“清醒”,其实是要先用眼睛去看的,沉静下来,倒空自己,
    放开了眼界去看,而后才会谈得上“清醒”。
    
    这些已经是过往的领悟了。如今我看我,既不是那么清醒着,也远非有什么感受,
    甚至连聪明二字也用不上了。以前朋友说我聪明,我就哈哈笑着,说自己其实不那
    么聪明,至多是努力些。这话分两半讲,一半是谦虚,另一半还有着往脸上贴金的
    嫌疑。这前两天刚到杭州,便在超市见到一件新鲜的物事。是一个塑料杯子,中间
    有夹层,夹层里有一些分不清是水是油的液体。杯子有名,叫“冰杯”。想想就明
    白,放在冰箱里,等液体结冰了,拿出来倒上啤酒快速冰镇,比用冰块要强。
    
    HELLOMOTO
    (这就是有名的“冰杯”了)
    HELLOMOTO 
    (侧面再来显一下)
    于是弄了一个回家搁冰箱里。过许久拿了出来尝试,却满不是那么回事:那夹层里
    的液体并不甚满,所以冰块只有杯子的一半不到,而根据物理学原理,热液是在上
    面的,不会回流到冰杯的下面去。所以,看起来从外向内地冰冻啤酒会很有效,但
    远比不上冰块的效果:不但从内向外,冰块最终还会浮起,变成从上到下的致冷。
    于是对这个冰杯大感失望,心里想着:难不成用个冰杯,还得找个筷子来搅和?心
    里除了不满,还生出搞技术工作的那种牛劲来:要不我发明一个东东出来,改善一
    下这个致冷效果?
    
    当然我什么也没发明出来,而杯子则被继续搁在冰箱里,偶尔地取出来用用。每每
    用它,便心中愤愤:如此冰杯,存之无用,弃之可惜。这天实在闲了,便注意到它
    的杯壁上还有一个“说明书”,不但有字,还有图画着,很细致。只是以前从未想
    过:一个杯子,还需要什么说明书呢?而这说明书与图画,其实只表达了一个意思:
    倒过来放。
    
    HELLOMOTO 
    (仔细看看说明书呢)
    是啊!夹层里的液体不满,倒过来放着的时候,底下便是空着。等热一些的啤酒放
    进去,杯口的冰水向下流,便同样是有了回流的效果啊!是时大惊:如此简单!不
    过是“倒过来放”而已!我责怪这杯子了如此久,说那发明者那么笨,而真正的问
    题在于:我怎么从来没有去看过这项发明呢?
    
    所以我说我不聪明。聪明啊,古人这个词就造得很好:耳聪目明,只要能去看能去
    听,就是聪明了。我们大多数人的不聪明,只是不会看不会听罢了。把他放在一个
    新环境里去,他就象个聋子瞎子,只按自己所经历、所知道的去做去想,那又何来
    聪明可言呢?刚到支付宝,王昊就在MSN里叮嘱说:一定要认识高人啊。我说:哈
    哈,我现在睁大眼睛在看着呢。王昊又说:用耳朵吧。我回了两个字:都用。
    
    能看能听,我至少还有机会变得聪明,进而清醒,进而感受支付宝。唯其感受,才
    有体会。我想,这就是阿里文化里说“三年才会成为阿里人”的源由了吧。同样地
    也写段短诗,遂了王昊这寻访高人的心愿:
     五月远京城,往此寻高人。
     冰杯小作难,唤我掩柴门。
     晨作于西湖,暮归在古墩。
     筷头还肉香,竹园正新笋。
    
    
    April 27

    尊重反动派

    尊重反动派(上)

    --再说阿朱的《走出软件作坊》

    1、历史中
    ===
    我读熊逸的《春秋大义》时,便感叹了:无论是怎样的谬论,在历史中都能找到足够的论据。以
    历史为大背景来看,正确与错误并不重要,重要的是哪种论调更符合发言者的利益。

    如是,我现在也甚少与人论长短。在盛大工作的时候,Soul曾给我说:大多数的争论不是为了正
    误,而是为了面子。这句我给写到了“架构师的能力模型”图中,作为架构师的修养之一,如何
    看到“什么是正误,以及什么是面子”,是需要修炼的。

    如同《春秋》被截成文字片断之后,各个部分就互相矛盾,而又能为甚至互悖的观点提供支持一
    样,当一本书或一句话,失了去前提与上下文环境,仅仅只看文字的表面,便可以被不同的解释
    者佐为谈资。如此我们追寻一本书的宏旨,便显得无比重要。在我看来,作者也可能说错话,也
    可能想不清楚,写出来的文字如果有违于宏旨,那错就是错了,指了出来便是,不至于伤及作者
    本心与本意。如果作者的宏旨便不对,那谈也不必谈,开骂就是。这就是出来找骂的,怪不得人。

    历史中,出来找骂的多了。但开骂的人先看看别人的宏旨的,不多。

    2、软件作坊
    ===
    《走出软件作坊》这本书是我荐给博文的。当时我只在阿朱的博客上读过几篇,觉得写得很真实。
    我认为这种真实,是走过那些年的工程历史、公司经营的程序员与老板们都深有体会的。于是借
    了一次机会,把阿朱推荐给博文的周筠老师。随后的进度,远出我所能料。这本书只用了不到半
    年便完稿、发布了。

    很幸运,这本书还是秉承了我荐它时的那种文字风格和中心思想。这种思想很简单,就是“反思”。
    走了很多的路,许多人只会停下来找个地方喝喝酒、解解乏。而他们喝酒解乏的目的,是为了明
    天走更多的路。而反思则不是这样,反思是“回顾所来之径”,看看什么地方不稳,什么地方有
    坑,怎么掉下去,又怎么爬起来。反思就是这样,看到好的,也看到不好的。因为大家都从泥坑
    里爬过来,走出来,所以反思就会看到脏东西。如果真有人一路平顺,他的反思也就失去了价值,
    因为他成了特例。

    软件作坊承认了一种公司和团队模式的存在:公司小,生存危机大;经验少,连写代码都还在学,
    更不要谈架构、设计、工程之类的风花雪月。这种公司如果要去接大公司的单子,就还得看客户
    挑剔的脸色,人家会说:我不是不给你们做,是给了你们我不放心。

    “不放心”,需要依据吗?不需要的。客户的“不放心”没法衡量,不是象拿到名片去唬人那么
    简单的事。很多工程专家开口闭口要原则、讲量化。你问他“客户不信任我们,怎么办”,他就
    没了办法。因为大公司没这个问题,服务于大公司的顾问专家也就没有这个问题。所以大公司拿
    得到单,小公司拿不到。——那么,接下来,小公司如何生存?

    阿朱的《走出软件作坊》从根本上,就是从一个小公司、小作坊如何对外建立公司信任,对内建
    立公司信心讲起。细节到人、到事,到方法。但是,看不以小作坊的背景,就觉得这些人、事与
    方法都是啥白活,都没有“工程理论依据”。

    3、我为啥好评《走出软件作坊》
    ===
    前些天给《程序员》写了一篇评阿朱这本书的文章,是《
    本来面目——大教堂、集市,与作坊》,
    发在09年3月份的那一期上。这篇文章对比了教堂、集市与作坊三种工程团队的结构与思想、目
    标。这是我第一次站在这个角度上来想问题:为什么无论是哪种工程模式,放在国内去用的时候,
    都会有这种那种的问题。注意我上面说的是“哪种工程模式”,而不是“工程方法”——我承认
    一些具体的工程方法很有效果,而我问的是那些搬来抄去的“工程模式”为什么有问题。

    这个问题其实到某天我与韩磊在ZDNET的采访中才突然想明白。我当时给韩磊说:我们讲人情讲
    面子,但哪本书是讨论到人情面子问题的呢?我们的团队——就是基于这样的人情面子建立起
    来的团队,在一些根本不讨论到人情面子问题的方法、模式与学说的引领下,怎么做?

    这个问题引发了我对《走出软件作坊》和《梦断代码》的重新品读。的确,如o6z所说,软件作
    坊是“研究国内软件开发落后现状的最佳标本”,但o6z说的是阿朱的“做法”落后,而我要说
    的是,我们的工程对象、环境的落后。例如我们从来没有想过,客户其实不懂UML,却又要求我
    们的工程师去向客户展示我们的UML图——因为这样展示,才显得我们正规而专业。

    跟客户的沟通,不单单是建立我们“正规而专业”的印象,还要保障沟通的“有效性”——这个
    我在《大道至简》中强调过。客户认为你正规而专业了,却对你所描述的“项目内容”一无所知,
    那项目的成功又从何谈起?所以,在这种情况下的最佳实践通常是:开会时我们向客户的代表及
    BOSS展示我们的UML,以表现我们毫不逊色于其它XX大公司,而会议下,该秘谈的秘谈,该小话
    的小话,总之让客户知道我们最终要做成什么样子,并且为这些秘谈与小话而签下订单。

    o6z当然可以说这样的行为是“丑陋的”,但可有想过其背后的环境之丑陋?所以我在《本来面
    目》一文中所说的,就是那些(我们的现实)工程的本相:可能丑陋,可能落后,但我们还是要
    挣钱吃饭。

    07年的SD2C大会里,有一位国企的高工问我,说他的一些想法总是无法推行,因为在企业组织结
    构里,有一些部门在设立上就是跟他对立的,而那些人跟他也对立。所以,大多数情况下问题不
    是他想要做的对或不对,而是根本就不可能被接受。我当时跟他说,这就是权力、权利之争,不
    是工程本身的问题。解决它的方法,就是清洗掉那些不利于你的组织与结构。你可以上窜下跳,
    可以通过手段换掉那些人,或者成立更有实权性质的机构……总之,你要么改变环境,或者改变
    目标。体制上不对,你就动体制,要么包容它,要么干掉它。这就是权术。我当时说到这里的时
    候,那个高工汗都下来了。我说,结果要么是你被干掉,要么就是你把事干成。但是,这些与工
    程本身无关,这是你的环境中的问题。

    丑陋吗?现实吗?清理环境谈何容易?那可是抛头颅洒热血的事。所以我在《本来面目》一文中
    说“权术可以弄,道理也要能讲”,那是委婉的,没这么血淋淋。

    尊重反动派(下)

    --再说阿朱的《走出软件作坊》

    4、再说狭义工程
    ===
    从《人月神话》中,我注意到我们的——大环境下的——工程定义是有问题的。银弹问题中的工
    程目标其实是:抽象软件构成的复杂概念结构。与此相关的次要目标是:将需求……映射成计算
    机的执行逻辑。简单地说,这种工程的经典定义中,“完成一个项目”是次要的目标。

    而我们大多数的公司,是在为“完成一个项目”而发愁。至于软件的、工程的本质复杂性,与他
    们是没有什么关系的,也与当下的那个项目没什么关系。而我由此更深一步的认识是:完成项目
    所得的经验,是了解工程本质所必须的依据。也就是说:实践出真知。

    到这时我形成了关于狭义工程的两个主要观点:其一,狭义工程与广义工程,在(人月神话所述
    的)根本目标与次要目标上是正好相反的;其二,狭义工程的结果,是广义工程讨论的基础,亦
    即是实践与反思,是广义工程问题得以解决的必要前提。

    这两个观点使得我认可了《走出软件作坊》中所体现的实践精神。我不反对对这本书的种种负面
    评论,因其不足而愈显珍贵。我在那篇评论中说“《走出软件作坊》是具体工程的成功案例”,
    并不是说阿朱的成功,而是说“狭义工程/具体工程(这样的理论)”成功地找到一个案例。

    5、总是有问题
    ===
    所有我看到的关于这本书的书评中(无论正面或负面的),我认为最有价值的是caoz的一篇“

    不出软件作坊”。名字有点哗众,但底子里的确是有料的。因为caoz兄一眼看到了问题所在:“但
    是,必须说,(阿朱所在的)那个行业和互联网行业完全不可类比。”他甚至强调:“如果你呆
    在那些行业久了,进入互联网,还不如一个纯粹的新人进来……”

    相当精彩。

    如果一个人读这本书,忽略了阿朱所在的行业,所处的背景,那么阿朱那些方法也就失去了依托,
    变成了怪招坏招。caoz兄指出“那个行业”与现在大多数人所处的互联网行业存在区别——当然,
    具体何种区别却是没有详述的——这已经足以显出caoz的眼光之精到。

    再看看caoz的背景,很好,在这篇文章中也讲到过:(caoz有特殊的工作背景和工作资历,)在
    电信行业呆过,做过企业软件,呼叫中心,也做过网络安全,并且在互联网领域……所以他100%
    可以理解“阿朱说的情况和故事”。这个,就是读者的背景,以及与作者的共鸣。同时,caoz也
    由此指出阿朱的不足:他未曾在互联网领域有过经验。

    事实上,不单如此,我第一次见阿朱,也给阿朱说过:你缺乏大公司的工作经验(正好这一点caoz
    在后文中也提到了)。所以现下我们讨论这本书,要看到这些背景,书中对“大公司的模式”,
    以及对“互联网的模式”讲述得是几近于无的。同样的,处于这样的背景中的读者来看这本书,
    一定要小心而慎重——他或许可以帮你理解别人(例如你的客户、小公司),而对于你所在的环
    境,则未见得适用。

    再举一个有趣的例子。

    o6z在“你的就是我的”引了一段评论,这是robert回复阿朱的,说:“你的老板真是 NB,把决
    定公司生存和发展的方向问题交给你这样的 CTO,自己天天忙销售忙资金忙公司管理来实现你的
    方向,佩服佩服。”当然,o6z持以相同的观点,说“大家自己接着思考下去吧”。这个例子其
    实相当地好,因为o6z并不知道,在许多小作坊里,老板其实什么也不懂,从做什么,到怎么做
    一概无知。能“忙销售忙资金忙公司管理”的老板已经相当不错了,有些老板还几乎什么都不忙,
    只是见客户拉关系找生意,事情到头了,全是CTO(或别的什么名头下的一个高管)去忙。这样
    的公司可是不少。这样的公司,难说就没有必要存在了吗?robert以及o6z对“存有这样现象”
    的公司一笑置之,而偏巧许多小公司就是活在这样的规模和环境之下。

    所以,脱离环境去讨论工程,一如缘木求鱼,所得者非。

    再到后来,o6z就提出了“公司老板,或者你的上级的想法,绝大多数情况下不要去揣测。只有
    混子才会去琢磨老板的,因为他们是要混。”其实这同样是可笑的,因为在小公司规模下,老
    板并不怕管理人员去揣测他的意图,反之,他更希望管理团队能理解他的想法和要求。因为团
    队小,效率就更加重要,老板能尽可能明确表达的,就表达,表达不了的,在某些场合下不适
    合说的做的,其它的角色就得补上。举个例子来说,大公司里秘书偶尔要给老板打打圆场,在
    小公司里,连秘书都没有,跟着老板出去的就是挂个CTO头衔的那个“你”,你不打圆场,帮衬
    一下,有些事情还真下不来。而进一步讲,要放在o6z的语境里,这个人就是个彻头彻尾的混子
    了,当不得CTO这样神圣的角色了。

    哈哈。在小公司里做过就知道,CTO这个TITLE下面,有时候也要打打杂地。

    6、尊重反动派
    ===
    在QCon的讲演里,我就说到过这个小故事,叫“尊重反动派”。这句话其实来自《老子》中的
    “反者道之动”。我以前很为这句话困惑,一度将它理解为“反者,道之动能”。亦即是说,
    道的运动,是其相反的力量所推动的。这在一些情况下也是适用的、合理的。比如一些人见别
    人骂它,便一鼓作气写下三十篇长文来回骂,这就是“反动者”的动能。

    但是,这句话还有另一种理解,即“反者,道的动向”。亦即是说,道,总是向着与它相反的
    方向运动,正所谓物极必反,便是这个道理。从我理解后面这层含义之后,我便愈少与人争辨。
    此前说的“争论可能是面子问题”,那是使我在形式上减少了与人争论的兴趣,而对上面这句
    话的理解,使我在本质上对争论失去了冲动。

    既然物极必反,那么所谓正确与错误,都与时间、场景相关。一个观察所得的现象与经验,在
    时间飞逝之后,现象的本身便没有意义。存在意义的,是对现象的思考与所得。更深层面的,
    是对现象背后的种种关系的剖析之所得。而这些得,即便是“道”一样的至理,最终仍然向与
    它截然不同的方向行去。

    所以我说“尊重反动派”,因为他们其实是你的目标。你看到他们在反对什么,其实你就在追
    求什么。阶段性的,你可能需要维护自己的言论,亦或得失面子,但长远地来说,反动派既是
    你的动能,也是你的动向。比如说,o6z说“这么写作混乱,内容组织莫名其妙,命题奇怪的文
    章,不应该是一个CTO的作品”,其实的意思不过是说:阿朱,我更希望看到你对这些内容的提
    炼,而非仅仅是杂陈地叙述。

    感谢那些反动派吧,如果他们还将固执地存在。

    7、其它
    ===
    其实阿朱并非不知道这本书所限的环境。他在作者序里说“我只在企业管理软件开发公司工作
    过,而且只工作了十年,只服务了两家公司,所以我的见识恐怕难免狭隘,欠缺普遍性。有些
    网友问我硬件开发公司、网站开发公司的开发管理问题,我答不上来。如果哪位网友看了书后
    非要生搬硬套应用到自己的工作中,我奉劝您千万别这么干。因为每个方法都有它适用的基础
    条件。比如说……”,所以说阿朱起码是诚实的。至于批评者,如果连作者的序言都没读过,
    便要开始评论了,起码,也是有失厚道的。

    不要一味地听广告。广告总是要打的,酒香也怕巷子深呢。但是广告总是片面地强调“产品”
    的某些特性,而忽略其它。读者如果只看广告,那就掉沟里了。多读些不同的书评,尊重一下
    书评中自己“并不那么喜欢”的言论,多冷静下来问问自己的所得所见,才是真读书者。

    广告嘛,总是会夸张些。比如今天CSDN里有一个关于JAVA视频培训的广告写着“空前绝后的超
    经典之作”,你跟这较什么真呢?真要绝后了,难不成天下人都死光了么?所以这广告叫可笑,
    跟这广告较劲的,也叫可笑。可笑可笑,天下之是之非,可笑而已。

    不要认为什么都是错的,也不要认为什么都是对的。好或坏,是有语境的。

    不要以为立场摇摆的就是墙头草,不要以为言不切实的就是老油子。需要决策的时候果敢,需
    要分析的时候犹疑,是好的特性。分不分得清什么时候在决策,什么时候在分析,才是问题。

    在数年之后,也许我们仍然可以说“阿朱没有在大公司工作的经验”,但也许,他已经有了
    “把公司做大”的经验。在此,祝他一路走好。亦愿读者能慎思、明见,以及读有所得。

    March 09

    终于看明白了米国的经济危机

    找了一部片片来看,叫《时代精神2 (Zeitgeist.Addendum.2008)》。讲的呢,却是米国的货币经济。讲了一个简单的、游戏规则下的经济危机。大意如下:

    1、米政府:我需要100w发展。
    2、美联储:好的,你是老大,你要就要好了。这样,你发行100w,然后放我这里,我再贷款给你。
    3、米政府:你说得对,金融也要监管嘛(随后发行了100w,搁银行那儿了)。
    4、银行:有人存进100w,所以我可以贷90w出去。

    规则一:大多数交易账户上对储备金的要求是10%(即银行存款中的90%可用于贷款)。

    5、企业/个人:我要贷款。
    6、银行先生:好的,我这里都有。不过,你看,你拿钱也不安全,你还放我这里吧。随用随取。
    7、企业/个人:COOL!我还省保安费。你看我贷10w,取现1w如何?
    8、银行先生:哇,好的,10w,你是VIP客户了。欢迎随时来取。
    9、银行:有人存进9w,所以我可以贷8.1w出去。

    规则二:存款永远都可以贷出去,因为这意味着有人欠钱并还贷(贷款意味着社会需求)。

    10、银行:贷款是要收利息的。
    11、人民:当然。VERY正常。
    12、银行:按规定是5%的利息。
    13、人民:国家啊政府,以及万能的主。我们要拿5%来还贷呢,得印出更多的钱来。
    14、米政府:是的。总要有钱还还贷对吧。我找美联储。
    15、美联储:好的,你是老大,你要就要好了……

    规则三:钱不可能自然增长,一方面人民要印,一方面国家要印。所以钱就被印出来了。

    上述规则的推论如下:
    1、银行利率5%,则人民应当要求政府“印”出5%的钱来还贷。
    2、如果经济实际增长达不到5%,即生产的价值达不到“人民+政府”需要印的钱,那么钱就被“过量发行”了。
    3、钱币过量发行的结果是:货币贬值,通货膨胀。

    上述规则下的现实是:
    1、1913年1美元的价值,相当于2007年的21.60美元。货币贬值了96%。
    2、货币发行=国家债务=举国还债=经济增长,如果该关系式不能维持,则经济崩溃,人民饿肚子。
    3、2008~2009年,米国贷款利率约在6%~8%,但目前经济增长已经降至0.2%~1%,(乐观)预计在2010年恢复到2.5~3%……
    4、如上,经济增长<<贷款利率,(按照假定需求)印出来的钱多过(生产过程中)实际能还出来的钱……这就是经济危机了。

    预言:
    安德鲁·杰克逊,1835年关闭(与现美联储相同性质的)中央银行时说:现有银行为了控制政府的大胆尝试…仅是即将降临在米国人民身上的命运的预告。他们是否应该被迷惑,长期固化在这个体系当中,还是建立一个类似的体系。

    January 09

    本有佛性,奈何俗尘

    stupid 说:
    大公司对个人成长利大于弊吗
    Aimingoo 说:
    哈哈。。。。
    是你在成长,不是大公司。

    stupid 说:
    可是做事情限制太大了,做点事情太麻烦
    stupid 说:
    流程太多
    Aimingoo 说:
    有些事,没做过就是没做过。在远处看、听人说,都是没用的。
    Aimingoo 说:
    成长,是自己的事。是佛,放在闹市里也成佛;是草,哪里都长成一棵草。大家都不是孩子,还担心外物的侵扰么?

    stupid 说:
    也许吧!
    Aimingoo 说:
    哈哈。其实你不懂我在说什么。
    stupid 说:
     我懂,问题是我不知道自己是佛还是草,或者其他,经历了知道
    Aimingoo 说:
     那你还是没懂。
    stupid 说:
     可能
    Aimingoo 说:
     问题根本不在于你是佛还是草。你也不需要去知道,或者证明。
     你就是你,你应该有自己的思想。放在大公司里,你还是你,你的方向还是你的方向;放在小公司里也如此。
    Aimingoo 说:
     你不为外物所改变,外物为你所用。你去大公司,有去大公司的目的,从进去到出来,纤尘不染,你就做到了。
     你把那里当成个染缸,那么何处又不是染缸呢?你本就为红尘所沾染着,只有努力做自己,才能赤条条来赤条条去。自己,就是那个佛。佛与草,本来就是一个东西。他们做自身,不因为别人或环境而变化。
    Aimingoo 说:
     所以佛放在闹市里还是佛,草在哪里都是草。无有高下,惟有本真。

    stupid 说:
     您悟道了啊
    Aimingoo 说:
     你不知道的么?我学佛,不信佛;学道,不信道;学儒,又不做儒生。哈哈。
    stupid 说:
     学而不信!
    Aimingoo 说:
     对。
    stupid 说:
     我的路还长
    Aimingoo 说:
     但总要走。准确说,你总在走着。

    January 07

    写在《动态函数式语言精髓》发布之前~

     

    《要有光》

    我一直在寻求尽头, 或展望于将来, 或求源于过往。

    我在一道大河的中间, 前后观望, 时而俯首所得的, 不过是一掬破碎的倒影。

    倒影中,还是我的迷惘。

    注:

    --- 《动态函数式语言精髓》是正在计划发布的一份电子书,当然,既是计划,便只能敬 请期待了。这段文字,是它的序言中的一个段落,撷摘了下来,读得颇有些味道。哈哈。

    November 18

    骂作!

    ==============================================================
    骂作!
            —— 市场经济与个人情感
    ==============================================================
    
    在DOGN(一个私人的、小圈子的社区)里,我曾经给一个用极其夸张的语言来称赞我的
    老朋友说:棒杀是杀,捧杀也是杀,区别只是前者用棒子击打,后者用手托衬,死却是
    一样的死法。
    
    所以,个人感情里,我不太喜欢捧。捧得过了,人就昏了。托衬得太高,虚无实底,掉
    下来也就摔死了。同样的,我也不喜欢“作”,做作得过头了,看起来印痕满满,如同
    乞丐的衣服,不堪入目的。
    
    说到这个话题,是与一篇文章相关的。缘于我老家在四川,又在地震重灾区广元,所以
    常关心这些。衣向东先生的博文《北川距离一张旧船票的日子有多远》讲到一件事情,
    说是出版社迟迟不能出版长篇报告文学《震区警察的记忆》。究其原因,对曰:“热点
    过了”。
    《震区警察的记忆》:
    http://blog.sina.com.cn/s/blog_4a973bdb0100c2hm.html
    
    “热点过了”,好深刻的四个字。人的情感,灾区的苦难,被放到市场的、经济的大锅
    中一搅和,就剩下对看客们眼球的刺激了。一本书、一篇文章好不好,只在于关注不关
    注,而无关于其内容的实质。
    
    冷血!
    
    市场规律造就了这种无情的研判策略。放在法庭上,不管受害者哭到昏天黑地,没证据
    就是没证据,判不了就是判不了。哭得声音再响再凄惨,法官也得当成是在听戏。这叫
    理智理性。同样的,热点过了,再好的书籍文章也不过是狗屎垃圾,我们尽可以置灾区
    的声音于不管不顾。我们可以无视于那里的几千万人、一亿人在痛苦中抖瑟瑟地站起,
    因为,我们——其它的十几亿人的眼球,以及令我们“燥热的点”,在今天不过是在关
    注汤唯那扭曲的脊柱!!!
    
    冷血!
    
    不过同样的,我们再“更冷静地”看看衣向东先生的预期:我们可以再过些日子,持一
    张旧船票,去看看灾区的活动,看看“一些祭奠和追忆的活动”,看看那些很官派的仪
    式,或者猛烈碰触我们“燥热的点”的“类似狂欢的聚会”。
    
    我们只能庆幸——中国人有欢庆节日的、忌日的、纪念日等等各种日子的传统,我们的
    传统允许我们以及“要求我们”在某个确定的时间点去燥热一下,妆点一下我们漠视一
    切的本性。
    
    而不是真正的关注一下现实的民生。
    
    又如同这篇“震区警察的记忆”的名字,平淡无奇,难以摄人眼目。要说出版发表,文
    章的名字,就得有挑动一个领域的气势——而无关乎内容如何。所以衣向东先生应该给
    这篇报告文学起名为“震区悲情,一个警察所见的300条人腿”,或者“警察、尸骨,与
    震区”,更或者叫“充血的双瞳何不回望一下北川的今日”!
    
    想到取名字的这个主意,与IT这个行业有关。因为javaeyes上这两天的争论,让我看到
    很有些读者——我的意思是不限定内容的泛义上的读者——其实是弱视的、盲目的以及
    肤浅的。例如一本《疯狂Java讲义》!好名字啊!“疯狂”呢,学了之后做颠狂状呢!
    “讲义”哦,殿堂级的呢!学了之后明天就当教授了!
    
    人们不是理性的看中讲义,就是非理性的接近疯狂。多好的名字!然而javaeyes上还是
    有人把它揭批了一把,说它不过是一本充满了虚伪、炒作以及大段抄袭的“烂书”。
    《拼拼凑凑也是书》:
    http://readonly.javaeye.com/blog/265831
    
    然后就是李刚先生与javaeyes的骂仗,公说公的理,婆说婆的理。直到炒到天昏地暗。
    作为读者的,就明白了一件事:书是烂书,下次小心这个人——最多如此。然而,可有
    人回头看看,到底是什么挑动了几方的神经?
    
    不过是一本书名。不过是一本书名而已。
    
    要换了《java实战》或《java入门导引》这样的名字,就没人会骂。因为入门嘛,大抵
    是该这样,总有人喜欢吃混在一起的pizza,而不愿按家门店地去买最好的面饼与火腿
    肠。所以,从市场的角度上来说,象《疯狂Java讲义》这样的书名,是真的好名字,真
    正为读者想的名字,真正有卖相的名字。
    
    《震区警察的记忆》算个啥?毫无卖相,我看就算明年的周年祭,能出版也是出版社开
    恩,或者某个小编花了老眼。所以,卖相重要、热点重要,不能炒作也可,起码要能骂
    作才成。总而言之,能把读者的眼球从布满血丝变成红通通如同兔子,那就是成功。
    
    因为只要市场关注了,就有卖头了;有卖头了,就可以出了!完全合乎市场规律,大家
    有钱赚,人人有书看,生活娱乐两不误。仅此而论,卖A片大概比卖书更有利于国计民生!!!
    
    冷血!
    
    做作是作,炒作是作,骂作也是作。骂来骂去,无过也是吸引眼球——如同我现在正在
    做的。但换个角度,如果大家都不把眼睛瞅过来,这里的风景独好,也只能苦待黄昏,
    继而于黑暗中隐去。所以又从市场经济的角度来看,“作”是必要的、必须的,这种必
    要与必须无关于个人情感,仅仅是市场的——以及说面向那些盲目的、缺乏冷静的析辨
    能力的普众性群体的——需要。
    
    有需求就有市场,最基本的市场规律了。如果人人都足够清醒,也就不需要老子孔子的
    道德文章了。所以不单要“作”,还要“作”得一丝不苟,“作”得不露声色。要打着
    不“作”的旗帜明修栈道,而私底下暗渡了陈仓。
    
    我藏行的路上,就看见过朝圣的信徒们,三步一叩首地行进着、行进着……到得寺庙之前,
    用酥油给佛像贴上一块钱一角钱一分钱,分分角角摞满寺庙的山墙。然而信徒们,贫苦的
    依然贫苦着,羼弱的依然羼弱着,迷惑地绕行于山墙之外的转经路上。这情景,恰如同那
    些书本上的标题,以及被标题蛊惑着、燥热着的读者与“作”者。
    
    我便真到过一个在翻新的寺庙里去,见到过一尊没有金漆彩描的佛像。绕到他的背后看去,
    在左上、肩下的位置有一个方形的孔洞。那时我问庙里的住持,这个孔洞有什么意义呢?
    住持说,在佛像落成之前,要请了经文放进去,那是佛像的心的位置。En...连做法事的老
    住持也知道,只铸个泥菩萨在那里是没用的,华衣锦服的名头下面,有没有解决问题的实
    质,方可见真正的良心。
    
    所以,如今的乞丐,也有华衣锦服的了,也有背靠佛像数香油钱的了。所以,做作得到了
    有做派的程度,常人也就看不见左上角有没有良心了。继而的,良心看不看得见已经不重
    要了,“作”已经也成为了一种讲究,一种体面,进而要升华成一种表面的、视觉的艺术
    了。
    
    冷血啊。如今华衣锦服的,位列庙堂的,也冷血了。
    
    October 19

    学习从小抄开始

    这两天学些新东西,发现原来几乎所有要记忆的东西都有小抄。看来亚洲人欧美人在记忆特点上也没有不同。不过,对待这个小抄,大概,我们拿小抄去考场会被打手板心,而西方人会宽容些些,有些允许带一个指定大小、页数的小抄。哎,早要能这样,当年我就不会把三角函数刻在课桌上了。
     
    中国的教育方法,至少比较毁桌子。
     
    E文里的小抄通常有两个说法,比较正式的叫Quick Card,或Quick Reference Card。。至于另一种,就比较明目张胆了,叫CheatSheet。En,作弊单,不错,言简意赅,令人印象深刻。
     
    有好多小抄的网站。有些小抄做得非常专业。以漂亮而论,大概设计师用的小抄为最。例如下面这些是给Web设计师用的:
     
     csscheatsheet
     
    当然也有比较严肃的。通常~~ 可以想见的,就是给程序员用的:

    jquery12_colorcharge_bw

     

    收集各种各样的小抄确实不错。我想我的一些学习,大概就可以从找小抄开始。下面是几个不错的地方:

    专业级站点,看名字就看出来了
    http://www.cheat-sheets.org/

    这个搜索也不错
    http://www.reddit.com/search?q=cheat+sheet

    这个收藏整理得挺好挺好
    http://whatis.techtarget.com/definition/0,,sid9_gci826135,00.html

    这个列表少点,但有预览,也不错
    http://www.scottklarr.com/tag/cheat-sheets/

    这里是给Web设计师的大全集
    http://sixrevisions.com/resources/cheat_sheets_for_web_designers

    这个是给网管的
    http://packetlife.net/cheatsheets/

    一些常见语言或工具的Quick Refernaces
    http://www.digilife.be/quickreferences/quickrefs.htm
    http://gaaton.blogspot.com/2007/08/cheat-sheets-for-actionscript-ajax.html

    开发者速成
    http://www.webmastersbydesign.com/2008/06/19/the-best-developer-cheat-sheets-around/

    最后,想要自己做cheat sheet的话,可以用这个chit:
    http://www.robinlu.com/blog/archives/199

    October 09

    像大师们一样思考——从“UML何时死掉”谈起

    题记:
      在与Ivar的访谈之后,我一直想把这一段过程写出来。我尝试拟过许多个题目,最后都写不成文章。几乎在我要放弃的时候,BLOG读者在评论中,对我所解释的“函数式语言”的置疑提醒了我:很多时候不是问题的答案令人置疑,而是问题的思想方法令人置疑。如同我问Ivar的问题,他的答案“令人怀疑的正确”,其实是思想方法的问题。不站在Ivar的历史,以及Ivar的成就的角度上去思考,你会认为Ivar是在应付我的责难。

      事实上,那个访谈中,Ivar非常慎重地面对这个问题,并仔细地解释了他所提供的答案。可惜后来CSDN录制时,正好漏掉了这一段。非常遗憾,此回顾这些经历,既以钦佩,亦复深研。

     

    像大师们一样思考
            ——从“UML何时死掉”谈起
    
      得了一个机会(1),我问Ivar:“UML什么时候才会死掉呀”。我无意用这个
    透着促狭味道的问题去为难大师,实在是因为这是我一直以来思考着的问题。向
    UML之父去求解,自然是最好。
    
      Ivar细毫没有认为我是在为难他,他诚恳的回答让我在那个会议中陷入了
    深思。他说:“什么时候面向对象死掉了,UML就死掉了”。(2)
    
      一个问题看起来很复杂,但它的答案可能非常简单。一个答案看起来非常简
    单,但它可能是最正确的。一个正确的答案,也许毫无意义,但也许,那就是大
    师的答案。
    
      很多我们现在看起来是非常“理所当然”的事情,就曾经困扰着大师们。比
    如说,我们现在都知道程序的基本逻辑是顺序、分支与循环。那么,“为什么顺
    序、分支与循环是基本逻辑呢”?“作为基本逻辑,它们充备吗?”谁能回答我?
    如何回答我?
    
      这是一个艰深的问题吗?我们知道答案,但即使知道答案,我们也答不出
    “为什么”。然而,真正的大师们是论证过这个问题的。那个提出“GOTO有害”
    的大师Edsgar Wybe Dijkstra(戴克斯特拉/迪杰斯特拉)就为此写了篇“札
    记”。他是怎么论证的呢?他说计算机可以理解的人的思想方式,有三种。分别
    是枚举、归纳与抽象。而,重要的是,Dijkstra进一步的说明,分支(if)是
    计算机实现枚举的方法、循环(for)是实现归纳的方法。当他进一步的解释“抽
    象”时,他说“在现阶段,我发现很难把抽象的作用说得非常清楚”。
    
      Dijkstra大概是做好全部的准备,来完成这篇札记。他通过数学方法来
    证明了“分支如何以及为什么能实现枚举”。也就是说明分支对于“枚举”这种思
    想方法来说,是否是完备的。Dijkstra在写出了大量的数学推理之后,说“上
    述的笨重证明,也使我自己感到烦恼!但是,在现在,如果真的希望证明这个程
    序的正确性,我确实没有更好的办法。”Dijkstra引以为佐证的是,“以前,
    平面几何里的第一批定理的荒诞证明,也常常使我感到同样的愤怒,因为这些定
    理所论证的事情几乎和欧几里得公理自身一样的‘明显’”。
    
      Oh! Dijkstra愤怒的原因,在于原本看起来是如此“显然”、“理所当然”
    的事情,却需要无比笨重的过程去证明它!如同我们明明知道“1+1=2”,但证
    明这一点,既无趣又令人愤恨。
    
      Dijkstra这样的证明过程,奠定了“程序正确性证明”这门学科的基础;
    它的证明结果,是说明了程序的结构性是有限的,例如顺序、分支与循环。这个
    有“结构有限”的理论,开创了“结构化编程”这样的一个时代。我在《代码之美》
    的序中说“我们如今仍然在这个时代之中而不知觉于这本书的深远影响”,是意
    有所指的。因为所谓的“面向对象程序设计”,其根基就是“结构化程序设计 + 在
    结构上更高层次的抽象”。而这“更高层次的抽象”,就是“对象”。
    
      Dijkstra在1970年前后就完成了这篇札记,而我们接下来这40年的时
    间,仍未逃离大师最初的思想。然而,对这所有的一切,大师最初创见性的想法
    可以归结于一句:“可用来理解一个程序的种种思维方法之中,我提及以下三种:
    枚举法、数学归纳法、抽象。”
    
      为什么是这三种?是不是只有这三种?能不能有更多种?大师没有解释,他
    只是“提及以下三种”而已。Dijkstra一方面给我们留下了空间,一方面,他
    足够完备的“论证”说明了基础逻辑必须至少具备“顺序、分支、循环”。而我们,
    40年来,无有突破。
    
      Ivar把UML之死,归于一种抽象的失败,或其被更高的抽象所替代。实
    在是无比正确的,因为UML也是建立在结构化、抽象这样一些基元的理论之上。
    Dijkstra的那篇札记,被收入《结构程序设计》一书,书里的另外两篇,一
    篇是“层次结构设计”,讨论的是面向对象程序设计;另一篇是“数据结构札记”,
    讨论的是数据基本抽象。三部文章,三位图灵奖得主,一个跨越40年的时代,
    以及程序设计语言分类中的1/2(命令式语言)都承受着这种影响。
    
      然而,Dijkstra仍然无法论证,或未曾说明过“三种基础逻辑的唯一性”,
    他只是想当然地说“我认为”而已。
    
      同样只是从“我认为”开始的,还有图灵机。如果有一个毛头小子跳出来说,
    “我认为”计算机应该象一个大笨象吃意大利面条;大笨象要有肚子,面条上要
    打孔。Oh,很好,这个毛头小子立即会被哄出“计算机科学”的神圣殿堂。问题
    是,图灵就是这样一个毛头小子。于是他的这一构想就被称为“天才式的创想”。
    
      然而,真的只是这样吗?
    
      算盘用了几千年,谁问过“算盘为什么能算东西”?算珠、进位、栏,这些
    东西,是不是基本的存储结构?用算盘的“我们”,是不是计算单元?珠算表是
    不是运算规则?那些珠子表达出来的“0~9”的排列,是不是输入输出的界面?
    
      “我们+算盘”就是一个完整的计算系统。这个计算系统的完整性,是图灵用
    了一个假想来说明的。图灵不过是用一个假想描述了一个事实,而这个事实,“看
    起来”能被机器实现。于是,我们的计算机时代就开始了。
    
      图灵是否证明过“大笨象吃意大利面条为什么是一个完备的计算机系统”
    呢?不,最初等的问题,往往难于证明。往往,他的证明过程,或应用过程,只
    是触发了一个想象。
    
      对计算机根本问题的思考,许多会追溯到哲学思想的层面。IOPD和PDIO
    的问题,程序=算法+结构的问题等等,就是这一类。还有一些会追溯到人类行
    为学、语言学等层面,例如语言、语法、语义,以及有没有语用这样的问题。大
    多数时候,真正推动了计算机发展的,不是对具体问题的推理求解,而是对问题
    本身的抽象。在Dijkstra的叙述中,抽象更象是终极武器。按照Brooks的
    观点,“数据的表现形式(数据结构,抽象的结果之一)是编程的根本”;按照
    Dijkstra的引述,“引用未解释过的名词阐述公理或定理和作用于未解析过的
    操作数的(命了名的)运算两者之间有着某种平行的相似性”。
    
      无论如何,我们“做一个计算机”,原始的目的不外两个。其一是“让它计算
    数学”,其二是“让它像人一样思考”。注意,我的确是说“计算数学”,数学是人
    类的理论学科,“怎么算”,以及算的内容等等,都是我们自己设定的。而计算
    机的能力,只是计算“数学”这个它未知的对象而已。事实上,我们现在在讲的“命
    令式”,以及“函数式”,或“说明式”,就只是我们为计算机设定的“最基础的运
    算方式”。在这个“运算系统”中,“数学”并不是最初设定的。
    
      命令式如何计算,函数式如何计算……类似于此的问题了解清楚了,我们对
    这类语言也就了解了。再谈什么高阶函数(higher-order function)、克
    里化(Currying)、延续(Continuation),或发生-迭代器
    (Generator-Iterator)之类,那已经是具体语言的表象,而非“这一类语
    言”的本质了。举例来说,JavaScript 1.5还没有实现过“生成器对象
    (Generator Object)”,但并没有人否认它是函数式语言。反过来说,
    Generator Object原本就不是函数式语言的必备要素。
    
      LISP表达了函数式语言的全部“必备要素”,然而LISP七个原子运算也是
    针对于“LIST”这个结构抽象来说的。对于一个“(顺序的)表”,这七个原子运
    算是必须的,而对于另一个“(关系的)表”就未必如此了。所以,那这些原子
    运算,也不必放在函数式的必备要素中。象LUA这样的函数式语言实现方法的
    出现,也证明了这一点(3)。
    
      函数式还剩什么?
    
      真正理解函数式的秘密,是要一个语言一个语言的学习下去么?是要一种运
    算法一种运算法地学习下去么?我们听完人家说“持续”,于是就开始了解持续,
    而不去问持续为什么出现在函数式里面?亦或是不是函数式的必备要素?还是
    函数式运算系统的自身的“问题”?我们正是迷失于种种语言和概念的表象,而
    最终没能象大师一样去思考“计算机不过是大笨象吃意大利面条”这样的抽象层
    面的问题。
    
      我们要改变的是思想,我们要增强的是能力。大多数人只是增强能力,而不
    改变思想。这就是“我们”——大多数人不是大师的原因。
    
      感谢Ivar。并不仅仅是因为他给出了一个问题的答案,以及他的谦谨和微
    笑,还感谢他告诉我们:答案并不是表面上的正误,真正的答案是答案背后的思
    想。
     
    (我与Ivar Jacobson先生,2008.07.21,CSDN软件工程研讨)
    
    
    注:
    ~~~~~~
    (1)CSDN围绕“软件工程40年”进行的一个软件工程研讨会。相关的视频在
    http://live.csdn.net/Issue519/LivePlay.aspx
    但是由于录制技术上的问题,这个研讨会丢失了1/2多的内容。
    
    (2)当然,在那个会议上,我的提问与Ivar的回复都不会如此轻率。我原始的
    问题是:“既然——包括自然语言在内的——所有的语言最终都会消亡,
    那么UML作为一门建模语言,它什么时候会消亡呢?以及,新的替代它的
    建模语言又应该具备那些特性呢?”Ivar当时的答案是:“如果作为UML
    核心思想的OOP方法没有被推翻,那么UML就不会消亡”。因此他对这个时
    间的预期是:“接下来10~15年,或更长的时间,不会有更新的、标准
    化的建模语言。”
    
    (3)LISP的基础数据结构索引数组(表,LIST),LUA的基础数据结构是关
    联数组(表,MAP)。
    August 07

    胜不为争。不为争胜。

    古人竞技,可能最先是源出于狩猎。这是生存的必须,尽管是想当然,但也说得过去。但狩猎这种物质需求被满足之后,出于精神需要的竞技又源出于什么呢?
     
    现代竞技,如现在的奥运。说更高、更快、更强,强调的仍然是体魄与技能,这在本质上还是早期竞技的那种模式。我们在物质丰富的年代,来看更高更快更强,其实只是一个个数字上的刺激,说欣赏也可,说娱乐也可,虽无褒贬的成分在里头,但总之离思想的层面是很远的。
     
    然而儒家理念里面,“争”却源出于礼。出于礼之争,是君子之争;悖于礼之争,则是小人的行径了。这个“礼”,如果换成现在的“赛场制度”,也是一样。就好象是说,如果有运动员谨守制度,最终虽没嬴得比赛,也可以说重在参与,体现了奥运精神;如果说他服兴奋剂,或裁判徇私,那就是胜得无耻,是小人了。
     
    但更近一步的去讲,现代竞技目的是什么呢?名次?奖杯?还是真正的重在参与?这些其实与儒家观念大为不同。儒家说君子之争,是争让,而不是争得。如“射礼”,射就是舍,一箭行去,便心下了然,中与不中,已在身外。这个射,内在的精神就是舍。所以古代的儒士射箭,射之前大略是瞄来瞄去,端的是无比慎重;而箭出去了,也就放开了,断不会咦咦呀呀,头伸得老长老长,单等着中的之后的一声欢呼。那不是儒士的作风。
     
    儒士射礼之后必然饮酒互和。这饮酒之道,便是胜负分判。然而,按礼却是胜者敬负者一爵酒,这爵也就是酒杯,也就是今天的奖杯。换言之,古人是负者拿这奖杯的。这意思是说,胜者并不是为这奖杯而胜的,不是为这酒而胜的。胜负只是一种礼节往来的表现和结果,而不是争取高下的结果。
     
    胜不为争,争并不是古人竞技的目的。古人竞技,也是自身的一种修养。技之高下,并不是中或不中,而是修养在与不在。羸了的摔棋,与输了的摔棋,一样的都是输了。这其间的输羸,与技之高下就无关,而是德行之输羸。
     
    所以反过来说,有一天你的胜出,不是因为你争了,而仅是你胜了。不为争而胜,已是一种心境,一种修养的学问了。
     
    -------
    注,这篇文章,是读叶匡政先生《儒家如何看奥运?》的一篇后感,大意不出叶先生的文章。这里:
    July 24

    啥美,细致之美……


    大概是在一年多前,一个朋友在MSN上与我聊天,忽然说道:我发现你做事也太细致了,连MSN
    聊天的时候,每句话后面都要打句号。我那时惊讶莫名,于是翻过去看历史,的确如此,绝大
    多数情况下,我的聊天记录都是标点符号正确的。
     
    与此相同的,我后来把与王昊等几个朋友关于佛学的聊天记录摘下来,除了调整一下先后顺序
    之外,只字不改,便可以作Blog文章发表了。这便是所谓细心。
     
    跟出版社打交道久了,便知道出版中尤其需要细致。一出点错,那就是几千册上万册的损失,
    印成实体书出来了,作者或许缘于对出版社的体谅,不去细究,但在读者那里却也不是买账的,
    墨印得不好就是不好,纸用得差就是差。一分钱一分货,花了钱买了书,还得面对勘误来一页
    页校,对他们实在不公。于是,有了这种心思,第一次见博文的周筠老师时,便送她了一套自
    己刻的视频教学光盘,里面只讲三个话题,就是管理、细节和用人。她说她看过,我不再讲话。
     
    其实,读者总是把钱交给书店之后,才拿到书的。所以不管怎样,就算是有人骂娘,钱还是赚
    到的。但丢掉的就是下一本的声誉。于此,精明的商人都知道,只要不是做一锤子买卖,大家
    都还注意着这个,所以面子上,大家都还喊着“质量第一”。但就如同矿井天天喊“安全至上”,
    却还有人死一样,窟窿总还是有的。
     
    根本的原因,不在于口号喊到多响,而在于实做的人的意识是怎样。今天写到这篇文字之前,
    就看到海猫的一篇博客,是《周末杂谈:数据、现场与意义》,讲的内容大体是这样:
    -------
    对官方博客的维护和管理一直不甚理想,本周简单分析了1个月以官方博客的统计数据,并和
    竞争对手的官方博客进行了对比,问题和不足一目了然……
    -------
     
    其下两段,全部讲述的是关于这个博客的数据、对比与措施。看到这篇博文之后,我恍然对博
    文官方博客的一些窘境有了深刻的了解。记得在近一个月前,我曾经问海猫,为什么这个在CSDN
    官方博客总是不注意排版?总是有这样那样的问题?海猫答我说是“CSDN的博客不好用,前次加
    了一篇文章,光为了调版式就用了两个小时,还最终没调好”。我当时默认了——CSDN的博客难
    用是事实。但我随即问了一个问题:如果版式仅仅是你们调不好,还只是技术问题,那么为什么
    博客中用的图片很多死链呢?死链总是改改就好的,链不到目标图片,就把图片下载过来放在CSDN
    的图片库再链接,总是可以的吧。无论如何,这不是“CSDN好不好用”可以推托的,这是个态度
    问题。海猫当即称“是”。
     
    于是我便开始等着,看着那篇文章里的图片到底会在何时能被改好。我安安静静地等着,看着这
    事件的反馈速度。然而时至今日,我看是等不到了。也许那篇过时的博客已经无人再访,无人再
    问起。但那总是这个官方博客上的一篇文章,总是官方颜面的一部分,总会被搜到看到。所以,
    失去了维护确是有些不妥的。而如今我看到海猫的这篇博客,才知道,如果人们只关注这些流量
    数据,天天要的是数据报表或者数值上与对手的差异,那么真正关注品质的人就会渐渐被埋没、
    流失。这种风气一旦形成,也就只有字表上数字的虚实,而真实的品质就不复存在了。
     
    再前一次的这种等待也与CSDN有关,这大概得是在三年前。当时,CSDN首页偶尔会出现死链,多
    是程序代码导致的。也不知是哪位程序员很开心地在错误页面上写着“你看到这个页面,证明是
    代码出错了……”,或类似于此的“随性之笔”。于是我找到蒋涛(或是韩磊兄,记不清了)说,
    既然这是官方的商业网站,还是用一个有点水准的吧,官方态度还是要诚肯些。当时蒋涛也是诺
    诺称是,但我便一直等着、等着,看着CSDN的错误一天天地出现,直到过了两年这个问题才被修
    掉。那已经是CSDN拿到了融资、增加了人手、强化了管理之后的事了。
     
    所以追究根底,事情的结果总是会反应做事的人的状态的。我回顾博文的官方博客,再去看看博
    文的十几个(我所知道的)编辑的个人博客,每一个都比这个漂亮,排版整齐、图片没有死链,
    连出个文字错误也能快快地被修改掉。个人的颜面在这时节,显得确是要紧些。然则我不知道这
    个官方的,可有人去维护打理,可有人去关注提醒,我只知道结果:官网现在版面全乱掉了,而
    各位看客们自己的博客,好的依旧地好着,火的也依旧地火着。
     
    还是有人会跳出来说“CSDN的博客烂啊,搞不定”,笑话,图灵刘江兄的博客也在CSDN上,怎就不
    乱呢?仔细看看,该排版的排版,该有图的有图,就是加粗一下字体以便作为子标题这样的细节
    也没放过。所以归结到底,是人的问题,不是CSDN博客的问题——尽管这个博客烂也是事实。
     
    说完这半段,再回来说CSDN。CSDN与博文两家,都是我于公于私都交情甚好的公司,所以这里批
    评也就讲到实处,不怕得罪人。这个话题得从另一篇文章开始。“苹果是怎么吃到的”这篇文章发
    在《程序员》2008.03期。后来 CSDN大概觉得不错,就转载在vipnews.csdn.net上了。这份转载
    初看起来不错,排版、标题等等都很好。但是我自己读去,就发现一个问题:其中有一个字标题是
    “有苹果吗?是苹果树吗?能吃吗?”,这三个连问其实是一个标题的,结果被折成了两行。这就
    令人困惑了。后来有很多网上的转载也都使用了这个版本,而又没有加粗字体,所以前一行就变成
    了标题,而第三个设问,却就成了正文,失了原意。
     
    这个问题是怎么出现的呢?拿着《程序员》2008.03期这份杂志就知道,那一期的排版上,因为这
    个子标题太长,被折成了两行。所以接下来就顺理成章了:网站的编辑直接COPY了杂志上的原文。
    所以,看起来正确的东西,仅是换了个地方,就未必正确了。
     
    另一个话题,我年初给了《程序员》两篇稿件,前后两份正好跨在我离职盛大的前后。所以我特
    地给《程序员》的编辑讲,要改改个人简介,不能再用“盛大网络架构师”的身份。很好,原本后
    投的稿先发在了第三期,改掉了;而先投的稿发在了第四期,却又没改。这一来,变成了我三月
    份离职,四月份又成了“盛大网络架构师”了。这小小的困扰倒还真有人关注,后来有朋友问,我
    不得已又解释了一番。所以呢,看起来正确的东西,仅是换了个时间,就未必正确了。
     
    这还是不细心。这不细心可能不仅仅是态度问题了,还有大意的成份在里头。大意了,也就失了
    荆州,这个,是有历史教训的。伟人如此、神人如此,我等俗人自也不免。前两天又读到《程序
    员》最近的一期,拿到杂志便给孟老师讲开了,说“你们也太不小心了,你看看篇首的文字,引
    了人家阿朱的文字,其中两段的题头居然一模一样。就算是人家写错了,也不要照搬嘛”。话讲
    到这里,我也就是发发牢骚,因为我毕竟被《程序员》聘成了名誉顾问,不发发牢骚人家说我没
    干活。结果呢,孟老师过了一会儿不好意思地给我回过来一个消息:这篇稿子是她审过的。
     
    哎,真是是人就出错,孟老师给我的印象是极严谨细致的一个人呢。所以,粗心大意谁都会犯,
    时时省身便是最佳良方。我自拿自说,总觉得自己够谨细了吧,前些日子写了一篇稿子,给一
    个学文的毕业生一看,嗯,批点了十来处错误。细节究去,人家都还是对的。所以,我这厢里
    是要给我的朋友们提醒,私底下还得揪着自己的耳朵骂猪头。
     
    当然,这剩下的所有时间里,我就来看着,那些既有的问题可在渐而渐地改进着。我改而进,人
    改而进,便是共同前行了,也不枉我敲下这百千字的文章。
    June 25

    纪念际强

    纪念际强

    ——突闻海浩网于际强兄噩耗,遂匆匆作文,以此纪念。
    ----------------------------------------
    于际强, 男,汉族,河南人,后定居新疆克拉玛依
    生于1974年腊月23,1975年2月3号,
    逝于2007年腊月24,2008年1月31号,遭遇车祸不幸离去.年满33岁.
    生前为海浩网创办人.
    ----------------------------------------

    在来海浩之前,我就知道际强兄,但来了海浩之后,我反而不知道了。

    我可以算是个疯狂的下载者,因此我的印象中有一些与下载站相关的名字,例如最早的高春辉、华军乃至于天网,也有于际
    强。至于这个名字是什么时候进入我的脑海里的,我却不得而知,他来过了、留下了、存在了,就是这样。

    不知道际强兄为何许人,没打过照面,没打过交道,下了许久的软件,也没给人家一封邮件道个谢。网络就是这样,关心不
    关心,关注不关注都是浮在表面。如同我关注下载,只看到那些文件链接的表面,却离背后的真实很远。

    来到海浩则是因为飞扬——又是一个我没见过,甚至连性别都没能确实的网友。飞扬找我来海浩逛逛,是因为那篇《纯酒》。
    而来到海浩之后,我便一直只在文学版,但连这里有几个版主大概也没记得清楚,只是这么混着。在我的视线中,海浩就是
    有一个不太热火,但也绝不沉静的文学版而已。以至于我后来写了一篇检讨:
    http://bbs.highot.net/viewthread.php?tid=105490

    有一搭没一搭地来着这里,看着些些十天半月也不更新的文章,连登录的热情也难激发起来。偏巧我又不关心公务,凡在版
    面上置顶的一概无视,所以直到今天才注意到那篇《纪念论坛创始人-于际强》。一刹那之间,才发现十年来在我心底一直还
    活着一个名字,这个名字叫于际强,这个名字活着的原因,仅仅是因为背后真实的那个人,是那样的无私。

    我突然强烈地想要了解这个人了,我知道高春辉去了金山,我知道华军被招安了,而我却不知道这个于际强,现在却已经不
    在了人世,已经不能再实现他为人民服务的理想了——很多人现在看这个理想是多么的可笑啊,就如同“做程序员”现在已
    经成为了一种可笑的理想一样。然而在一生努力践行它的逝者面前,一切置疑其可笑的人又是多么的可笑啊。我从网上搜到
    的信息中,我了解到这样的一个真实的际强兄。他写道:
    ------
    但你没当过站长怎么会知道站长的难处呢?你收到过律师信吗?给人陪笑脸当孙子借过空间吗?因为放了盗版的东西被软件
    公司查到网管头上,被网管像骂儿子一样骂过吗?在四十度的高温下一天内坐车(当然钱自己出)往返900多公里维护过机
    子吗(我在新疆)......
    ------
    而这时,际强还说道:“凡事都要有个度,偶尔公布一回无所谓了……”。这一刻,我看得到际强兄的宽容。

    际强之当时的境况呢?他写道:
    ------
    虽然我是发了点牢骚,但我的FTP不还是开着的吗?!现在还准备再扩硬盘和升级CPU,当然还是掏自己的腰包了。你做得
    到吗?我也不是什么大款,我只是个月薪不到千元的小打工仔而已……
    ------
    那时是2002年,“月薪不到千元”的他还自己掏着腰包做着一个非商业的网站。这一刻,我看得到际强兄的执著。

    我宽容而执著的际强兄啊,你便去了。当我知道这一噩耗的时候,已距您离开数月之久的,伤感未因时间而减,未因距离而
    减,未因你的无名而减,未因我的无知而减。我之此时此刻,突地悲从中来,突起发起些些气力来,写下一段短短文字,说
    说我这从未谋面的兄长,说说我们这位无私厚德的朋友。啊,远去的远去,消逝的消逝,总有一些东西留下,例如一个名字:

    于际强。


    一个只下载不留名的网友 周爱民(aimingoo)
    2008.06.25
    April 30

    朋友们,我的D2之行

    D2开始了,然后又结束了。很快,但留给我深刻的印象。这一届D2,我遇到了一些旧的
    朋友,看到了一个新的开端。一些故事发生了,很快在消失。然而D2,很快的又会到下
    一届了,我想……


    一、故事的开始
    ==========

    来到北京之后第一次上网,就从我的MSN空间里看到一条消息,是克军发来的。克军,我
    并不认得,但他在消息中提到一件事:约我做第二届D2的讲师;提到一个人:Hedger Wang。

    至于克军是Who,大家去看他的相册好了。满满当当的一大柜子:
    http://flickr.com/photos/kejun/tags/d2

    先说Hedger Wang。大概是在四年之前,或者再早一点。我大概是在做一个项目时,用到
    了Hedger的一段JavaScript代码(是图遍历的),于是加了他的MSN,给他知会一下,征
    求他的同意。随后我们成了朋友,我知道了他是在台湾Yahoo,而他知道了我是一个用Delphi
    来做程序的开发人员。

    后来Hedger就去了美国Yahoo,他去Yahoo之前我们还一直联系着,交换着旅游的照片,我
    给他看西藏、内蒙,他就给我看台湾的照片,哈哈,很开心的一段时间。聊着天,讲着台
    湾的选战……后来他就去了美国Yahoo。因为时差的缘故,我们能一起在MSN的时间就很少
    了。而过了不久,因为一点非常意外的原因,又在MSN上认识了他哥哥。一谈起来,我们
    的兴趣又有接近的地方,于是……


    (有了绿叶,后面的Hedger就更夺目了~~)

    然而毕竟还是不太常见Hedger了,最没想到的是Hedger会来D2做讲师,而巧合的是我也在
    被邀请之列。于是,当然的,不因为别的任何原因,我也要去的。所以我回了个消息给克
    军,不久便确定了我在D2上的演讲主题。


    二、主题
    ==========

    克军之所以找我,大概会与我在SD2C大会上做的《JavaScript引擎技术》有关,也或许是
    出于另外一些朋友的推荐。但他没有限定我在D2上讲什么话题。而我呢,其实向来不喜欢
    不停地讲同一个东西——从这一点上说,我做不了专职讲师或某某领域的布道者,所以我
    的确不打算重复SD2C上的内容,或者以新书《JavaScript语言精髓与编程实践》为话题
    ——因为事实在SD2C上的讲演就是以这个为话题的。

    既然不打算讲JavaScript开发方面的技术问题了,那么总得讲点什么。而我大概在三年前
    就开始写一本名为“B端开发”的书,但后来放弃了(变成了现在这本新书)。而所谓“B端”
    就是“浏览器端”,其实讲的就是前端开发,其中有很大一部分是设计思想相关的。后来,
    在05年到07年我在盛大任架构师期间,参与了盛大盒子平台设计,这个过程中对用户界面
    设计、功能设计、用户流程、用户体验等设计技术,以及有关将UI从应用功能中分离出来
    的实现技术都有较长时间的涉及,这促使我在这次D2中将话题选在“设计与设计思想”上,
    而不是某种具体、以实现方法为中心的设计技术或开发技术。

    克军当然是不了解我这样选择的背景的,不过他还是支持了我的选择。尽管我认为他和Hedger
    一样,对我的这个选择充满了担心。事实上,在D2第二天,Hedger就问我为什么会选设计
    话题而不是技术开发呢,因为他觉得那本《JavaScript语言精髓与编程实践》上的内容就
    很好,就很值得一讲。而我当时的回答,就是“不想讲重复的东西”。

    当然,还是有一点私心的。我习惯自己做总结,对过去做过的事、或者历经过的思考做反
    思——我想,一个人的经历是重要的,而不是这些经历的结果。而这些所谓经历的体现,
    便是个人的反思了。所以这次我在D2中讲演,其实就是我的反思。


    (D2开讲)


    三、三本书
    ==========
    作为一点小小的宣传,我带了三本书到现场。另外还给Hedger带了一本。因为来得比较
    早,于是跟joy找了个位置坐下,不久便远远地看着Hedger来了,过去跟他打打呼的时候,
    一点都不陌生,然后随便地聊天。他很惊讶我在书中讲到的用JavaScript实现Aspect,我
    则告诉他不但有Aspect,还有完整的Interfaces。哈哈。

    随后就是开场、讲演。我的段落控制得还不错,时间刚刚好。用了三个问题,把三本书送
    了出去。三本书的签名是很有趣的。第一本签的日期是2008.03.29,是这本书发布的时间,
    而且的确是当天(就是CSDN的英雄大会那天了)给china-pub签售时签的,当时自己买了
    两本,留给自己的,没想到用上了。而第二册签的是D2大会的当天时间,第三册则没有签
    时间。我当时解释说,我希望今后还能有机会见到大家,如果这样,我可以再把第三册的
    时间签上。

    事实上,这三本书也是一个“源、流、汇”的意思,不知道得到赠书的朋友可有留心这点
    小小的设计。至于那个“汇”字,在古文中是与“会”通假的,也算是大家能再会于D2的
    一个期愿吧。


    四、源、流、汇
    ==========

    源、流、汇其实是这次的一个非常重要的话题。但我临时地缩减了它的时间,因为这毕竟
    相对更“空”一些,不太适合在一个技术为主的论坛上多讲。所谓源、流、汇,其实首先
    是以内容为中心的互联网络的一个抽象。你可以看到WEB的核心就在这三个字上头,因为
    事实上WEB的核心就是内容。

    做源的有没有?有,例如每一次变革的这些先驱者们——在所谓WEB2.0的时代,你不认为
    那些RSS、Ajax技术等等的倡导者就是“源”吗?就如同当年TCP/IP、以及URL之类的协议
    被创生的时代,谁又能洞见到今天WEB的发展呢?然而,正是那些TCP/IP、URL等才是WEB
    之源。

    再如流与汇,实际是一个事物的常态与瞬态的关系。汇其实总是流的一部分——没有真正
    的汇,它只是瞬态的。我之所以拿Yahoo来做汇的例子,便是想说Yahoo把一个瞬态的东西
    做成了常态,没有变化——只能试图无限地做大,而又不能真正地“无限”,所以结果是
    它的发展道路上总是有阻碍的。而这阻碍,就好象冰之于水露,石之于河泽,如果你看成
    是瞬态,就解脱了;看成是常态,就僵死了。

    很高兴还是有人从这个话题中看到了佛禅的味道,看到了我想说的一些东西。这,我已经
    很是满足了。大家不访看看putcn的博客:
    http://putcn.spaces.live.com/blog/cns!8E4E6BD4CF08FC13!994.entry

    源、流、汇引导出的话题,就是WEB1.0是以内容为中心的。然而,接下来的话题是WEB2.0,
    我表达的观点是:WEB 2.0是以用户为中心的,从内容粘性走从功能粘性,从广告模式走向
    体验店模式。这是基本的观点,在这个观点之后展开的,就是WEB 2.0中的设计方法与关注
    点。这些就是具体的技术话题了。

    然而那样漫长的讲演之后,可有人想过一个问题吗?——所谓功能,难道不是内容的一种形
    式吗?所谓“以用户为中心”,如果看成“以满足用户需求的功能——这样一种内容”为中
    心的话,那么整个的模式不仍旧是源、流、汇的问题吗?

    任何东西,简单到一定的程度时,便没人会留意到了。例如源、流、汇,原本只是水流的形
    式,水无常形,势无常态,而这三个字,却概念了全部的水系。为什么呢?


    (被偶然拍到的三人组,偶听讲的时候也很认真地...)


    五、UC/UCC/D2,E2,C2
    ==========

    我并不是太喜欢搬概念的一个人,我读书的时候就尤其痛恨概念。但是,在我开始思考问题
    的时候,我不得不借用或创生一些概念名词。只有有了这些名词,我才能把问题陈述清楚。
    我后来专门地看过思想方法的书籍,这是因为抽象思维的第一要素就是概念定义——如果没
    有明确的概念与定义,那么不可能进行有效的抽象思维。

    所以我不得不将我这两年多来的工作定义在UC/UCC之样的名词上。其实说穿了,所谓“玩虚
    的”,就是因为那些一直在“做实”的人看不明白:那些所谓的虚,其实是做实之后的总结。
    到了一个两个的名词上的时候,已经是精化了——所以也就显得虚了。

    我完全不反对说“深入浅出”。然而于我自己而言,仍然在反思的阶段,仍然在“定义名词
    概念并深入思考”的阶段,我又何能给大家“浅出”呢?所以我一再强调,D2上的话题,是
    我的反思。但于听众而言,能理解多少,取决于经历了多少,以及反思了多少。我没有办法
    把这些讲得更“浅出”,因为我的功力还不够。

    那么UC/UCC/D2,E2,C2是什么呢?下面这张图就讲的是这个,看幻灯的朋友可以翻到第55页。
    听说过些天现场的录像要出来,那就更好了。——我说过,我不喜欢重复讲,所以大家便去
    听好了。哈哈。
    图呢,在Borin的博客里有,我就不单贴了。在这里去看便是:
    http://rlog.cn/234
    这套幻灯比较大,我找不到地方放了,回头等D2官方发布吧。这里应该会有新消息:
    http://club.cn.yahoo.com/day2

    六、朋友
    ==========

    中午吃饭的时候叫了克军,但他却坚持要跟Yahoo的同事们一起坚守战线,所以未能成行。博
    文这次安排了几位编辑策划过来,她们对我讲的话题倒是很有兴趣。只可惜午饭没能约在一起
    ——Hedger下午还有讲演,急急地便促着要走了。

    正好看到了图灵的总编刘江老师,便拖到一起,满天满地地找饭馆happy去了。与Hedger谈笑
    之间,才知道台湾人民对大陆的误会有多深。因为Hedger见到一本外版书被国内翻译出版了,
    出版社是“人民邮电出版社”——就是图灵的上家了,便认定是“盗版”了,说他认为出版
    社不可能由“邮电”这样的机构来做,肯定是盗版者随便取的名字。

    哈哈。刘江老师大大地喊冤。是啊,在台湾或许是不能。但在大陆,出版机构最早都是国企
    或政府机构下的单位,象清华出版社这种挂在院校下的并不象想见的那么多的。要按照Hedger
    的理解,大概机械工业、电子工业这些,也全成了盗版总源头了。哈哈哈。

    所以刘江老师便跟Hedger谈开了整个中国出版业的发源与经历,什么体资改革呀之类,也不
    管我们的台湾朋友听不听得懂。不过说实在的,Hedger对中国近代的、以及建国以后的历史
    很感兴趣,我们谈得很广泛。相互推荐了很多的书。

    下午再回会场,又见了月影。在前端开发者的会议上,要是不出现他,大概就是不正常的了。
    跟他聊了聊他的书,聊了聊一些JS的东西,他便要到前排去听Hedger讲了。我在听Hedger的
    内容时打了个盹,没法子,他讲的前半部分是基于PHP的RPC,我很早先便用过。而后半段,
    则讲的是客户端数据(请求)缓存,以及相关问题的解决方案。这倒是很有些新意的。

    在听Hedger的讲时,Nate Koechly坐在我的旁边。他总是面带笑意的,很亲切。但我的E文
    实在不过关,尝试问了一下他能否用中文交流后,放弃了——我居然用中文问他的,哈哈,
    他要听得懂才怪,后来想想,这个E文的问句我还讲得出来,只是不习惯,所以当时便没这
    么讲。Nate给我发了一个YUI的即时贴,很有趣,他的本本上全是贴的类似东西。后来Nate
    的讲演我全程听了,结合着他的幻灯,他讲的内容我大概还听得明白。简单的说,就是YUI
    很好很强大。往复杂里看去,大家去找视频吧。顺便做个广告,他的讲演是当天最好的,
    幻灯也做得最好。哈哈。

    总的来说,吃了好几顿饭。台湾朋友的礼数总是很讲究,我请了Hedger饭饭,他便非要回请
    不可,这个就不跟他争了,成人之美,也是好事。这顿饭约在周日晚上,席间有两位Yahoo
    的工程师作陪,可惜他们没带名片,Hedger也没有一一介绍,所以尽管我们谈得很欢,但名
    字却没有记得。哎~~~朋友嘛,一定要知名的么?

    所以,名字并不重要,重要的是我们成了朋友。下一届D2,我们再会。如同我最后签名的那
    本书一样,时间并不重要,重要的是我相信这个时间一定会到来的。


    (我与笑呵呵的刘江老师)

    March 31

    再会英雄

     
    因家事之扰,辞去了在盛大的工作,携妻(joy)一同来到北京。这已经是一月之前的事了,一个月来,搬家、租房、办理网络……以及我兄长在北京的一些私务事,忙得焦头烂额。现在总算安顿了下来,正这时CSDN英难会的邀请函也寄了过来。哈哈,当然得去,不过再也不是什么架构师的头衔了。
     
    毕竟人在北京了,不必如去年一般经受飞机的惊骇,本以为可以欣然而往,但好事多磨:我忘了带邀请函了。于是joy只好再开着车回到租住处,这一来一回地折腾,到会场时已近10点。
     
    立即被博文的海猫兄拉去:我的《JavaScript语言精髓与编程实践》也在这时做首发。有趣的是,上一本《大道至简》也正是在去年的英雄会上首发,时隔一年,正好发布一本新书。首发归首发,签售我是不敢做的(自认还不够格),不过答应了海猫做一些签名本,于是抱了一些书到旁边的会议室,偷偷摸摸地写签名。老实说,我读书时还练过五、六年字,但到现在,大概得有十来年不怎么用笔写字了,所以这书法实在烂得可以,因此,拿到签名本的兄弟不要骂我便好。
     
    签完出来,来到china-pub的展售点:自己写的书,还是要弄本来看的。不过这付费成了尴尬事:博文的、互动出版的朋友不少,我这作者自己的首发书还得掏钱下单打折扣……这个这个~~ 我一心要当自己的第一顾客,余广和海猫兄在旁边抢着要把书送给我……俣哈哈,还是joy聪明:算我买的好吧,我要做老公的第一个读者。光当,这才都没得争了……

    再见老朋友们,第一件事就是发名片,第二件事就是收名片。这次来了北京,换了联系方法,也换了个人身份,所以名片重印了。又是请好友colorme的设计:一点墨迹沁在宣纸上的效果,那墨迹特地被裁去了一部分,时时提醒着自己“你并没有那么多墨水”。这张名片可是得了许多朋友的好评,另一方面也讶异着我为何来了北京,于是乎又一遍一遍地解释……

    如此往复大概一个来小时,我也没能进了会场。待进了会场,又发现空气闷得可以,呆了一小会儿便拖了joy出来,在外边找了沙发聊天。后来发现,这沙发选的位置真的是好呀:就在厕所旁边。各位大牛大侠大仙有能耐不吃不喝,可没有能耐不上厕所,于是乎一会儿蒋涛来了,一会儿曾总来了,一会儿某某老大又来了,不一会儿,这个休息点旁边便围上了N多人然后东拉西扯不知端的……
     
    也不知是谁怎么着地说了声“饭饭”,随即人群便作鸦雀散了。午餐时间,跟钱宏武在一桌上,看着他超级无限好的胃口,我实在是觉得自己太亏欠了自己的胃肠。不过这个耳界眼界却是大开:钱宏武能侃能讲,思维又跳跃。我的基本结论是:他的大脑是集群的,而嘴大概是超线程,或独立多核……哈哈。

    然后是下午场。下午场真正的重头戏是在两个论坛上,周前辈的讲话很强大很精彩很直接,刘韧的主持仍旧很赤膊很暴力很冒泡,各位嘉宾的表现之出色更是无需我多言,所以我也不多言了,有兴趣的狗狗一下官方新闻便好。我还是小众地跟大家白活一下闲天,例如joy如何做了博文的托儿,以及《编程之美》的八作者难题(注意不是八皇后问题)。

    说到手上的这本《JavaScript语言精髓与编程实践》,其实也没有留下多久,就送给了在会场外碰见的徐建明。这兄弟总是要与众不同,去年送他的《大道至简》签名本上就多写了句“有趣的话”,哈哈今年当然也不例外。不过这“有趣的话”是什么,有心要追问的可以找他去看,这里我先卖个关子。

    随后仍是跑去厕所外的休息处与一群人聊天,只不过现下这个群体中多了孟岩欧阳,话题便也跑得没边没沿地了……又不久,梅子和几位朋友一起过来,没想到的是51js里的月影便在其中,直到一会儿月影发了短信过来,才知道自己有眼无珠啊~~又失去了一次认识月影MM的机会,实在是差点悔得肠子都青了。于是又打电话邀了月影过来一起聊天,不过不过,至于月影是GG还是MM的问题,有涉及人家的隐私,大家自作自想或者到51js里头去翻老贴子好了,我这里只透露一点无关紧要的:月影真的很瘦很秀气,哈哈哈哈。

    答应过月影要送一本《JavaScript语言精髓与编程实践》的,于是又让joy去买,这一下弄了两本来,除了赠给月影的,另一本也没留下多久。再后来又买一次,又买一次……乌拉,这joy是不是博文安排的托儿呀~~

    《编程之美》的作者有八个之多,这我以前也是不知的——起码没有一一地去数过,所以听到铁锋说起来的时候,还是很惊讶。周筠老师在一边帮场,说出版社的规定是书上的署名不能超过四个,而这八名作者谁也不愿意抢了功劳,于是只得署成“《编程之美》小组”。不过这样的署名,其实很难得读者认可的。铁锋随后说,这八个人署名的问题真令人挠头……我便在旁边说,再版的时候,倒是可以把它当成面试难题:如何在封面上署名而又不让八个人存在争议呢?话音还没落呢,旁边的某某老师就说了,可以署成赵钱、孙李、周吴、郑王这样,每人名字中取一个字就可以了;然后封面上做一副图,包含着八个人的名字……

    我彻底地被雷到了。因为我原本想着,要有一个排序算法或者优先权算法,然后由一套可以网络化、自维护的规则驱动着,在网上公开征集个十天半个月,最后得到一个完全客观的排名……类似于此的种种种种想法,然而最终的答案,原本可以简单得只用赵钱孙李来排排就好。哎~~然而随后我又小心眼了一下:即便是赵钱孙也有个姓氏的排名啊,这个排名又如何顺序呢?再则图形也有个方位呀,比如上下左右也是分主客的,这又如何排座次呢?——直到英雄会结束,这个问题都困扰着我,恨只恨没能拿这个问题请教下下各路神仙,没准数据库有数据库的解法,BS有BS的路数,总比眼下拿了个赵钱孙方案,心下惴惴惶惶的好。
     
    玩笑归玩笑,就当我顺道儿给《编程之美》做个广告好了。再说回英雄会,其时已经是宴散了,看着各路山寨兄弟、江湖大佬、豪侠奇士们依稀散去,回顾周立功老师所讲事业之难、英雄之艰,彼等种种啊,哪又能是一个会场、几句笑谈可以讲得全的。

    是时概叹吁唏:昨夜方泸闵,此时已京中。将相王侯府,笑谈作一梦。回见来时路,山峦几多重。俯仰清声处,执手是英雄啊。不过感概归感概,照例地还是拖了几个老朋友,找了个小馆子,点了些小酒菜,谈笑间不是微软就是IBM。哈哈,怕也就在这酒桌之上,还能寻回一些程序员的本色味道来罢。
     
     
    又,拍的照片都被joy征用了,有兴趣的不妨去看她的blog:
    December 10

    楚人失之,楚人得之

    这两天的MSN签名写着:失之,得之。天道。
    这来自于一则寓言,
     
    楚王在云梦泽打猎,不小心把自己心爱的弓丢失了。左右的侍从立刻要去寻找。楚王制止道:“楚人失之,楚人得之。不必找了。”孔子听说此事后评论说:“为什么要把‘楚人’与‘人’区别开来呢?不妨说:”人失之,人得之。’这样就符合仁义了!“老子听说了孔子的评论后说道:”为什么要把‘人’与‘天地’区别开来呢?不妨说:“失之,得之。’这样就符合天道了!”
     
    我深以为然。但这两天想,如果是佛陀来评论呢?思而想之,觉得大概佛陀会只着一字,曰“之”。因为物之从属或时时改变,而其本属从未因得失而改变。得与不得,失与不失,与物无关,亦非关天道。所以,“之”就够了。
     
    于是又去Google之,果然佛家对此亦有评论。明朝的莲池大师在《竹窗随笔》中评价说:楚弓楚得、人弓人得,仍“不能忘情于弓”。说的是“弓乃身外之物,本来就无所谓失,也无所谓得。但看到这一点仍然不够,因为这样仍然是‘不能忘情于我’”。
     
    忘情于弓、忘情于我,正是佛家四大皆空的境界。如此而来,便是一自由自在的“之”字便足了。
    July 29

    理发

    老实说,我不喜欢理发。与发型师没太大关系,主要是那个电推子,一动起来我牙根就痒痒,就象指甲抓玻璃的那种感受,所以总是能不理就不理。
     
    有一次总算碰到一个发型师,问他能不能不用电推就纯手工剪。人家答应了,一手好剪子下来,真的好爽。中间就问到为什么手工剪发的都没了。人家说,剪子太贵,好的发型师的剪子就更贵,得上千块的。但是纯手工剪的话,废得太快,剪几次头,还不抵个剪子钱。——当时那个我呀,瀑布汗~~结果付了十块钱,走了。下次再去,那个发型师就不在了,原来是人家临时请来串场的~~~难怪水平是高。
     
    这么些年了~再也没怎么遇到好发型师。当然,我也不值为那几根头发花上几十几百的~跟一把剪子较劲,不划算。再加上,现在前额的头发越来越少了,也越来越不舍得剪。趁着现在的样子还不象谢顶的,多留几天是几天吧~~哎~~~ 
    July 09

    能力要成体系

    这两天关于我那篇“架构师的能力模型”的BLOG上的讨论终于停歇了,所有的几十个回复我都一一看过。大多数不是在第一时间看到,也差不远了。正好CSDN的blog又新添了回访的功能,于是一一回访,看了看批评我的,或者赞许我的都是些谁。
     
    但是我一篇也没有回复,回访时也没给人家留个信儿。以前的或许是懒,或者是没想说的,这次却不是。这次真的是故意不回。这有原因。
     
    今天要讲这个话题,一方面是因为这篇“架构师的能力模型”的blog,另一方面则是看到了另一篇名为“真的汉子”的blog。后面这个,稍后会再讲它的关系,我们这里还先说我的这篇博客所反映出来的信息。
     
    我调查了一下回复者的先后,大概是越到后面,赞同的或者基本赞同的就越多;越在前面反倒是批评者众。这个顺序很重要,因为它正好反映了一种架构师能力,就是谨慎。
     
    我们先来说这套“架构师的能力模型”的图。批评者要么认为这套图在求大求全,是超人模型;要么在认为这是不切实际,追求完美。其实都不是。首先大家对我所指的“架构师”要有个概念。我们很多人都有设计工作,比较做数据库设计或者具体功能的设计。这些设计中也有“架构”和“框架”的概念,例如插件架构/框架。但是,这是“架构设计”,不是“架构”;是一种技术,而不是一种能力。在我的架构师模型中,这些大概只占到“实现能力->设计能力”中的很少一部分。
     
    因此先强调我说的“架构师”不是指“一个能做架构的人”。前者是把架构师当职能,后者是当工人。
    那么我到底说的是怎样的“架构师”呢?comiunknown给了一个稍稍接近一点点的答案:
    --------------------
    1、3年的coder;
    2、1年的客户沟通工作;
    3、1年的team leader;
    4、无限的学习、思考期,学会分析别人的系统,思考为什么这么设计的原因,如果
       让我来设计,那些地方可以改进;
    5、还要有一定的天赋/灵气,能够从纷乱的客户要求中挖掘出真正的需求。
    --------------------
    后面两条我基本同意,事实上也言及了我给出的能力模型图中的几个分支。但前三条,却正体现了一种行业积弊:浮躁。连Peter Norvig都在说“十年学会编程”了,那么我们那些“招聘五年开发经验的Web架构师”的小广告是不是该撤了?
     
    那么,我们那种两年三年开发,或者从某某学校毕业就想当架构师的想法,是不是也该放下了?
     
    然而,我也得承认有绝顶高手。大家智商不一样,没准儿Peter Norvig要十年才学会编程,某些人三年两年也学得会、学得好。当然了,这个我说服不了大家。但是要清楚的是,我们在这里说“架构师”,而“开发能力和设计能力”只是架构师能力的很少一部分,即使有人比Peter Norvig(或其它更多的大牛们)更牛,那么起码也不能说自己“学会写程序”就成了架构师吧。
     
    还是没解释“什么是架构师”对不?当然。我就来说说“什么是架构师”,而什么又是“做架构”。
     
    做架构差不多就是画图纸。象UML这样的东西就是制图元素,基本上你能用好一些建模语言,能构画出一个房子的基本骨架来,就是“会做架构”了。这些东西在学校能学、书上能教,照猫画虎个三年两年来,没有虎的威风,也有虎的样子的。这在“能力模型”中也有,大概在“实现能力->设计能力->设计期语言”、“实现能力->模型化”以及一些其它很小的分支里头。
     
    而要有虎的威风气势,这起码要看过虎,而且要有面对真虎凛然不慎的心胸。在架构设计中,这样的能力也可以先从学习中来找,这是模型中“实现能力->设计能力->了解既有系统或模型”的主要内容,在“实现能力->设计能力->设计评估”中,也有大部分内容是关于这一点的。
     
    在“设计评估”里有一句“懂得欣赏的才是艺术家”,我们这里在说让你学会欣赏的“法子”,却不见得你有品评者的心胸。所以类似于“学会肯定别人的设计”这些也成了你的能力,而你应该注意到,这里的“学会肯定……”已经不单纯是技术能力的范畴了,它已经涉及到你的性格修养。
     
    当然有人说“架构是一门艺术”。作为艺术性格很强的高手、专学者或者“精英”,很多人并不会肯定别人,而是拘于自我认为自己是超人。这样的人中国自古就不缺,也有善评称其“雅士”或“独特”的,其艺术作品也大多成就斐然。但是有这样品质的能力,虽然不能说不好,却一定不能拿来做架构师。
     
    因为他只会“做架构”,或者说只能“做非常好的架构”。却不懂得如何“推行架构”。
     
    架构真的是“好不好”的问题吗?如同我对工程的理解一样,架构的问题的根源,也并不在于它是不是完美或者漂亮,而是在于是否合用。因此,架构师必须对实施架构的团队,以及实施的过程有充分的了解,知道他们的能力缺陷,知道实现过程要消耗的资源,清楚每个环节可能的故障以及先兆。只有这样,架构师才能设计一个让这个团队能实现,而且在实现过程中能受控的架构。
     
    要知道,你作为架构师被请来,不是画几张图纸交给项目经理,说:你们去做吧,做不出来是你们不会做。即使你可以身体力行,在这个团队中教大家、培养大家,那么公司的开销呢?风险呢?这些东西难道就不考虑了?项目的周期因为实现的复杂程度而无法控制时,项目就死掉了。那么,追根究底来说,是不是架构师的问题?是啊,你为什么会做了一份“不合用”的架构呢?
     
    所以这一部分能力,是在要你的开发经验、团队经验以及用人识人的经验中去找的,这些大概包括在模型图的“实现能力->设计能力->了解你的主要沟通对象”和“实现能力->架构推行”中。
     
    你看我们说了这么多,还只讲了几个小的分支,主要还是在“实现能力”中打转。大多数人的问题是:我们为什么要了解“决策背景”,以及类似于“谈判”、“沟通”、“风险”等等这些方面的能力呢?
     
    我们说过“做架构”不同于“是架构师”。问题的关键就在于规模。如果你只是为一个几人小组而设计一个架构,那么没关系;大概你还会是实施人员,因此更是没什么问题。但是,“架构师”应该面临的是大规模项目,是百人、数百人规模的团队的实施工作。架构师身边,除了具体的实现人员,还是更多的设计师、项目经理、技术专家、老板、客户……面对这些问题,你还能说“我会做架构”就够了吗?
     
    要知道,上述的每一个角色,都会对架构造成“伤害”。我在做架构实施过程中说得最多的,就是“架构伤害”这个词。因为每个角色都会对架构有疑问、有想法。对于公司、客户高层来说,即使你是最权威的专家,在没能把你的设计讲述清楚之前,他们也是不会盲目地通过项目的。因为专家拍脑袋的教训,从(包括传统行业在内的)历史上来看,真的是血淋淋的。
     
    架构必须面临的是决策者的思想以及方向,你得明白他们为什么是要做一个架构,希望这个架构支撑多长时间周期的持续开发和经营。然后,你得抺平这些“高端的思想”,把它变成一个可以具体实施的方案,因为具体到开发人员来说,他们是以完成任务为目标的,而不是去憧憬那些“高端的思想”。
     
    作为架构师,你要站在一个既务实也务虚的角色上,你得理解项目经理、产品经理和开发人员最切实际的实施方案,也得了解战略决策者们为将来做出的规划。重要的是,架构师这个角色,对体系的保障正是面向这些规划的——你看看,“可持续、可移植、弹性、集成性……”这些不都是对战略的阐叙么?
     
    现在你会还认为那些“超人能力”是不需要的吗?你还坚持三年两年就可以成就一个架构师这样美妙的的构想吗?当然,如果你要在一个小规模团队中担任架构角色,实现一些架构的设计工作,那么固然是行的,但请将眼光放开,想一想我们一直为大型团队而烦恼的那些问题……国内的软件行业,在大型团队上来说,真的是没有多少积累和思考的。
     
    我们现在来说那些很快就回复的,以及回复时对上述问题根本没有思考的人朋友,他们犯下的,不正是这幅模型图最上面的那个分支中表现出来的问题吗?在“学会交谈”中就清清楚楚地写着“学会听”和“不要急于表达,以及肯否”。在这个例子中,真正的问题是:急于表达可能是个性问题;而急于肯否,则关乎于性格修养了。面临一件事物时,过早的肯否,其实是使你失去了更深地了解它的机会。
     
    我们现在看到的这幅“架构师能力模型”,其实表达了个人能力、性格与心理素质的一种组合,这绝不是单独某个方面的提高或者补强。作为一个“工作型角色”(例如开发人员)来说,大要在技术方面擅长就很好了,专精更是不错。这也是我们技术角色的一贯思维。但对于“职能型角色”(例如一定管理职务或者管理链条上的中间环节)来说,“能力要成体系”就是重中之重了。
     
    所以这又变成一个角色问题了。我们要从工作型角色变成职能型角色(例如做技术变成做管理),那么根本之处,便在于从专精能力变成有体系的能力培养。这就是我开始提到那篇“真的汉子”的博客文章的原因。周筠老师在讲她的这篇博客时说,她的一些编辑在面对MSRA的这位作者时,表现很紧张、很怯,基本上已经到了“不敢接微软那位‘汉子’的话”的地步。我听到这个故事的第一反应,是说:
    --------------------
    Aimingoo said (0:36:04):
    这与胆量没多大关系。
     
    Aimingoo said (0:37:32):
    1、承认错误 2、据理力争
    就这两条,就可以跟这个人打好交道了。
     
     
    但细想下去,我又接着说:
    --------------------
    Aimingoo said (0:38:26):
    随便说,第三条是“有礼有节”。这看起来是外交辞令。但是真的很有用。因为据理力争是必要的,但把握不好尺度,事就会砸。
    而对于很多人,这三条是一条一条过来的。
     
    imingoo said (0:40:43):
    先是做不好承认错误,什么事都认为自己对;接下来做不到据理力争,是性格软弱的一面;
    最后是不懂礼节,是缺乏教育的一面。
    这三件做好,就算业务能力上有欠缺,也是人才了。
    :)
     
    然而我们看到,这里提及的三条,却正是技术人员,以及我们前面讲到的那种“艺术性格很强的高手”通常的问题。换在这样的故事里,就是技术再强再好,也不会跟这位先生打好交道。所以,这真的是要当成“个人能力体系的不足”来看,而不能单纯地“练练胆量”就可以了。
     
    在我们讲“架构师能力模型”这个话题时,很多人认为这个模型求大求全,然而正是他们应该“太大太全”的那一部分能力是他们所缺的;很多人认为这是超人模型,然而这正表现了他们对“架构师”这个角色(而非“做架构”的能力)的盲目。同样,面对周筠老师所说的这位“汉子”,那些露怯者是不是“有一部分能力缺失”,或者对自己所处的“职能”(而非技术或职业)角色有些盲目了呢?
     
    所以能力的体系问题,爱立信的这个模型是对的。随便说,这个三角模型将“个人内在素质”放在最中间,而这正好是我在“架构师能力模型”图中基本不讲的,这个问题便留给大家去思考好了。正所谓省是自省,得是自得,做人便要越活越浅,知已不足方能厚补,从而显得有力。而“做架构师”以及“做好职能角色”这两件事,合在一起便是一个自省自得,自我修养的功夫。放在表皮来看,用我常说的话来讲,就是“能力要成体系”了。
     
     
    ===============
    我的其它相关文章:
    May 17

    《大道至简》的幕后故事:终结篇、勘误和PDF下载

    《大道至简》的幕后故事共写了七节,其中的前五节都已经用BLOG的形式公开在CSDN上了。这里一次性的将全部的章节放出来,并做成了PDF文件。敬请下载。;)

    《大道至简》幕后故事的全文PDF下载地址:

    http://groups.google.com/group/qomo/

    下载文件:
    behind_the_curtain.part1.rar
    behind_the_curtain.part2.rar

     
    新加的两节是:
    ---------
    幕后故事(6):“愚公移山记”历史文化篇 
    幕后故事(7):“愚公移山记”撰修杂事篇

    此外,在这个PDF版的文件中,还添加了前后两版的“愚公移山记”作为附录,大家可以对照着看(因为撰修杂事篇》中讲到了很多未修改前版本的内容)。

    PDF中也将《大道至简》一书中的“再版前言”公开了,这主要是因为里面提及到了第二版新增了哪些内容,以及这些内容的安排与组织。这对第一版的读者来说,是一个不错的参考。我当然希望大家能够购买第二版来阅读。——这除了是不让出版社亏本的广告词之外,也是我个人希望更多人了解到我的一些新思,以及文字上的增改。

    《大道至简》添加的两章三节的目录,可以从china-pub的目录中看到,为了方便大家对照,这里也公开一下。

    ----------------------------------
    第6章. 谁是解结的人
    1. 是谁的问题
    2. 正视你的成功
    3. 总得先做点儿什么吧
    4. 你不是团队的腿
    5. 三鼓而竭
    6. 先人后已
    7. 自相矛盾
     
    第8章. 你看得到工具的本质吗
    1. 利器何以为先
    2. 神乎其技又有什么用呢
    3. 工具的本质
    4. 惟手熟尔
    5. 鲁班带了个坏头
    6. 工匠思想
    7. 化而用之,融通与融同
    8. 南橘北枳
     
    第4章 流于形式的沟通
    3. 沟通的三层障碍
     
    第9章 现实中的软件工程
    5. 审视AP和XP
     
    第10章 是思考还是思想
    7. 细解“法”与“式”
    ----------------------------------

    最后,由于部分读者可能不愿意阅读这些“乱七八糟”的东西。那么,我想至少一份《大道至简》的勘误是对读者有益的。因此,我将这份勘误抄在下面,如有其它错误,请与我联系,并致谢意。

        《大道至简:软件工程实践者的思想》勘误表

    位置
    错误
    正确
    封底
    内容简介与版权页中的不一致。
    按“版权页”所载。
    文前页(xxi)
    标题处的英文错误。
    Engineering Hierarchy Model
    正文P46
    以口头的形式回复了这封E-email
    以口头的形式回复了这封E-mail
    正文P79
    楚人有卖盾和矛的人
    楚国有卖盾和矛的人
    正文P115
    每种解决方案都会来新的问题
    每种解决方案都会带来新的问题
    正文P155
    本页第一行是多余出来的。
     
    正文P156
    本页最末少了一行。
    添加如下行:
    未能出乎于端木长的智谋机变。
    正文P157
    也不是经商时那样地迷乱于钱帛的虚妄
    也不似经商时那样地迷乱于钱帛的虚妄
    正文P162
    列子仰而叹曰
    列子仰首而叹曰
    正文P162
    后虢灭魏,晋伐虢灭虞之事
    后晋灭魏、伐虢灭虞之事
    (
    注:白话文需相应更改)
    漫画P36
    北野
    广野

    May 01

    《大道至简》的幕后故事(5):“愚公移山记”军事谋略篇

    引子
    ==========
     

    上一节写的地理,这一节只讲策略。我自己读时,时时觉得《大道至简》一书写到末了,未见得有一篇古文精彩,只是这篇古文,愿细读的人并不太多罢了。
    这篇军事谋略,与工程全然无关。你可以把它当作做人、做事或者做事业的参考,对于做工程,却没有什么意义。
    顺便说,我没有读完过“三十六计”,我自己也不并是什么高明之士。所以,这些策略高妙与否,并不重要,也无佐证。读的人自作自想去便好了。
     
      
    1. 端木长出山第一策:藏器待时
    ========== 
     京城宜见晋王把公输同关了起来,要问死罪,急急地跑回来求计于端木长。一方面,他说公输同获罪,是当年两家的老爷子没有阻拦工程实施而犯下的错。这被端木长一顿批驳,说先辈人这样决策,以及今天公输同判有罪,都是世局变化的缘故,因此不要妄议先人的得失。况且,端木一家早就把钱财分散了,而这个目的,正是为了今日能用上它。
    京城宜一听当然高兴了,但还是没明白其中的端倪——当日藏钱与今日用钱,以及搭救公输同有什么关系呢?
      
    端木氏藏钱之时,是为了避祸。谁都知道端木一家是靠着愚公挖山起的家,而且也是愚公家族的支持者。话说树大招风,等到愚公一家有祸时,端木一族必然大受牵连。追根求底地查起来,要挖路的、要扩建的,还都是端木氏的肇因,同愚公一样定个死罪,也不为过。但反过来,如果端木一家无钱无权无势,等到公输同都封了大官了,端木家却只留下了吃饭的家底儿,估计也就没人来找事了。因此端木氏将钱财分散到各地,从而“富而不显”,是为避祸。明知大祸将至,明哲而保身,谋定而后动,至少算个聪明人。
      
    而接下来,端木长又说藏这钱是为了今天来救公输一家,这救又是什么救法呢?是晋王下令要杀,你送上金银人家也不稀罕,说不定还招来罪祸。因此钱尽管是要用在救公输同身上的,却不是行贿受贿这样简单。固而这时端木长开始在冀、鲁、燕、齐这些藏钱的地方奔走,但却没有人知道他在干什么。
    端木长还在等待一个时机。什么时机呢,也就是“(晋)王三伐广野,未果”——晋王数次发兵去征讨广野,却搞不定,这才是端木长要的机会。这个机会有什么特点呢?首先这时晋王的锐气受挫,急需解决广野的问题,因此听得进良言;再则数伐广野,军需财力都噬待补充。这种情况下,端木长赠金资军,才有价值,也才最为有利。
      
    即使如此,端木长也不能送去十车黄金、三军之甲,然后就说:“晋王,你放了公输同罢。你若不放,我这些东西就不送了。”换作商业经济的社会,或许还行得通。但放在那个时代,这种逼宫的事,是做不得的。果然,当端木长献上黄金、甲胄,紧接着说“公输一家不是存心通敌,希望能宽恕他”的时候,晋王只消一句“你就不怕我也责你通敌吗”,就几乎将端木长陷入死局。
    这时,我们才看到端木长藏金的真实价值。端木长说:“如果我通敌,那么我又何必来资助晋国的军队呢?”这一步最取巧的地方在于:现在晋国打了败仗,我还来资助晋国,那无论如何也不能说我是在通敌呀。——退一步来讲,如果端木长在晋国打败仗之前就拿出来些东西来,就未见得有这个效果了。
    这才是端木长“藏器待时”的真实目的。这个目的就是在这种局面下先求保身。因为如果不能先洗脱自己的“通敌”之疑,那么还未能使公输同免罪,自己便要先被砍头了。所以端木家的黄金,其实并不是直接用来救公输同,而是先用来正言正身的。
    果然,晋王神情稍见缓和(意稍懈)。
      
     
    2. 端木长出山第二策:授人台阶
    ========== 
    三十六计里都是制胜之策,或是败中求胜,或是取势求胜,但是没有一个法子让别人占得便宜自己又不吃亏。
    这看来起是兵家之忌。因为打仗嘛,总是趋利的,哪能便宜了别人。但如果你让端木长用三十六计的法子跟晋王干仗(如果那会儿有这三十六计的话),最终掉了脑袋的一定是端木长。因为晋王就是晋王,跟晋王谋利,可以称勇,但未见得是智。
      
    我们看看端木长“正言正身”后又是怎么干的。他先用了“自相矛盾”这个故事,来说明两个事物之间的冲突,并不是事物本身导致的,而是出自参与者的主观判断或假设。因为矛、盾自已并不相攻,是你自己要让他们相互击打,这才成了解不开的问题。端木长据此推论出“广野者,取道而伐,据关而守,若守若攻,唯在王尔”。也就是说,广野挖开了,也可以是有利(于晋国讨伐别国)的。但这个有利与无利,全在于晋王对这件事的判定或者假设。
    接着,端木长又设下了一个陷井。他说:大王今天因为他而烦恼,明天则可能因为他而欢喜。那么如果你今天杀了公输同,今后又怎么来奖赏他呢?换而言之,如果你以自已的喜忧来论赏罚,那就不是一个好的君王了。
    这个陷井有两个目的。一方面看晋王如何解决这个反诘,另一方面则给晋王留下了一个台阶。这个台阶是:如果你放了公输同,反倒会是一个不以喜忧论赏罚的明君。
    显然,这种局面下晋王放了公输同也是可以的。但是,晋王显然不是那么好糊弄的。因为他其实也发现了端木长的论辩中的问题:如果不以当下之事来论得失,那么就无所谓得失了;如果不以当下之事来论赏罚,那就没法论赏罚了。——很显然,看起来是塞翁失马焉知非福,但如果这样治国,那么杀人者也可以无罪:安知被杀者明日是否犯下更大的罪恶?
    所以晋王就只问了一句:不审察于此时此事,那么刑法又有什么用呢?又或者此时没有战争,那么甲胄的作用就不存在了吗?
    显然,晋王并不想顺着端木长给他的那个“不以喜忧论赏罚的明君”的台阶下来。因为顺着那个台阶下来,他反倒是做了一个被人忽悠的傻子。晋王抬出法典,意在说法典便用来治“此时之罪”,便如同甲胄用来防“它时之敌”一样,不因为时效而度有无。
      
    端木长这时说出来的话,便有些讨价还价的意思了。他说:那是你不会用,要不然让我来试试,如果我不拿甲胄就搞定敌人,那你也能不拿法典来治公输同的罪吗?——哈哈,话的意思是这样子,但端木长说话却是客气得多了。他说“惟在用法而已”,便先设了一个台阶,就象是说,法典是人制的,也是人用的,用得不同便效用不同。
    这个台阶看起来好象没有开始那个台阶漂亮。但这也是一个台阶,它的第一重要之处在于,这时正好需要这个台阶:晋王急需解决广野的战争问题。第二重要之处,则在于这个台阶出现的位置,是在一个论辩的后面。就如同说我们在讨论问题,你总要给我证明自己的论点的机会吧。这便成了晋王给端木长的一个机会。原本是端木长跟晋王讨价还价的事,换了一个场景,便可以看着晋王有胸襟气度,让端木长来证实他的观点。
    所以事实上这个台阶比刚才那个台阶更高明。第一个台阶是给傻子的,第二个台阶则是给聪明人的;第一个台阶是给那个见眼前之利的,第二个台阶则是给谋治国之术的。
      
    晋王是聪明人,杀个公输同有什么用呢?解决晋南的问题才是关键。公输同有可杀之罪,也有不杀之理,何况端木长不但给了“不杀之理”,还给了“不杀之利”。
    于是,“王诺”。
      
     
    3. 端木长出山第三策:借势谋子
    ========== 
    我们刚才说的“授人台阶”,是造势之策,用在二者取利的场景里。但接下来端木长的问题是他还是一介草民,人轻言微,做事时必有所碍。而且,他要做的事是不以兵戎而弥战端,这个事用鼻子想也能想出来:是游说。但人家一国之君,三军之帅,岂能随便由你游说去了?
    这话其实也不全对,因为那时也有一介草民跑去自荐,而后被委以重任的。但这取决于你要做的是什么事,端木长在这里要做的事(具体的事下一小节再讲),就需要一个合适的政治身份。
      
    端木长这次不再象前面准备黄金、甲胄那样秘密行事(无人知其事),他直接向晋王陈述说:“你在曲沃定都,是要镇守西边,而广野却象犄角一样远在东边。但你去东边讨伐广野,西边的虞、魏这些国家又来骚扰你,这是你不能取胜的根源。”这一番话一针见血,很见军事根基,我们前面花了一大堆文字来讲军事地理,其中一半便是为了说清楚这句话。简单的说,就是“左顾右盼”,所以打不胜。端木长这番推论的目的,是要推出一个结果:打不胜就先不要打。只有这个条件先成立了,他后面的“游说”才行得通。
    晋王果然认可。接下来端木长的计谋,便是说在邘国的更东边有雍国,“与其交好,以共谋邘”,那么晋国就安全了。这里的关键,并不在于这个计策本身有多好,因为其实没有谁能一下子就听晋国的话,一起去打邘国,所以“游说得成不成”还很不好说。但“游说”则是必然的。
    游说之势一旦形成,端木长可以顺理成章地拿到一个身份:使臣。在这一策上,端木长所谋的,未必是某个计谋得到晋王的许可,而是形成游说的形势,并合理的出使雍国。因为使臣是国与国交往的代表,使臣出面是代国而言事,这是至关重要的。
      
    端木长借势谋子,所谋的不过是“使臣”的这个身份。那么这个身份又有什么用呢?
      
      
    4. 端木长出山第四策:无中生有
    ========== 
    而现在,端木长已经得到晋王的信任,他必然要找出个法子,来解决晋南的问题,否则是说破天也没用的。他面对的局面,是各各争利的战争;他能用的办法,不过是游说而已。
    端木长游说雍国,看起来有点象政治上的“远交近攻”(也是三十六计之一),但事实上略有区别。因为端木长的主要目的,在于“衡势”。他并不打算交好于晋南,也不打算征讨晋南,他的目标只是使晋南的力量相对平衡,互相牵制或者消解,不来攻打晋国就好了。
      
    端木长使雍去了,他代表是晋王的意思,他向雍王进言说:“跟我们一跟打邘国去吧,邘国好呀,有粮食有土地。”但雍王会答应吗?
    其实雍王答应与不答应并没有关系,因为端木长真正要做的是“令京城宜往邘”。京城宜去邘国看来就没有用什么身份,因为这里说的是“往邘”而不是“使邘”。京城宜跑去跟邘王说:我从东边来啊,我看见雍国的人都热情高涨,等着你们跟晋国打仗,你们打疲了,雍国就好乘机来攻打邘国了。
    注意这里京城宜没有什么身份,因此他就是一介草民。他不过是从东边(的雍国)路过,看到了这么一些现象,为邘国感到担忧,跑来通风报信来了——这看起来很合情合理。如果京城宜从晋国来,那么邘王就不免猜疑了。当然,即使如此,邘王也不会就信了这个草民的话。因此还是要打探的。果然,“未几,刺得晋人果欲助雍伐邘”。这里的“刺”,就是刺探。
    所以,端木长出使雍国,要的并不是雍王答应攻打邘国;京城宜去报信,也不要让邘王真的相信。但是当邘王真的打探到一个晋的使臣已经在跟雍王谈联盟的事时,京城宜的假消息也就有了真的成份,而一旦邘王认为雍国要助晋国了,那么雍国也就非攻打邘国不可了。
      
    端木长无中生有,促成了邘雍之隙。从此雍邘互制,瓦解了广野之盟的中坚力量。但是,原、苏等国还在一侧,他们还需要一个撤兵的理由。况且他们不撤兵,安知邘国会不会利用联盟的优势,先灭了雍,再举伐晋?
      
     
    5. 端木长出山第五策:狐假虎威
    ========== 
    端木长接下来要解决原、苏这些小国。他所倚仗的,却首先是地理条件。
    我们前面讲地理的时候,已经把原、苏、单等国标在上面了。大家会发现这几个小国家都不远,事实上他们也都不大。但在它们更往南的地方,有一个重要地方,就是洛阳——图上只标了“孟津”,洛阳在其,相距仅13公里,比孟县到沁阳的距离还短2/3。
    洛阳是当时周朝的东都,是用来安定东方地区的王城。原、苏、单这些小国其实都是东都王城的“畿内封国”,也就是王城所属领地内的封地。当王城有危险时,他们是要保护王城安定的。因此原、单这些地方,其实都封给了与周王朝为亲近的家族或王室——苏国却并不是王室内亲,而是降国,在原地上向天子称臣的。
    这其中最至近的,就是这个单国。单国的封王是姬姓,也就是周朝天子的亲族,在数百年间、二十余世为官。在许多事务上,周天子也要听单公的劝谏。因此,单公之重任,便在于安定像苏国这些小国,以及镇守东都。所以“愚公移山记”中才说“(单)公辅天子以定王畿”,说他是安定王城的,这与史实相符。
      
    显然,以单公的职责来讲,他是不希望王城周围打仗。因为打来打去,总会有一家坐大,有一家坐大就会危及王城。王城周边,最好就是些小国家,随时可奉天子令调遗。如果换成了象晋这样的大国,那么随时就有兵发王城,挟天子令诸候这样的事发生。
    所以端木长出使单国,就说了一句“若晋兵决意向南,则必贻天子忧”。单公立即就明白了其中的意思。晋国不想往南方打仗,打胜了天子要怀疑;打败了自己又吃亏。所以端木长就说:广野的战局已经危害了晋国的利益了,我们如果真要打,到时候单公也没法子交待的。
    单公既是重臣,既是留在这里守家园故土的,那么自然能得了天子之助。周天子令出,原、苏这些小国便也不敢在王城里征战不休了。
      
    单之小国,兵不足以征,将不足以守。端木长出使单国,用的是王城安危的名义,要的是单公与周天子的关系。单公假天子之威,所以原、苏从此不敢再盟,也不敢再伐。广野的局势,就再无忧扰了。
      
      
    6. 端木长出山第六策:以饵啖之
    ========== 
    果然,广野安定下来。晋王大喜,便要赐端木长的官了。按理说,端木长解了广野之危,愚公的事情也就算有了着落,不必要费心了。
    但端木长却说:“虞国和魏国的危险还在旁边,所以说现在不过是苟安一时罢了。”这里面还有一层问题:如果虞、魏主动来打晋国,又怎么能保证原、苏这些国家不借机在广野分一杯羹呢?今日有天子之威撑着,哪天局势乱了,晋南既不还是麻烦?所以端木长看得还是长远:晋南要安定,不能偏安一侧,而要解了“左顾右盼”的劣势才成。
      
    当晋王再次求计时,端木长说了一句经典的话:“邘王性疑,予故制之以诡。而虞王短视,犹待以饵啖之。”这其实就象今天的心理分析一样,端木长一言道出了前面“无中生有”计诈邘王的本实:如果邘王不疑,那么那个计策就不会有什么效果。同时,他也道出了虞王的弱点:短视。他的策略是“对短视者,就用眼前之利来蒙蔽他”。
    接下来端木长“潜使”京城宜去虞国。潜使的意思,就是暗中派京城宜去。这样一来,京城宜有受命,却没有身份。没身份有没身份的好处:京城宜反而变成了虞国请出的说客,要来游说晋王了。
    这是怎么做到的呢?
      
    京城宜先给虞王说:打晋国,对虞国来说是无利可图的。因为大家都要抢的地方,就难于长久占领。要想长久占领,就得有足够充沛的兵力。然而“虞无一师之兵”,也就是连几千人的军队都没有,可见虞国之弱小。这一点点兵力,打胜了的时候,守不住;打败了的时候,又抵挡不住晋的反攻。因此,战争对虞国来说,是不利的。
    这里京城宜就利用到了虞王的短视。简单的说:虞国现在兵少将寡,但如果在战争中争取利益,扩大地盘,那还是有机会由小渐大的。虞王短视,也就没有这种开疆拓土的雄心,所以不这样想,也是自然。
    接下来,京城宜又说:“你现在帮魏国打晋国,其实是拿钱去资助敌人,让他来打自己。”接来下,京城宜又解释到:“晋国在虞的北面,于南而言,虞就象晋的脚一样重要;虞国在魏的北面,于北而言,虞就象魏的咽喉一样危险。”这个解释利用了中国地理条件中的“北高南低”的特点,因此当国家处于北面的位置时,是宜于南下攻伐的。所以呢,当晋国要攻打魏国时,虞就是要塞;当魏国要打晋国时,虞就是险关。
    那么形势自然就明朗了:晋国必然要保护虞,而魏国必然要除去虞。既然如此,虞国现在的所为,不就是帮着外敌打自家人吗?
    这下虞王就慌乱了。于是,他听从了京城宜的计策:跟晋合好,以魏为敌。
      
    这里的虞王还是短视。因为一旦魏为敌,那么虞岂不成了晋的先锋?如此,虞常有战损,何来发展?没有发展,何来南图。况且一旦晋得以休憩,刀兵南向之时,虞岂不又成了危及晋国都城的咽喉?几百年之后,虞王受了晋王的厚贿,让晋王借道去讨伐南方的虢国,然而在回来的时候,却被晋王顺道灭了国。这就是短视者的悲哀之处了。
    这个故事,我也写到了这篇文章里。“借道伐虢”的典故,变成了端木长料事如神的佐证。然而真是端木长料事如神吗?端木长就说了一句话:虞王短视,犹待以饵啖之。
    看得到眼前的饵,看不到饵后的钩,短视者之所见,方寸之广,毫厘之远。然而兵无常势,“势”的变化,短视者何能得知。故而虞王看不到变化带来的后果,一厢情愿地认为跟晋修好,晋便会庇护于他。在我这篇故事里,只过变成了帮助晋国戍边守南的一个庸国;而在真实的历史中,虞王被灭了国,变成了晋王的奴隶。
      
      
    7. 上者用势
    ========== 
    构思“愚公移山记”这篇古文时,我就知道端木长是整篇故事中最精彩的人物。但我不知道自己为什么,以及怎么能把他写得精彩。我只是自顾自地去写。
    写完这篇古文时,我发现我为他花去了1/2的笔墨,而且他的出现,使得一篇原本讨论工程的文字,在这里变成了军事与谋略。而我,却并不清楚发生了什么。
    我的意思是,我不清楚到底有什么本质上的变化。
      
    这篇古文定稿有半年了,我自己还在一再读它。京城氏所写的《观势》之十势,被我的一个同事经常念在嘴边。而我却一直在想,京城氏最后的一本书,却是《趋避》。势的用法,势的创生,却都是“趋避”二字可概含的么?
    端木长站在一个运筹谋划的高度,他的眼界里并不是几车黄金的得失,也不是游说某国的成败,他看到的是局势随着他的运作而发生的变化。端木长时而进,时而退,显时国公将相也听从遣度,隐时行于各国而无人知其事。
    我所见的端木方公,或借势,或造势,或顺势而为,皆是在势中取利。未见十势的形态,也未见趋势的法式,但端木方公总是游刃有余,尽在算中。
      
    用势者,知势而用,知用而势。
      
    (这一节,写到这里的时候,我却是一个字也写不下去了。)
     
     
     
    April 30

    《大道至简》的幕后故事(4):“愚公移山记”军事地理篇

    引子 

    =========

    在前面我们已经讲到过“愚公移山”中的人物、事物,并且预告说现在这一节“军事地理”将非常精彩。但现在,这个精彩看来要打个折扣,因为这一小节只讲军事地理,不讲谋略,因此便只是一些背景性的文字交待,喜欢读的便读,不喜欢追根究底的,跳过去也可。

    军事策略总是要与地理、环境等因素相关的,因此如果不先交待这些,那么策略也就讲不清。但所涉的国、域、地名和位置信息等都是古代的,所以就写得罗嗦了。大家姑且放开心情,当作历史书看看罢。

    下一节将是“军事谋略篇”,那才是重点。:)  

    1. 愚公到底是哪里人

    =========

    在开始写“愚公移山记”之前,我最先做的事是查地理书,以搞清这个太行、王屋的位置。所以我在便写了一篇“愚公到底是哪里人”,以讨论这个问题。

    http://aimingoo.spaces.live.com/blog/cns!F9303C43D5CEAFB3!385.entry

    需要强调的是,我们要想弄清的是神话寓言中的“太行、王屋二山”,在未被愚公移开之前是个什么样子。因为“愚公移山记”是要基于这种地理状况来展开故事的。

    但大家都知道,《列子》中的愚公移山只是一个神话寓言,所谓“太行王屋,二山本一”原本就是当不得真的。那么,怎么解决这个问题呢?

     

    《列子》中说太行王屋原本是在“冀州之南,河阳之北”。这冀州,包括现在河北省、山西省、河南省黄河以北、辽宁省辽河以西的地区。书中所说“冀州之南”,当是指山西的南边。而河阳也是地名,就是如今河南省孟州市(偏西),河南之意,即是指黄河之北。

    这里,文章用了两种确定地理位置的方法。“冀州”是“九州”之一,是地域名,而“河阳”则是一个确切的地名。“九州”指的是古代对中国疆域的九个大的行政划分:扬州、荆州、豫州、青州、兖州、雍州、幽州、冀州、并州。其中冀、豫(主要是指今河南地区)的地理位置如下图所示:

    为了对照这个地理图,我在图上确切的位置标上了“河阳”。注意这张图上的“冀州”南边是以黄河为界的,而“河阳”这个地名便有“黄河之北”的意思(我国自古称山的南面为阳、北面为阴,河的情况与山相反:南面为阴,北面为阳)。因此从这张图来理解“冀州之南”,其实的意思是在冀州的南部地区,但还未越出冀州的边界。

      

    接下来的问题是原文中说“方七百里”,这个七百里是多大呢?在我以前的考证中,说“太行山,北起北京西山,南达豫北黄河北崖,绵延800里”,这其实是不对的。因为这里说的是“太行山脉”,而古人并没有山脉、山系这样的地理概念。古人说一座山,便是一座(最多也只是包括它周边的一些地方)。那么古人说的这个大行山,就并不是今天说的太行山脉,而是某一个确指的山。

    这还得从另一处考证说起。古代神话中所说的太行,是指《山海经》中的太行之山。《山海经》中的这座山,又得到一个名为“山海图”的图中去找。该图(也叫天下图)也是有的:

     

    这个太行山的所在地,有三种说法。其中,汉书地理志则两太行,懋王县(野王县、河内县,今河南泌阳)西北有太行山,河内山阳县(今河南修武县之西北)西北有东太行山。而现今的地理学,除了说太行山脉之外,还以山西晋城县南的太行山(山顶为天井关),作为山脉的主峰。我们把这三个太行山在现在的地理图上标志出来:

     

    这三处在地理位置上,大概只差了二、三十公里。我们大概可将晋城县南的“天井关太行山”作为愚公移山之后的所在,但以野王县西北的太行山就不妥当,因为它正好在河阳的正北。这座太行山在古地图中也是有标注的,例如明代的《中国十三省图》:

    此图(局部)中间便是“大行(太行)”,左下位置便是“王屋”。而左侧、下侧黄色带状的便是黄河了。

      

    至此,我们说清楚什么了吗?没有。我们的问题还是:“愚公是哪里人?”这得把现今的几座太行山搬过来,与王屋山一起填在河南孟县与山西晋城之间。然后我们再来看看,如果愚公住在“太行王屋之北”,那么他到底是在山西境内呢,还是在河南境内?

    这里还有一个方位名词要论一下。《列子》说“愚公惩山北之塞”,那么是指愚公的北面是山呢,还是愚公住在山之北面。如果是前者,那么愚公则是在山之南侧居住。但如果这样,那么他还要“指通豫南”干什么呢?他的目标是要去到豫南的话,他就不会为山所阻了。所以愚公一定是住在山的北面的,这样才会“出入之迂”的。

      

    有了这些前提,我们来恢复一下愚公移山之前的太行王屋的情状。只有有了这些条件,我们才能还原广野关前的军事、地理和局势。所以下面这张图是非常关键的:

    这张图是以今天的山西省边境作为参照的。我们假定愚公时代的太行王屋二山,就在图中“广野关”所指向的地方,它“方八百里,高万仞”。昔日愚公住在这里,靠向山西(晋)的一侧,后来因为要挖开太行,晋王便在这里建了镇,名为“广野”。

    在地图上,我们看到一条蓝色的水系从此穿过,这就是沁水。而在愚公挖开这里之前,沁水是会因为太行、王屋的存在而受到阻碍,不能流向南边的。所以在书中有一节会说,端木氏建议扩大工程以“使沁通南”,就是使这个沁水能贯通到南边。

       

    2. 诸侯国与地名、域名

    =========

    “愚公移山续”中写到十二个地、域名。这其中域名包括九州中的冀、豫、雍,地名包括太行、王屋、河曲、曲沃,河流名包括沁水(沁)和黄河(河)。还包括虚拟的地名广野镇(以及广野关),和一个难于考据的“朔”(这个在后面会讲到)。在地域名上,还有一个“(东都)王畿”,指的是古代王都所领辖的千里地界。

      

    愚公移山的故事里一共提及到十六个国家:晋国晋西南的邘、原、苏、雍、单,晋东南的虞、魏、郇、焦、虢(后世),晋北的燕,晋西的犬戎,以及东边临海的齐、鲁、越。核心的故事都是在晋国展开,书中交待过晋国(当时的)都城是“曲沃”。由于故事基本都是在冀、豫两地展开,所以十五个诸侯国中,有十一个是在这两处。我们先介绍这些国家(已在上图中标注):

    晋:周成王封其弟叔虞于唐(今山西翼城西),叔虞子改称晋,后曾迁都于曲沃(今山西闻喜)、绛(即翼,今山西翼城)、新田(今山西侯马)等地。春秋时期,晋国伐灭耿、霍、魏、虞、虢等国,战胜骊戎、赤狄等族。又打败楚国,大会诸侯时被周襄王正式赐命为霸主。

    邘:周武王封次子邘叔在商代邘国旧址,建立邘国,其子孙以国为氏,姓邘。在今河南省沁阳县北部西万镇邘邰村。邘城北扼上党之门,南控虎牢之险。战略地位十分重要。春秋战国时,战乱四起,郑国灭邘国。

    原:武王封文王第十六子为原伯,国域在今河南省济源市。现济源市西北2公里的庙街有原城故址。晋文公于前635年围攻原国。原人因文公守信而主动投降。原亡国后,晋文公将原伯贯迁往冀(山西省河津县)。

    苏:夏朝中期,帝槐(或帝芬)封昆吾氏后裔于有苏(今河南辉县西的苏岭),史称有苏氏,建苏国。商末苏国灭,族人以苏为姓,开始向四处迁徙。但留在苏岭的苏姓族人归顺了周朝,首领苏岔生入朝做了周武王的司寇,被封于苏地,国都温(今河南温县)

    雍:原为商代子姓小国,武王封文王第十三子于雍。雍国都城位于今河南焦作市西南7公里的朱村乡府城村。这里北望太行,南邻黄河,是夏商文化交汇处,商王畿西部的田猎区,也是东周时期晋国东进黄河下游,与齐楚争霸的战略要地。雍国于春秋中期被晋国吞并。

    单:作檀,周成王之子所封的姬姓国。系东都王畿内封国,国域在今河南省济源市东南。单国之君世为王室卿士。杨树达注曰:“单音善,天子畿内地名。单伯,天子之卿,世仕三朝,此及文公之世皆称单伯,成公以下常称单子。”

    虞:周武王封周太王古公亶父的二儿子虞仲的子孙在虞国(在今山西平陆县北)。春秋时,虞仲有个后人叫奚,因住在百里乡,又称百里奚,他在虞国任大夫。公元前655年,虞国被晋国所灭,百里奚和虞君都当了晋国的俘虏,成了奴隶。

    魏:周成王分封的姬姓伯国,在今陕西大荔县和山西芮城县一带。古魏国原为商朝时的古芮国,西周分封时改为“魏”。《诗经·魏风》之“魏”,既是指此魏国。周惠王十七年(前661年),古魏国为晋国灭亡。

    焦:周灭商后,“武王追思先圣王,乃褒封神农之后于焦”。焦国得名于焦水,即今苍龙涧河。焦国之城,当在今陕县七里村至湖滨区南关村一带的黄河阶地上。上阳(今三门峡市区)与焦城仅数里之遥。

    郇:公元前11世纪时,周公旦公封文王第10子(一说第17子)于郇,史称郇侯、郇伯。地处山西猗氏县(今山西临猗)之境,其子孙以原国名“郇”为氏,后去“阝”旁,加草头为“荀”氏。春秋时为晋武公所灭, 晋国公族叔受封于荀邑,战国时属赵国,故荀子为赵人。

    虢:周初始封姬姓国,有东、西、北虢之分,东虢、西虢已先亡于郑、秦。晋献公所伐为北虢,占地当今河南三门峡和山西平陆一带,建都上阳(今河南陕县李家窑村)。

     

    其它的诸侯国只是被提及到,并末直接参与战争,包括:

    齐:姜子牙就封在这里了。武王首封姜子牙为山东齐国侯。姜子牙建都丘(山东昌乐县),姜子牙的后人就以齐国的国名作为自己的姓氏。疆域最初在今山东偏北,后扩至整个山东半岛,与燕、卫、鲁、杞、莱接界。公元前221年,秦灭齐。

    鲁:周成王封周公之子伯禽(代父就封),是为鲁公伯。诸侯国,姬姓。鲁国首都在曲阜,疆域在泰山以南,略有今山东省南部,兼涉河南、江苏、安徽三省小部分。在公元前249年被楚国灭亡。鲁国也是孔子的故乡。

    燕:周武王封宗室召公于燕,在今北京及河北中、北部,史称北燕。燕国的都城在“蓟”,位于今北京房山区琉璃河。周的贵族和当地旧商的贵族以及当地土著建立了联合政权,使该地区原来的东胡民族逐渐融入华夏族。找荆轲杀秦王的,就是燕国太子丹。前222年燕灭于秦。

    越:越国始立于公元前2079年,由夏六世帝少康所封(少康恐禹祭之绝祠,乃封其庶子於越,号曰无余),因此越国不是西周的封侯,而是以“圣王后裔”的名义,独自立“国”生存的部族。国都在会稽(今绍兴),公元前334年,楚国攻灭越国。

      

    晋西的犬戎并不是诸侯国。它是一个古族名,是中国古代的一个民族,即猃狁,也称西戎,活动于今陕、甘一带,猃、岐之间。西周中期以后,西北地区的戎狄逐渐兴盛,不时入侵周朝。西周末期,褒姒祸乱周朝,激怒了申国申侯,便是联合了犬戎(和缯国),杀幽王于骊山下,灭了西周。东周后建都在至洛邑(今河南省洛阳市),东周又分春秋和战国两个时间。“愚公移山记” 所拟的故事,晚至春秋时期,以列子出现为止。 

     

    3. 朔东雍南的问题

    =========

    列子的愚公移山中一直有个疑难未解,因为列子说夸娥氏把二山搬走,“一厝朔东,一厝雍南”。按古文的惯例,因为雍是域名,所以朔也应是地名或域名。由于九州中并没有“朔”,所以不能作域名,只能做地名解。这样一来,“朔”就只能是指汉代的朔方郡,在今内蒙伊盟西北部。然而大家应该知道,太行山并没有延伸到内蒙地区,因此显然是不对的。

    “朔”除了解作“朔方郡”之外,他作为方位名词使用的时候,也表示“北方”。所以单独来看,“朔东”可以解释作“(在原本位置上的)北边偏东的位置”。表面上看来,这个位置倒也与现在的太行山脉一致,但它又与古人作文的文法不协调。

    因此“朔东”到底指什么地方,就难以解释了。现在的译文通常译作“朔方以东”,这种译法并不准确,因为没有解释朔方在哪里。——事实上也解释不清楚。

    如果仅仅是“朔东”有问题也就罢了,但接下来“雍南”也有问题。因为“雍”是九州之名,位在今天的陕西地区,与山西(九州之“冀州”)以黄河为界。所以“雍南”必然不在今天的山西境内,而会在今天的陕西境内、西安以南的地区。但大家也知道,今天的太行山、王屋山都在山西境内(或边境)。

    因此,列子说“一厝朔东,一厝雍南”,其实不对。我们今天也知道,《列子》这本书是后人托列子之名写的,所以也不能怪他老人家(不过也有人说这是冤案,这还待考证)。大概还是写书的人搞错了地方,我这里也只是记录下这件事,大家有个参照罢了。

     

    4. 广野的地理环境

    =========

    原来的寓言中,“河曲智叟”是指住在河曲的智叟。这个河曲是地名,具体的位置呢,就在上图左下角的风陵渡一带。为了便于故事的发展,我把智叟改成了与愚公毗邻,只是在前言中交待,说他原是住在河曲,迁与愚公毗邻之后“仍以河曲人自称”。

    原来的寓言中,并没有交待过愚公的背景。为了丰富人物,我把他说成了虞国人,就在上图的山西平陆县一带。愚公后来迁到太行之北居住,仍称自己是“虞人”;又因为他性情忠厚老实,便被人称作“愚公”了。这也算交待了愚公的背景。

      

    在太行山被挖开之前,晋国之的西南有中条山,南边则被太行山阻断。所以晋国南边是相对安全的。晋国的北边则有大、小戎,西面有狄戎、犬戎。所以晋国的都城历来靠近西面,在西北和西南间辗转。晋国曾迁都三次,在愚公挖开太行山的时候(晋献侯时期),晋国都城从翼城南迁至曲沃,其用意便在于安定南方。所以我在“愚公移山记”中才说“王都曲沃者,在西定犬戎,南安虞魏”,并不是胡说,确实是当时军事情势上的需要。

    在“愚公移山记”中,我说晋国都城建在西边,是因为西面是犬戎这些外姓氏族,而东边被太行所阻而没有危险。——这并不全对。历史上主要是因为象原、邘这些国家也是周朝的姬姓封国,是自家人——所以当愚公要把太行山从南边挖开,那么就失去了东南面的安全保障。这样一来,晋国建都在西面的条件就不充分了。

      

    从军事上来说,一旦这种情势发生,通常就会成为战争的起始。在冷兵器时代,既然秦国的蜀道就可以成就统一的伟业,那么愚公挖开的这条道路,带来的后果是否同样堪虑呢?在“愚公移山记”中,京城礼准确地预见到这一点:战争不可避免地开始了。

    而从这里开始,原来的“挖山工程”就已经彻底地变性,从利国利民的工程,变成了动摇国本的祸事。从这时此,所以的隐患都随着地理环境的变化而凸显出来。于晋国而言,优势变成了劣势,友国变成了敌国。

    广野关外,虞、魏、原、邘、雍列阵以待,晋之危何以能解?

      

    5. 其它

    =========

    本小节的内幕,基本都是历史、地理知识。其实在“愚公移山记”的撰写过程,有两个问题一直困扰着我,一是太行、王屋在《列子》版本的故事中的位置,二是如何将一个移山工程演变成一场合理的战争。

    第一个问题并没有合理的解决。太行王屋在山海经中的位置其实是说不清楚的,因为山海经原书的山海图已失,而作为山海经讲述山川的基点的昆仑今天也考据不到准确的位置。因此,我们再也找不到座标将太行山、王屋山画在山海图上。同样的理由,《列子》中的这个以山海经(或同源的传说)为背景的故事,也就失去了地理考据的价值。

    第二个问题解决的比较合理,在以沁河为标志的广野关外,邗、原、苏等国如虎狼而恃;而在晋国都城不远,更有狄、焦、郇、虞、魏恃机而动。因此京城氏所预见的战争,的确是迟早之事。然而我们要记住的是,这个时期是在西周中期,这时周王朝对诸候国的影响力还非常之强,而且我们从上面的各诸候国封国的史实中可见,这些国家都是同宗同族,或者本出一源的。因此在这个历史时期,事实上并没有太多的内乱纷争,大多数的战争是出现在周王朝(领率各诸侯国)与狄夷等外族之间的。

    因此事实上第二个问题只是“地理形势”上可以构成战争的条件,在天时、人和两方面还构不成战争的条件。所以,挖开太行所以引来了战争,并不合史时,也不合局势。这一点,要把“愚公移山记”当成军事题材来看的话,就不得不注意了。

     

    但是,为了让故事发展下去,“愚公移山续”中还是让战争开始了。现在,另一个人物将站出来,改变“愚公移山”的故事走向与焦点,这就是端木长。我们会看到,故事从工程成为战争,又从战争成为数人论道的资本。而在这些论道者的所论中,那座山或者那个工程,只不过是百千年后的一份谈资罢了。

     

    April 23

    《大道至简》的幕后故事(3):“愚公移山记”事物篇

    引子
    ========
    以古文述事,难点之一便在于我们对历史了解并不充分,因此常常把这个朝代的东西放在了那个朝代,或者让原本是甲做的事,说成了乙做。这样与史不合,容易使文章出笑话。这一篇“幕后”,便来说说“愚公移山记”中的事物。
    不过由于这篇故事重在述事,所以对于“物”的描写并不充分,能拣出来谈的并不多,望谅。
     
     
    1. 铁器
    ========
    “愚公移山记”中对铁器的考证是一个非常令人痛苦的事。我从一开始便设想,到底有什么法子让愚公在太行山中挖出一条路来呢。然而思来想去,只能让他用铁器。
    但是在文章还没写完时,我就犯了嘀咕:京城氏生活在西周中期,有铁器用吗?那个时代的先民,要挖开一座山,到底该用什么器具呢?
      
    中国的冶金技术的起源实在是讲不明白,大抵上来说,早至商朝就偶有陨铁的器物出现了,春秋初有铸铁,战国末有铁兵器,鲜有钢。晚至秦朝便有了锻钢。例如从历史上来说,秦统一六国时的主战武器还是青铜剑,包括像箭簇这种需要极尖利的小部件,也是用铜制,而非铁制。而当时,象鱼肠剑、干将莫邪剑这类以精钢为主要成分的武器也已经有了。所以炼铁的历史,早无出于夏商,晚不过于春秋。
    《刀剑录》中说夏代便有“孔甲”采铁铸剑,但无有切实证据。郭沫若则提出周初便有铁器的说法,郭老是通过文字考据来论证,后来杨宽在《中国古代冶铁技术发展史》中解释,认为冶金史上总是先有块炼铁,而后才有生铁,而中国春秋时间已经有了生铁,那么块炼铁就应当出在西周中期至春秋中期之间。
    关于这个年代,在较近的考古中是有实据的。在三门峡虢国墓地(西周晚期至春秋早期,约公元前700年)中出土过一柄块练铁制成的铁剑。因此可被考据的铁器历史,大致只能到春秋早期。
    (春秋早期的铁器(铁刃铜削) )
     
    (商代铁刃铜钺(陨铁))
      
    “愚公移山记”所说京城初学得冶铁之技的时间,大概是在公元前990年左右。因此在这个时代,是不应该有“冶铁之技”的。这篇古文只说“(求之以)粗铁之器”,实在是想跳过这个细节,不确切地说明铁器的材质。粗铁在冶铁工艺中算作什么铁,我也说不清,大致说成是劣质的铁块吧。即使如此,要用这样的粗铁来做农具或民用,也实在不可能,因为这时的铁器(即使是劣质的)也不可能量产来做农具。
    但是我又不可能在这篇文字中说京城氏用铜器来提高了愚公的工效。因为那个时代,铜是很珍贵的资源,有来做农具挖山,大谬。
    所以这里说“京城初习得冶铁之术以归”,其实是假的。
     
      
    2. 推车
    ========
    京城初还学了一项技术,是“制车”。这里所说的车,当然不是战车,如果是战车,那对愚公挖山来说是没有什么意义的。
    所以京城初学得的当是某种“人力车”或“畜力车”的制作工艺,例如推车或牛车。那个时代象马车、牛车这样的东西,是贵族或仕官的座乘,如果说它用来运土,得笑死N多人。所以更进一步地推论是,京城初所学的能用于愚公移山的“车”,是一种(人力的)推车。
      
    这就麻烦了,推车这个东西,在京城初所在的时代,被发明出来了吗?
    如果是“车”就比较好回答,黄帝时代就已经有了,而且还发展出了专司制车的官职(叫车正),但形制上是独辕车,到了战国时代,才发展出双辕的车。车的样式呢,则主要是两轮的,少有四轮的。畜力方面,在夏商之前最多是三匹牛马,周朝后有四~六匹牛马拉的车。
     
    但推车呢?这个历史上也考证过,独轮推车出现在西汉(而且独轮车是中国传到外国的一项先进技术)。独轮车的问题在于制作简单,但操作复杂,一般人是不会用的。所以它出现的比较晚,后世学者推论,诸葛亮所制的“木牛(流马)”,就是一种特殊的独轮车。所以直到三国时期,独轮车的制作与使用,仍然是一件“技术活”。
    (单辕双轮战车(驷))
     
    (独轮车)
     
    而自夏商至春秋,战车大多是双轮。所以后来秦始皇要“车同辙”,就是要求这两个轮子之间的距离一样。既然双轮的战车很早就有了,那么双轮的推车会不会早于独轮车而出现呢?是的,距古书的记载,早在夏朝晚期的时候,就已经能够制造有辐车轮的轻便两轮车,但是这个时期的两轮车是用人力牵引,而不是推的。商时称之为“胡奴车”,周代叫“辎车”,秦时称为“辇”。在秦、汉之后则一般用来特指君王、后的所乘的车。
    两轮车有了,但初时是用来拉的(你看“辇”这个字,就是两人拉车),所以什么时候开始有用一个人来推的两轮车,就没得考证了。而我们在“愚公移山记”里说京城初学得的制车之技,就应归为这种两轮车(万不能变成了独轮)。然而是推还是拉,则不重要了。
      
    关于这个细节,在本书第二章的四格漫画中就有表现。我当时写漫画脚本时就写着“双轮推车”,等到明明、丘宝画的时候也一再叮嘱,一定是“双轮推车”。所以我手边就有了下面这两个版本的“双轮推车”——最终使用的丘宝版本的漫画,所以大家只得看到第二种。:)
    (版本一)
     
     (版本二) 
     
     
    3. 茶、马与盐
    ========
    基本上,原始商业交易是需求市场的一种表现。简单的说,是有需求就有市场。如果考究一下早期社会的资源分布,就会发现,如果一个地方缺乏某种资源,那么就不会建立起依赖这种资源的经济或文化。
    虽然不会有这种文化,但并不会消除掉这种市场需求。相反,他们会把这些资源当成稀缺商品,既稀缺则必然价贵。用在“贱买贵卖”的基本商业法则上,就变成了:如果一个地方没有某种资源,则必然存在这种资源的市场;反过来,如果富余某种资源,则必然成为这种资源的产地。
      
    基本的商业法则就是这样。而“愚公移山记”中的端木氏营商,有没有违反这些规则呢?换言之,就是三个问题:
    • 端木氏“闻齐东有海盐之市”是真的吗?
    • 端木氏从晋南拿“茶、布”,能到齐东去买好价钱,然后换回海盐吗?
    • 端木氏真的能做粗铁换茶、南茶北马的生意吗?
    这只要看看这些地方的资源情况,就可以有答案了。
      
    “齐东”是指今天的山东东部。山东又叫齐鲁之地、渤海之滨,所以愚公填土石于渤海,京城游学于鲁国,和端木去齐东经营走的是同一条路,至多是远近不同而已。因此呢,说智叟命长子“荷担而从”,以及京城氏命子“随焉”,都是可行的。齐国的范围,大概包括今天山东省偏北的大部,兼有今河北省的东南部,全境东临渤海。自古便盛产海盐,也是中原地区的海盐的主要交易地。
    再说晋国的茶。其实晋国(今山西)并不盛产茶叶,但晋商历来有交易茶的传统,他们主要在福建、两湖、安徽、浙江、江苏一带购买茶山,然后包销。所以晋国并不产茶(三国两晋前的文献中所见的重要茶叶产地,几乎都在巴蜀和荆楚),但也有茶叶交易的市场。因而在“愚公移山记”中说“(端木氏)晋中以易茶”也是可信的,但晋中不应直接理解为地理中心,而是政治经济中心就好了。
    但这个问题还没有完,因为那个时候人们到底喝不喝茶,还是个问题。陆羽在《茶经》中指出:“茶之为饮,发于神农氏。”这个说法落不到实处,古人一说什么东西好,就归到神农、轩辕之类的老祖宗头上,这种言论拿来做考据,大多不确实。中国茶文化的考据中,只能确定在三国之前,但早到什么时候,就考证不确切了,但远在秦汉、先秦时期的说法也都是有的。所以说,关于茶和饮茶,京城氏那会儿大概还是有,只不过经不起考证。
    最后我们说说“燕北易马”。燕国在哪儿呢?在夏商时期,今北京地区有一族人以“晏(燕)”为图腾,为族徽,为族名,并进而为地名、国名。后来周灭商,建立了诸候国“燕”,又称北燕。所以京城氏时期的“燕”就是这个北燕,位于今天的北京房山地区。从地理上看,燕北便是草原了,是游牧民族生活的地方,当然不会少了马。所以京城氏的生意,从晋中易茶,到燕北易马,南茶北马的生易,确实是可以做得的。
      
    我们今天的人写古文,尤其是写古代背景的古文,应该要慎重一些。能考实的尽量考实,不能考实的,在用字措辞上便要虚些。例如前面写到的“粗铁”,其实后来任真先生改到这一处时,便问“何谓粗铁”。我笑着说,大概是炼不成铁的劣质金属块。这意思,便是考据不充分,不堪细究,所以虚写为“粗铁”了。
    同样的道理,写贸易,起码要合符贸易原则。如果写错了,变成京城氏要拿晋地的盐去换齐东的马,那就得闹笑话:晋地虽也有(池)盐,但海边可不养马啊。
      
      
    4. 布与衣饰
    ========
    京城氏是拿茶、布去交易海盐的。这里的布是什么布呢?古人的布与帛是两种东西,前者是织布,后者是丝绸。帛这个东西,是要拿蚕丝来做的,出现的较晚。《孟子·滕文公》:“五亩之宅,树之以桑,五十者可以衣帛矣”,所以看起来,直到晚周战国时期,帛衣还是很名贵的,需要大户人家才穿用得起。
    虽然布、帛这两种东西都早早是有的,但事实上当时的一般民众还是穿麻布和毛布的褐衣。所谓褐是用兽毛捻线织布,还将毛打成毡子。这样的毡、裘也有很多种,有粗毛、细毛之分,也有皮质之别(例如孟尝君的狐白之裘)。但到了细毛、狐裘之类,一般人也穿不起了。
    所以那个时代,大略是敝体以布,敝寒以裘。大略就是这样一种衣着文化。从款式上来看,象安阳小屯出土的两个碾玉童子,都是头上两个丫角,身穿右衽,束带及膝的上衣,下穿长至脚面的裤子,脚穿平底鞋,其装束与辛亥革命以前的民间装束,并无多大差异。而早至商、周,象冕衣、寝衣之类就已经有了,也有冠、带、袂、履之类的服饰。
    说这些细处,主要是因为那套漫画中的人物形象,大概也不差的。但细节上也讲不实,丘宝的画法,大概还是以影视剧作了些参考,所以像与不像,自有别人去研究。我们不要追究得太细,只消不是画成光腚,或者树叶遮体的原始时代,便已是不错了。
    (东周男子服饰) 
      
    但端木氏是要拿“茶、布”去齐东交易的,这个交易做不做得成呢?我想大抵做得。因为晋(今山西)、豫(今河南)之地当时是农耕文化,而齐(今山东)是渔业文化,农耕文化的织布技术当然强过渔业文化。所以不管端木氏是拿布还是帛去齐国卖,总还是能有些获利的。
      
     
    5. 斗与车
    ========
    大家现在读到的“愚公移山记”中是没有用到“斗”这个量器的。此外,虽然有几处用到了“车(和车马)”,但也没有用“车”来做量器的。
     
    但在这篇故事的最初版本里却是有的。其一便是说“端木远商于诸国,钱资允盈,斗金而量,竟无数”。任真先生在回信中问:“斗金而量是何意。”我解释说,就是“以斗量金”。任真先生以为不妥,认为金不以斗量,便改成了“资财愈充”而已。
    但金真的不以斗量吗?这个问题我查了很久,但查不实在。因为斗是个容器量具,不用来称重。古人说“千金”是泛指多,而说“千两黄金”才是确指。而这“千两”却是指重量,不是体积大小。所以,如果某人要算算自家藏了多少黄金,想来是不用斗的。至于常见的成语“日进斗金”,据说已是出自明清小说,在先秦时是不会这样用的。
    所以在最终的“愚公移山记”中,没有“以斗量金”这样用来计算财富的写法。但是古文中也有以容器来度量黄金的,但不是用来计算个人财富,而是用来赐、赠之类。例如皇帝赏赐,有“斗珠”、“斗金”之类,这也包括有用斛来量的。因此,在这篇文言里面,还有一处说晋王“赐(公输)同金百斛”的,这一斛,就是十斗了。
     
    在这篇故事的最初版本里面,还有一处是用“车”来量金的。这是说到端木长“备三军之甲,集十乘之金”去见晋王,这个“十乘之金”就是十车的黄金。但任真先生读到这里,又疑,注曰:“金以乘量,愿慎考于古为佳?”我的确找不到这种用法的出处,但是我也想不出一种法子,能叙述端木长向晋王献了这许多的黄金。于是求计于任真先生,无解;又求计于另一位深谙国学的朋友,仍无解。后来,任真先生建议去掉这对句的句式,改作了“备三军之甲,金以十乘”,才算了事。
    “金以十乘”是指运了十车黄金,强调运送的方法;而“十乘之金”,则是强调度量的单位。相比之下,前者是要更合逻辑一些的,所以就有了读者看到的这个版本。
      
     
    6. 工程
    ========
    讨论“工程”这个词,是因为在文言中出现了“工程伊始”这句话。这句话大家都应该会读得懂,但问题是“工程”这个词,在讲述先秦的古文中能用得吗?
    既是写古文,写文言,那就该写得象一些,太新近的词是不应该用的。例如要在讲先秦的文言中写上“摩登”一词,可能得令人笑掉大牙。那么“工程”这个词,用不用得呢?
    其实“工程”在这个词,在唐朝之前是未见使用的。唐以前的文献里,多用“工事”。工程和工事其实是同义,在不混淆的情况下,也用“工”这个字。例如在任真先生批改另一处“工程始速”时,就建议用“工始速”。同样,“时工程殆半”,任真先生也批了一句:宜作“时工事且半”。
    不过最终这个词还是用成了“工程”。因为这本书是讲工程的,如果再换个词,大家并不好理解,也没有必要。只是大家应该清楚,这不是那时的惯用词。
      
      
    7. 其它
    ========
    这一篇内幕写到两三处与任真先生商讨改稿的事,但这些记叙只是廖廖。我与任真先生在近两月的时间里,对这篇文言多番校改,其中的细节我放到最后一篇再讲,这里就先不细说了。
    这篇文言里许多与史实相关的内容,大都经过考证。相关的资料文献,我也在最后一篇中去列举。大多数人不关心这些文献的细节,所以也不至于要在这里一一列出来。若只为图个门面上的事,便是不必了。
     
    下一篇将是这辑内幕中最精彩的部分,要讲的是军事、地理、战争与谋略。个人以为,“愚公移山记”固然是写工程相关的事,但最终所述的道理,却不全用于工程。就如同我喜好古文,未见得便要与古人对话,拿到今天来,讲些今天的事,也是可以的。
    器物之用,惟在人法。古文作为一种工具,一理相同。