2007年9月19日星期三

困惑

昨天在查看自己原来写的程序的时候发现自己似乎模型建立的不够多。很多功能似乎还是由不同的方法相互配合来完成的。而不是对象之间的协作。这种情况让我觉得似乎很不愉快。我想这是一个对象划分粒度的问题。

面向对象要求封装,其实程序对于算法的依赖似乎就没有终结过。封装解决的是重用的问题,而不是算法的问题。通过对象的认识和分析,似乎我们找到了解决问题的简单方法,但其实没有。没有简单的方法,而利用模型来分析问题只是一种普遍的解决问题的方法,不一定局限与程序的设计上面。而恰恰程序设计方面所用的模型就很不直观。比如UML。UML解决建模问题,不仅仅针对与程序设计。而我个人认为,用UML来描述程序是很不直观的。特别是算法,用UML模型来描述算法,还不如用自然语言写在纸上或者用数学的描述方法来的更直观。

所以模型是出现在程序之外的。可以在任何地方,但最终要在你的脑里。
我们现在写的很多程序,其实用不太到很多的算法,大多数的情况都是将数据移动一下,或者做一些判断在移动一下。这些实在是太简单,用不到太多的数学或者物理知识。但是如果我们要写一个虚拟现实的仿真程序,恐怕就没有那么简单了。

没有评论: