面向对象的平面结构与软件工程生命周期模型的关系

软件从工程的角度讲有好几种生命周期模型。

所有的生命周期模型本质上都是功能导向的模型。这与软件本身的功利性当然是分不开的。毕竟不管从哪个角度看,它都仍然是一种人类工具。而不是人类认识。构建软件的过程本身也与科学基本上没什么关系。

软件是以“用”为其目的的。

软件开发范式本身与软件工程并不冲突。开发范式在软件领域更象是一种哲学,代表了开发者的软件认识观或结构观。而软件工程本身研究的则是作为一种过程的软件开发的学问。一个是哲学,一个是过程,显然不是同一种知识,怎么可能会冲突呢?

但是至少有一种周期模型与面向对象有点关系。那就是迭代。迭代模型的提出与面向对象在出发点上很可能是一样的,那就是两者都是为了应付“变化”。面向对象通过模仿人类的知识系统结构达到了构建更稳定系统也即更能应付变化的系统的能力。而迭代则是通过将需求切成几段也即“分而治之”的方法一点一点地得到了应付变化或者至少说,应付“认知”(其实非面向对象的开发范式中根本就不存在认知的概念。。。这种不认知,即它的“认知”)的能力。

一个不采用面向对象作为其开发方法的迭代模型,自然将沿袭“功能分解”的传统哲学。在这种哲学指导下开发出来的系统最终都是功能性系统。象很多硬件一样。是一种非常自然且普遍的系统构建方法。事实上,这个世界上绝大多数的系统或者说科学,都是基于这样的思想构建起来的。再说大一点,甚至整个人类文明的绝大部分也是基于这样的思想构建起来的。从这个角度看,软件开发从一开始就非常自然地走向了功能性道路这一点并不足为奇。倒是,如果它一开始不这么走,那才会让人觉得奇怪。因为那不符合科学发展的自然趋势。

科学是功利的。软件也必须是功利的。科学的手段也是功利的。软件的手段在今天,在大部分情况下,也是功利的。好象无可厚非。

因为此,面向对象一直都是很难被接受的一样东西。网上有文章说西方人从小就接受这样的思想,所以长大就变成很自然的东西。这里不能同意。因为其实西方人最擅长的并不是这么哲学的东西。他们最擅长的就是科学式的研究方法。他们在因果论或者说唯物主义上比我们更坚定。要不然,结构化程序设计或者说过程式开发方法是谁发明的呢?

他们发明的。(如果一切都是他们发明的,那么我们又一直都在干什么呢?。。。。什么都没干!)

为什么有些人说,面向对象有点象“禅”一样捉摸不透呢?

因为它就是那样的。

“禅”是什么意思?“禅” 意味着一种淡定,从容。它意味着处世不惊,兵来将挡,水来土掩的生活态度。

不惊的原因是:我有将,有土(这是赤裸裸的唯物主义。。。也是西方人之所以在面向过程几十年以后最终终于回到面向对象的“正道”的原因。。。。因为除了因果他们还“唯物”。。。。他们与我们在认识论上相比其实并没有什么太大的区别。唯一的区别是:他们比我们更坚定。。。。这也许就是我们是同一种生物的原因。或者结果)。

敌人要来犯我,必定有他的物质基础。我要御敌,也不必慌乱。因为我也有我的物质基础。

敌有兵,我有将。敌有水,我有土。这就是面向对象的生存逻辑。

把它用在软件开发中,意味着一种软件“观”的改变。在它看来,软件生产不是一种认知,而是一场战斗。软件的开发也不是功能分解。因为功能分解意味着一种解题的思路。这种思路应用在学术上是没有问题的。因为学术上大多面对的或假设的是一个相对稳定的逻辑环境。但是在实际生活中并不存在这样的环境或者不允许这样的假设。在实际生活中,问题本身就经常是个问题。巧妇尚难为无米之炊,一个没有办法定义的问题要怎么去解决呢?

这其实就是一种战斗逻辑:你并不知道所有。你只知道部分信息。你永远不可能完全知道你的敌人。你甚至不可能完全知道你自己。但是你却必须战斗。而且你还不能慌。 

朱元璋讲:高筑墙,广积粮,缓称王。兵法讲“兵马未动,粮草先行”。两者其实陈述的是一个道理:物质基础很重要。面对战争,最好的办法不是急着杀上去,而是搞好物质建设。这个道理历朝历代,在任何国家,都是亘古不变的。

数学永远都不是解决问题的最终方案。因为它不“存在”。它可能构成一个中间的方案,但永远都不可能成为最终的方案。因为它本身并不输出任何“物质性”的东西。

由此可见唯物主义的威力。

再者,其实只要看看唯物主义已经帮人类解决了多少的问题,那么对于认同它对计算机的贡献这一点也不应该存在任何问题。

Otherwise, why it helps? Or say, why it really HELPED? ......How it helped? I mean, if it can help human, why it can't help a computer? What is the difference between the human brain and computer "brain"?

Or, what is the difference between a brain concept and a computer concept???

When we're using a brain concept like "soldier",  we're actually using the concept or the "real" soldier? Does the "real" soldier exists?

No. 

Nothing exists outside of a brain. "Things" exist, because human brain exist, human thoughts exist. What exists is the brain, is the cognition, is the thought. Thought exist, so things exist.

要解释唯物的好处却必须使用唯心的方法。的确是一种讽刺。

我觉得我以后真的是要越来越少使用唯心与唯物这样的词语了。最近越来越觉得它们有问题。。。

转载于:https://my.oschina.net/digerl/blog/35251

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值