http://www.jdon.com/42212/15 中国汉字含义太丰富,多元的解释都可能合理。 假如世界是一个“混沌”,那么我们切分这个“混沌”的原子单位是什么? 化学中是“分子”,物理中是“原子”,生物中是“细胞”,那么软件中是“什么”呢? 或者换一个说法,软件对这个“混沌”切分的基本“粒度”是什么或者应该是什么? 拿欧氏几何作一个类比。 点:事实 VS 事物 线:场景 (表示为一组事实或一组相关的事物参与的活动) 面:领域 体:系统 边界是一个“圈”,“圈”可大可小,可以是点、线、面、体等等。现在的问题是,软件中的“点”是什么?“边界观”或者“辩证法”并没有告诉我们这一点,他们是方法论,还不是世界观。 OO切分的基本粒度是“对象或事物”;FP切分的基本粒度是“函数或过程”;逻辑式编程切分的基本粒度是“事实”或“命题”。 如果说软件是关于“如何表达思考”的学科,那么思考的“粒度”(概念细胞)肯定不会有统一标准? OO语言,适合将这个“混沌”切分为各个“对象”(如PPT,DESC,Role, MI等)。 FP语言,适合将这个“混沌”切分为各个“函数”。 当然,可以认函数是个对象,或者对象是个函数。也就是说FP和OO甚至可以认为没什么不同。 逻辑式,适合将这个“混沌”切分为各个“事实或命题”,而后进行推理。 逻辑式的命题与推理,与FP的函数与参数或OO的对象与消息,是有区别的。粒度的选择,取决于业务目标与需求,也受现有的语言描述能力的制约,更受我们思维习惯的制约。试问,我们习惯于逻辑式的思考方式吗?