辩证法思想分析软件Software工程问题



  近日某教授所做“智能机器困境”专题讲座引起了在座热烈讨论其中讨论得最热烈问题就是:“某说法是唯物论还是唯心论?”

  其实“某说法是唯物论还是唯心论?”这样争论大概是永远不会有结果其主要原因是:不管是唯物论还是唯心论人们对它概念即使是专家也不能说就完全清楚了有些专家自以为清楚其实并不完全清楚更不用说普通老百姓了只是简单地学了些名词而已

  上面观点让我们举个例子就明白了

  有些人认为老子是唯心论些人认为老子是唯物论有些人可能研究过而有些人根本不知老子的所言为何物也跟着喊“老子是XX论”它确实太博大精深了本人对他也是知半解在此只能谈谈自己些浅见

  老子句是“道可道非常道;名可名非常名其中第个“道”可以解释为“自然规律”第 2第 3个“道”可以解释为“用语言文字描述”;第个“名”可以解释为“事物概念”第 2第 3个“名”可以解释为“用语言文字定义”因此“道可道非常道;名可名非常名”翻译成白话文就是“如果个自然规律可以被(有限)文字语言描述那么这样描述就不可能是完整成不变需要根据条件变化而修正;如果个事物概念可以被(有限)文字语言定义那么这样定义就不可能是完整成不变需要根据环境变化而调整这句话实际上介绍说明了语言文字相对于宇宙世界局限性而这就是老子中心思想

  举个具体例子介绍说明大家都知道Jack就是某某某某就是Jack说起来好像都知道了但要唯地说清楚Jack全部特征却不是那么容易说得够不够明白也是根据人们各不相同需求按姓名有同名同姓;加上按出生年月也有其他同年同月;再加上按地址地址也是不断变化就是连姓名都有可能变;如果再加上按体型相貌信息更是有限文字(即使是 2进制)无法唯完整描述就像指纹信息或照片信息根据采集精度要求也有重复率也会根据精度提高而增加存储size

  因此假设有有个单位需要建设个信息管理系统其中条需求是:要能够存储每个人所有信息我们能不能满足这样需求呢?

  答案是否定这样我们建立数据库表结构中就必须含有无穷多个字段才能满足这需求即使计算机再如何发展其存储空间也是有限也就是说即使把全世界所有硬盘拿来也装不下个Jack完整信息不要说个人了个π都装不下

  所以老子中心思想在软件Software工程中可以翻译成“无论什么时候要使系统能完整地存储个π这样需求都是无法满足或者简单地说“即使把全世界所有硬盘拿来也装不下个pie”(所以aseasyaspie应当改成asimpossibleasπ)这大概也算是所谓“智能机器困境”中个吧

  再举老子句“大音希声”为例这可以从很多角度来解读种可能解释是老子认为世界上有些声音是人们很难感觉得到像次声波或超声波就可能是他所谓“大音”,“希声”就是很少有人能够听到或感觉到(老子曰:视而不见名曰夷、听而不闻名曰希)如果没有人发明超声波仪和次声波仪除了蝙蝠、海豚等等动物外也许人们永远也无法理解这类“大音”存在当然也许“大音希声”真实含义是无法用有限语言文字来解释例如我们也可以把“大音希声”解释为“真正大道理是很难用(有限)文字来介绍说明”、“真正大道理人们只能感觉或发现他很小部分”、“掷地有声话是不会经常听到”或者“上好东西是很少去用吵吵嚷嚷方式去宣传广告(酒香不怕巷子深)”语言文字能力是有限却给人带来无限想象空间 [Page]

  通过以上例子和分析可以介绍说明简单地断言老子是唯物论还是唯心论是很荒谬无论唯物论还是唯心论其概念都是人们根据自己有限感觉创造出来并用人们创造出来有限语言文字表达
当然老庄哲学在论述到具体实战时有不少相对消极思想这些思想是不符合时代潮流在当代形势下是不可取同时这些思想都是学术层面上讨论和封建迷信没有任何联系

  上面所引用老子章句无非是为了介绍说明了人感觉能力是有限而用来表达这些感觉语言文字能力是更有限所以其弟子庄子说:用有限语言文字来全面地描述这个浩瀚宇宙是MISSIONIMPOSSIBLE如果味执著地追求也许切努力都只带来更多痛苦也许生命会在寻找中徒然逝去能有那么天吗你终将你世界占有?也可以用软件Software工程术语说需求完整性和有效性是争对特定时间和特定对象而言随着时间和对象改变而有可能改变

  所以在争论双方无法用有限语言文字全面地描述或解释什么是“心”、什么是“物”、什么是唯心论、什么是唯物论情况下或者在争论双方根本还无法完全理解什么是“心”、什么是“物”、什么是唯心论、什么是唯物论情况下去争论“某说法是唯物论还是唯心论?”是永远不会有结果
当然并不是说这些争论就毫无价值它可以开拓思路、活跃思维至少也可以作为PASTIME、SHOW、或者作为谋生手段创造个又商业机会和就业机会使人们生活丰富多彩

  所以当你在参加场辩论竞赛时无论你抽到是多么不可能获胜论题你都不要灰心认为自己输定了在辩论双方还没有把论题中概念阐述清楚时辩论会就已经time’sup了裁判们主要是按照他们自己标准根据对你在场上表现印象来评判你输赢辩论双方乃至裁判们可能到最后自己都没有搞清楚那些概念甚至连刚刚在辩论什么都有可能记不得了那并不重要重要是参和和获奖

  唯心论和唯物论对其概念理解区别他们也有区别程度共性其实他们都是这个世界众多观点中部分是某种世界“系统模型”从两个区别角度分析“视图”(View)他们都有可能被些云雾所笼罩或者被些折射现象所扭曲正所谓“横看成岭侧成峰盲人摸象各区别不知大千真面目只缘身在红尘中”



  世上人们各有所爱厚此薄彼有的兼收并蓄者有的概否定者有的就像有些人喜欢白天他们看到了白天价值;有些人喜欢黑夜他们看到了黑夜价值有些生物生命如此短暂他们上午出生下午就死了对这样生物去告诉他黑夜如何如何不是白费力气吗?

  白天或黑夜、天晴或下雨、炎热或寒冷去掉任何部分这个世界都是不完整所以电影莫斯科不相信眼泪主题曲说得好“自然界里没有坏天气任何天气都是见面礼”;所以聪明“黄帝”在内经中说“智者察同”  无论是萨特存在和虚无还是罗素哲学问题、波普科学发现逻辑、西蒙娜·德·波芙娃第 2性、詹姆斯实用主义等等他们用语言构造了各种各样思想体系就像克隆羊多利从无到有从单个或数个细胞按照基因规则不断地进行自我分裂、复制直到死亡复归到无 [Page]
难怪身陷围城赵辛楣说:“从我们干实际工作眼光看来学哲学跟什么都不学全没两样就好像软件Software行业某些人心里说“从我们干实际工作眼光看来学软件Software工程跟什么都不学全没两样这大概也是“智者察同”吧

  在日常人际交往中我们要把自己注意力放在彼此共同兴趣、共同需求、共同利益、共同目标上寻找自己和别人共同的处求同存异这样才能做到将心比心当你需要同事对你多关心、多交流时先想想“己所欲、施于人”别人也有这方面需求那就从我做起主动去多关心同事、多和同事交流吧;当你心怀不满准备贬损别人时先想想“己所不欲、勿施于人”别人也不希望受到贬损那就尽可能多提建设性方案或者是善意批评这样才能建立共事基础——信任“人和人的间冷漠往往都是误会没有谁故意伤害谁只是棵含羞草遇到了另颗含羞草

  在软件Software需求分析和设计中“智者察同”思想具有相当指导意义例如在十多年前建设某个信息管理系统中对某个信息业务可以分为登记、注销、延期、迁移、变更等等我们当然可以把它当成区别对象把操作日期等存储在区别字段其日志信息存储在区别表中但是这样结果是造成查询统计不便、数据抽取麻烦、更有甚者是业务类型判断(当在同天对同个人做两种以上区别业务时用哪个业务日期为最大值来判断其实际业务类型电脑也会“雾煞煞”)因此发现归纳出这些业务共同的处非常必要

  在面向对象分析设计中“面向对象=对象+类+继承+通信”其中“类”是组具有相同数据结构和相同操作对象集合面向对象分析设计最基本任务就是在搞清所有对象后根据区别对象组合抽象出具有类似特性和共同行为对象模板这样就形成了类因此分析设计水平很大程度上和分析设计者“察同”能力和经验有关个软件Software系统分析设计水平影响到这个系统在使用时各项质量指标

  科学发现过程就是在些类似现象中发现并证实这些现象所隐藏共同规律过程就像牛顿从掉落苹果中联想到其他下落物体具有共性而发现了万有引力这些规律是用有限语言文字来描述观察环境条件也是有限因此会随着观察对象增加、观察环境变化、观察者区别而需要在语言文字定义描述中加以修正完善

  “智者察同”思想在当今世界企业管理理论中也在产生巨大影响第 5项修炼“共同学习”和“共同愿景”自适应软件Software开发“共享使命价值”流程管理“整体最优”瓶颈管理“物流平衡”项目管理(project management)“利益共享者”和“团队(Team)致性”等等等等美国人在反省他们那种西部牛仔式个人英雄主义而“每个人是条龙合起来是条虫”、“盘散沙”中国软件Software业又该如何?

  释迦说:“人生命只在于呼吸的间(当下那种平衡)”这世界上什么人都有人只喜欢吸气人只喜欢呼气人都喜欢人都不喜欢人在婴儿状态下是不需要(常规)呼吸人死了也不再需要呼吸据说还有那些练过定程度YOGA是可以在几天内不需要(常规)呼吸但正常人都是需要(常规)呼吸既需要吸气也需要呼气因此该吸气时就吸气该呼气时就呼气平衡就好不要进气时长出气时短;也不要进气时短出气时长 [Page]

  这是不是万事万物生命辩证法呢?

  再回首看看古人“智者察同”其后句是“愚者察异”也许古人说有其道理但是“察异”者是不是就该被当成“愚者”是值得讨论“察同”有察同需要和时机“察异”也有察异需要和时机就像前面那个信息系统需求分析例子如果不能准确区别区别业务的间区别如果不能把系统功能分解到底是无法为设计提供准确而有效依据就算“智者察同、愚者察异”吧智和愚也是相对而言而且智有智用武的地愚有愚可爱的处有时要智有时要愚该智时智该愚时愚

  有人说软件Software需求是为了介绍说明软件Software系统“做什么”软件Software设计是为了介绍说明软件Software系统“如何做”这种说法本来没有什么问题不过如果把它绝对化就有问题了如果把个软件Software系统“做什么”分解成并联和串联若干个“做什么”功能并且直分解下去就好像是在告诉大家“如何做”了而且在需求中也应当介绍说明客户原来“如何做”客户要求或希望“如何做”软件Software设计在介绍说明软件Software系统“如何做”同时也要介绍说明准备创建出来层、每个模块、每个对象、每个类“做什么”

  曾几何时PSP、TSP、RUP、ISO、CMM······在中国红极让许多公司投入大量人力物力财力;没过多久ASD、RAD、AP、XP、Crystal······受到众多员和老板青睐员甚至以ASD、RAD······为nickname仿佛自己就是ASD或RAD······化身

  为前者投入是可以提高公司知名度和客户感觉上档次当然也有公司真把它当成提高软件Software质量措施的而受益公司则是为了获得某些资质不得已而为的;青睐后者是为了能够尽快地获得经济效益在开发过程中满足客户不断变更需求并且可以减少项目工作时间、成本和编写文档烦恼



  前者说:“把要做事写下来按写内容去做把做过程记下来;要不断积累经验数据要持续改进”;后者说:“客户注重是可用系统可执行我们注重是效率和人性化要注重沟通客户最好跟随在开发现场我们做最简单事情都有道理

  前者说:“软件Software开发就像建造艘战舰要精心设计要注重架构合理和平衡在施工的前要做好设计图纸评审并且在准备变更时要非常谨慎不然将来下水航行就有翻覆危险”;后者说:“这是个客户需求和现代技术不断变化时代软件Software开发就像攀登座从未爬过高山或像摸着石头过河应该走步看随时随着客户需求变化而变化”
  
  相对而言前者是“正规军”后者是“游击队”

  前者是“理想主义”后者是“现实主义”

  前者被划分到“重量级”后者被划分到“轻量级”

  对于开发个小型软件Software系统来说选择前者可能造成资源浪费、时间延误、各方不满、过于复杂豪华软件Software架构;对于开发个大型软件Software系统来说选择后者可能造成软件Software系统架构后期失衡、代码和设计风格前后不而难以维护就像建造座高楼层是砖混式第 2层改成框架式建到第 3层时因客户需求变更只好再加部电梯(注) [Page]

  精心设计战舰也可能在设计或施工中某些部分点小小不当或疏忽而造成灾难;号称“所见即所得”边做、边提需求、边改、边完善“ 4边形”所谓“快速”软件Software开发也可能竟然是周期延续最长项目无休无止需求变更而永无止境

  “银弹”在哪里?哪里有“银弹”?

  也有人论述说:前者经过适当裁减也可以和后者相结合两者可以在同个企业存在视公司条件和具体项目情况而灵活决定这样既可以提高公司知名度和软件Software质量也可以在必要时能够尽快地获得经济效益

  确实成功软件Software过程不但要将软件Software质量效益最大化将总体成本、总体周期、项目风险最小化还必须将人们优点最大化将他们缺点最小化毋庸质疑每个人都存在优点和缺点需要项目管理(project management)者扬长避短、才能充分发挥现有各项资源并达到预期目标两者结合不在于当有个项目时去选择是使用前者还是后者而是应该把两者思想(规范标准性和灵活性)和思路方法有机地结合起来形成能够和本公司实际情况相符合套软件Software开发体系这是每个软件Software企业管理者应当研究问题

  对于那些在为明日生存而在软件Software大海中苦苦挣扎小舢板来说选择前者可能是种奢望选择按前者操作后果可能是要背负沉重负担而生搬硬套地选择前者更无异于死路但如果不关注前者趋势不学习并且适当地实战前者思想就很难有所发展;而对于已经成长壮大软件Software航空母舰来说选择后者似乎有些和身份不符或者会突破公司规范标准也有软件Software质量上风险但如果过于笨拙也可能撞上冰山或搁浅暗礁也可能因过多损耗、过少补给造成在成本、进度甚至市场上失败而衰亡

  小舢板不必羡慕航空母舰魁伟航空母舰也不必羡慕小舢板轻巧但这是个不断发展前进年代大家都必须和时俱进才能走进新时代
Tags:  辩证法 自然辩证法

延伸阅读

最新评论

发表评论