OO在哲学上是正确的

Java是命令式对象范式,这一点好像没有人注意。摘录一段大家讨论一下:


不同于基于图灵机的命令范式和基于λ运算的函数范式,面向对象编程范式没有直接的理论模型来源。它似乎如同拼地图的男孩那样,仅仅是因为思考方式发生了变化,所以它的逻辑体系就自然出现了——对象/类、继承、方法改写、对象的替换性等等。虽然各种面向对象编程语言吸收了命令范式和函数范式大量技术,它之所以被称为“新”范式,正因为它采用了完全不同的看待程序的视角。
除了新的思考方式,它还剩下什么呢?
面向对象编程范式在哲学上是正确的——它是真正的人的思路。

>仅仅是因为思考方式发生了变化
角度决定深度,思路决定出路,思路高于知识,这就为什么解释社会上不少成功者都是学历不高的人。世界上没有一个东西只有利,没有害的,这就是辩证法或称为老子的道。

请教banq先生
在大学一年级讲授编程导论,使用面向对象优先的方式、Java语言

在这种条件下,你认为是否能够(或者说合适)介绍一些简单的模式?
还是介绍LSP、OCP这些比较好?

>你认为是否能够(或者说合适)介绍一些简单的模式
对于大一学生,主要是让他们了解OO是什么?不必太深入,深入也没有用,需要一些实战经验,所以,通过简单介绍Adapter/Facade/Proxy/Command等几个模式,让他们透过模式了解OO是个什么东西(如接口有什么用)就可以。这一点非常重要,其实很多老程序员做了很多年程序,但是自己还是没有准确把握OO是什么,容易受到误导,这也是当前软件领域跟风浮躁原因之一。
[该贴被banq于2007-12-18 17:38修改过]

谢谢回复。

无是无非是并非老子的专利,佛教里面有个故事:文殊菩萨让善财童子去采药。善财问:“山河大地皆是药,不知菩萨要哪种?”,文殊菩萨说:“既是药且样样采点儿”。善财这才随便采了些野草回来,文殊菩萨执药示众人:“此药既可杀人又可活人”。

没有病就没有药,放到程序设计领域,没有问题也不存在技术。对准了病,砒霜都是良药;对错了病,蜜糖也是毒药。明白“无是无非是”的道理,高下之争就没有了。

banq 说的很有道理。
现在大多数还是用非OO的思想去做OO的事情。
很多时候创建对象就是为了在里面写方法。。。
真的需要多思考。