发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA
1 2 3 下一页 Go 3

面向对象范式需要数学思维吗?

         
2007-11-09 10:32
赞助商链接

大多数程序员都被灌输这样一个观念:一个合格的程序员数学要好.在面向对象范式成为软件开发的主流的时代,需要学好数学吗? 我更认同编程是一种艺术,尤其是现在的DDD,提供了更大的发挥空间. 数学本质上是"抽象",我们的建模也是"抽象",但这两种抽象过程是截然不同的思维过程.个人观点

2007-11-11 09:16

数学模型主要指的是算法。如果你需要对算法进行设计就必须对数学精通。不过现在绝大多数情况下,我们考虑的多是程序结构。一般常见的算法经过多年的发展,已经很成熟了。基本上直接引用就可以了。

2007-11-12 08:41

认同wlmouse的看法.

我们运用面向对象思维进行软件开发,主要是为更好的解决应用领域问题.应用范围不同解决思想就不同,DDD一书说到"不要试图对任何事情都进行领域驱动设计",j道有一篇文章说到了这个问题.

http://www.jdon.com/mda/oo_relation.html
数据表建模属于数学范畴思维;而OO建模属于哲学思维

2007-11-17 17:00

我觉得面向对象的思维和数学思维并不是相互排斥的,而是相通的。数学思维说到底也是一种逻辑思维,用数学方程的方式对现实世界的领域逻辑进行建模,最后体现的也是一套概念,判断,推理所构成的理论体系,具有形式化的特点,可操作性强,输入真实性的前提,就一定能得出真实的结果。比如x+y = z ,用真实的x和y值代入方程,结果x的值是唯一的。而我们的软件系统又何尝不是一个逻辑系统呢,说到底,我们的软件就是一个符号语言逻辑系统,只是把x,y等换成了一些程序语言的标识符,把加减乘除换成一些逻辑操作符而已,面向对象也只是把这些标识符和操作符再封装了一层,给定特定的输入值,我们的软件系统所跑出来的结果也是确定的。只是我们的符号语言系统形式化水平更高而已,能准确地表示逻辑形式,还能提高我们思维的速度和效率。

所以,面向对象思维并不是和数学思维排斥的,只是提高了数学思维的层次而已,不再是纠缠于具体的公式和算法,而是把整个业务领域当做一个方程来解而已。我们通常觉得两者相互排斥,是因为所站的水平线高低不同而已。

2007-11-21 14:53

数学思维绝对有用,有用的程度取决你个人本身对数学认识的程度。
计算机理论的很多词汇本身就源于数学。
比如每个对象都有函数,就是表面看起来没有,它也有默认构造函数。
在OO中,虽然我们用所谓哲学思维来构造对象,但最终对象如何构造的合理,那是要让对象之间行为有利于操作的,更是有利于计算的。
在OO中,你能说出行为/操作/方法/函数到底有什么区别吗?
然而他们都有潜在的实质。

函数公式大家都清楚:y = f (x) x属于定义域,y属于值域,f是function的简写.
写程序,你必然会关注输入,输出,在程序里输入输出的基本构成就是函数。x可看作输入状态数据,y当然就可看作输出状态数据。

在对象中,状态/属性/数据其实也说的是一回事。

回过头来看,对象中的属性和操作两部分,与y=f(x)有哪些相似性呢?

还有关于MVC, 多说两句,View称为视图层,视图其实就是状态数据+显示,状态数据就是x,y两部分,请求request是x, 响应respone是y.

Model称为模型层,那到底模型是什么呢?
从某种程度可以看作 y = f(x) ,再加上x,y所属的集合:定义域,值域。

control控制层起什么作用呢?就是根据客户那一边发起的输入状态以及相关信息,来指定服务那一边哪个模型去匹配,并控制模型向试图传回相应。

简单就这样讲讲。

至于数学思维具体在OO中怎么去应用,这都很难讲,因为这取决你用线性思维去思考,还是用发散思维去思考,而后者是和个人的思维特质和所能涉及的思维素材有密切关系的。
另外,数学本身这个学科的领域非常之广,所谓数学思维就可想而知了。
从一个侧面可以略窥一斑,古往今来有多少有着数学家身份的同时,还有这哲学家的身份:亚里士多德,莱布尼茨,牛顿,开普勒等等。你能区别开,这些人的思维是哲学的,还是数学的?

3Go 1 2 3 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com