抽象的软件,世界

回顾自己对软件开发的认识历程,大抵可以分这么几个阶段:
第一阶段,做程序员,刚刚上路,对软件开发的理解就是你有一堆材料,我有一把锤子,你要椅子我就做椅子,要桌子做桌子,那个时候最擅长的是听到一个需求马上在脑子里反应出该用什么技术去实现,几个类,几个页面。
第二阶段,开始接触分层思想,接触设计模式,知道原来做软件有技巧在里面,你要考虑复用,考虑扩展,同样是做桌椅,你要考虑内在的几何结构,承重要求等。
第三阶段,东西看得多了,了解到模式也分多个层次,了解到从word文档中的文字需求到最后的软件成品,有一套方法可以遵循,有一些原则需要遵守;再到后来,就是架构风格,以及软件之上的业务领域的分析方法。
做软件并不是我钟爱的工作,虽然根据业务需求构建一个漂亮的设计蓝图出来是一件让人兴奋的事情,但我始终觉得,人生在这个世界上,认识周围的这个世界是第一重要的事情----这是第一个站立起来学会思考的人所面临的事情,也是任何一个呱呱坠地的婴孩睁开眼睛后所面临的事情。
幸运的是,我发现做软件并非让我远离了认识世界的追求,就像佛家在一粒沙一滴水中看世界一样,软件世界中也藏着这样的方法。我从这篇文字开始思考的,就是从软件角度去看待这个世界,或者认识现实世界的方法。----这听上去有点蚍蜉撼大树的感觉,不过笛卡尔大哥说的对,你不思考,怎么证明你的存在呢?我就这么思考着,让上帝笑到岔气儿吧。
在上面描述的对软件开发的认识历程里,我觉着有个东西像是从海底慢慢升起来,越来越高,直到矗立在跟前,让你无法他视,这个东西就是----抽象。
抽象是透过表象看本质的过程,它可以用在软件开发的多个层次上。在业务层次上,一个大的复杂的业务需求可以被刀片一样的抽象思维切割,分解,然后再在每个相对小的问题领域上钻取挖掘其本质,发现其间共通的东西,和与传统的经验性的事物相似的属性----越接近本质,概念应该越简单。软件世界如此,现实世界也如此。从这个角度讲,姬昌是个好分析师,把世界抽象到八卦,老子更加是个好分析师,把世界抽象到了阴阳,道,乃至混沌。
在具体的软件层面上,无论是在系统级,组件级,类级,抽象这把刀都可以拿来用,把面对的问题领域比做一个球,你可以从任何角度切入进去,沿着不同的关注面将问题分解开来。
正是因为纷繁复杂的事物都可以抽象到更加接近本质的简单的东西,这就提供了一条解决复杂问题的思路,[b]从简单的原则原理起步,逐渐推导到高一层的结论,一步步逼近现实问题[/b];当然,抽象有多个层级,从哪个层级起步就取决于分析师的经验和掌控能力,以及逻辑推导能力。把这个方法用于个人的认知重构将会是一个伟大的工程:把大脑清空,从简单的本质的原理起步重新搭建和清理自己的认知结构,这工作想想就让人兴奋。
也正是因为有抽象这样的工具,对软件世界的认识不再像看起来那么困难,因为沿着抽象阶梯往上走,总能走到一个可以被一个普通的脑袋理解的台阶,从这里开始,可以再按照需要沿着某个分支往下走到更有意义的程度。研究软件如此,认识现实世界也如此。
我相信类比老子“道生一,一生二,二生三,三生万物”的思路,软件世界里的事物可以划分排列为一个类似金字塔的概念模型,或者更软件一点,是一个树状的概念模型(网太复杂了,摒弃掉不重要的关联关系,树模型更容易接受),我们所接触的语言,工具,框架,模式,原则,方法等所有软件概念都可以按照不同的维度排到这个树上。现实世界也可以,从一个起点开始,按照不同的维度不同的抽象等级将万事万物排列到一颗树上。这个思路可不可行,需要好好考虑和实验一下。
抽象仅仅是哲学领域中众多认识事物的方法之一,这让我觉得,做架构师或分析师需要掌握不单是软件领域的那些方法,更重要的是哲学上的方法论,用这些最高层的方法武装的头脑,会具有分析世界的能力。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值