>> 我一直很奇怪,中国搞软件那么多年,也有很多牛人,有各种软件媒体和聚会,为什么这样简单的道理今天才逐步为大家认可?

原因很简单啊,让一个人在知道牛顿定律之前就能够理解相对论是很难的。

各位大侠扪心自问一下,在你理解所谓的“思维”、“抽象”之前没有学习过至少一门计算机语言,做过若干实践项目;在你理解OOA/OOD之前有没有学习过OOP。

举一个简单的例子来说,自然辩证法是目前哲学的重要基础之一,是人类的重要思维方法,但是你能让小学生理解自然辩证法吗。

换一个角度说,一个事物有多个方面,一个方面重要并不说明另一方面不重要。“抽象”是重要,但是“抽象”来自“具体”,不能因为“抽象”的重要而就说“具体”不重要,恰恰相反,“抽象”的重要是因为“具体”是重要的。

各位谈得非常好,其实我也思考了这个问题,为什么很多程序员都不认可思维方式转变,而执著于技术细节。

当前有一个普遍现象,技术人员之间交流经常津津乐道某个新技术如何,今天Spring,明天RoR,但很少对他们后面得思想IOC/AOP 或Evans DDD大谈特谈,这样下去,国人程序员永远是别人技术的使用者和跟随者,根本不必谈超越了。

技术人员比较着重实用,他们力图避免谈思想谈思维是为了防止给别人一种空空而谈的感觉,其实务实和务虚都是需要的,这就叫入得进去,出得出来,老子说得:为学日益,为道日损,为达到对简单道理的大悟,必须靠务虚的交流,从别人思想中吸取精华,才能触发自己。

所以,我感觉要让中国程序员务虚务实两者都行,看来是和文化意识有关,这就扯远了,我们在这里就做个示例吧,起个头。


相关帖子:
框架是银弹?还是可能是?如果永远都不是,是应该改改方向啦
http://www.jdon.com/jivejdon/thread/32601.html


>>所以,我感觉要让中国程序员务虚务实两者都行,看来是和文化意识有关,这就扯远了,我们在这里就做个示例吧,起个头。

支持banq!

在j道潜水了很久,发现很少有人谈论思维方法,有可能是大家觉得这太务虚了吧,而我觉得实践中的思维方法是非常重要的,所以我才写下了这篇帖子,希望能引起大家的共鸣,如果大家能从这里得到一点帮助,我的目的也就达到了。当然,也非常希望大家提不同看法或补充,甚至是批评,思想要交流,要碰撞才能升华。

思维方法最终还是要在实践中应用,也希望大家多多交流实践中的一些感受,和有思想的人交流实在是一件快事!

很赞成前辈们的观点,这点我深有体会.

就拿我们国家教育来说,它有很多的地方很失败,太教条,太死,没有太多的思考性,教出来的学生很多思考能力不强(部分老师他们本身的素质就不高),你不要看都是什么本科毕业都像很有思想是的,就拿我高中来讲,我有几个好同学,有一个学习非常的好,长大了他现在也很不错,哪时候这个家伙就很会思考问题,他总与平常的孩子不一样(我就认为只有善于思考,不追求其形式这样学习才是真正的学习).还有一个不爱学习的同学,但他与我哪个学习好的同学一样,都善于思考,不为了怎样而怎样结果现在很是人才.
反观哪些学习还不错每次考试都高分的与我上面所说的哪两个同学差距可就大了,只能说一般,全面平庸.他们就没有打破常规思维,被一些教条化的东西给瞎了(有一部分老师是有责任的).
还有就是我在大学参加电子竞技大赛(被列为第99项体育运动)魔兽争霸.当你知道这个竞技游戏的基础要素后,你就要学它的微操作,硬功夫基本功,还有就是战术大局观,但这时在往上走就出现分化了,有的队友重视微操作,有的队友重视大局观(我的微操作还成,但我看重大局关),你说到低微操作比大局关重要呢,还是大局关比微操作更重要.
这个都是我们经历了无数次的训练得出了解果.大局要比微操更重要(微操作同样也重要只是与大局关比就差一个层次了),如果你重微操做你与别人比赛时(对手大局关比你高出一个档次,操作没你好)你可能一开始很风光,你有优势,但到了中盘,与收尾,你绝对会被你的对手用尽种战术以及他对全盘控制能力所击败.如果你重大局关(也就是思想)就算你的操做差一些你也没问题,只要你的战略比他高就没问题.如果两个选手大局关,操做都一样的话哪比的是什么,告诉你,哪就是细节决定成败(心里素质也要考虑).
所以思维是最重要的无论作什么都如些.
当我们以世俗的小境界去观察事物时,常常会以眼前的有用和无用来进行判断.
当你具有大境界时,才能够理解什么叫做"天生我材必有用".

ps:Spring的IOC与一个管理者很像啊,就是管理者比它IQ高.
我是不是说的有点跑题了呀好像到南极了.说的不对的地方讲道友指教.

每次讨论到这些问题的时候,好象总会分成俩派,一种支持形而上,一种支持形而下的,互相争得不开开交。

其实它们之间根本就不是相互排斥的,而是相互促进的,你知道“小”的,才能更加理解“大”的,你理解了“大”的,反过来就能促进你理解“小”的。

所以这两方面可以同时学习啊,而且只有这样,才学得更快。

实践出真知。
三年前见IoC、AOP,不知道是做什么用的,不过是人云亦云。近两年随着实践的深入了,遇到需要解耦合的问题多了,这才对此类思想领会深刻。真真切切引入实际项目,愈发体味其精妙。
三、四年前也做三层,不过是赶时髦。好些代码放的地方是不好的。后来经过长期实践,在jdon上看了一些重要文章,实践了一点RoR,看了一些DDD的内容。这才真正搞明白dao、service、web应该做什么,代码应该放哪里才最清晰、重复最少、重用度最高。
真是不断学习,不断思考,不断实践,这才会有进步。

>>>>每次讨论到这些问题的时候,好象总会分成俩派,一种支持形而上,一种支持形而下的,互相争得不开开交。

没有哪个意思啊,其实就是要看特定的事物,特定的场合,我是这么认为,两手都要抓,只不过有个轻重,这个与你做的向上,还是向下关系.要随机应变,没有固定的!

回味中...好帖就像千年老酒,得细细品味,让人沉醉

>抽象,就是抽取事物一些本质的东西,剔除次要的表面东西,但是千万别忘了后面那个象字,那就是抽取之后还得让事物象原来的事物,我们很多人在软件设计中抽取类的时候往往就是抽而不象,变了形,最终不能满足用户的需求。抽象也是一种重要的科学思维方法,同样,抽象也必须从哲学辨证法的高度辅以具体的科学思维方法,是一个感性具体到抽象再到理性具体的过程,感性具体到抽象是解决“抽”的问题,抽象到理性具体是解决“象”的问题。而我们的抽象往往只是抽而不象,就是缺少或者忽视了后一个环节的原因,而且我们的抽象也往往是孤立的,没有发散性地从多个角度进行抽象。>


那么里氏替换原则是不是这个设计抽象的一个准则和体现呢?

[该贴被luozhike于2007年09月12日 20:56修改过]

相对文章,我最喜欢看回复,也许从回复里,能得到更多的东西,同时也能领悟自己看文章所不能领悟的东西!
一个人看是片面的,多个人看才能真正挖掘出里面隐藏的东西。
做java开发一年了,回头看看自己走过的路,依然是非常无知,可以说什么都不会。痛定思痛,决定从零开始,重新进入这个领域。加油!同时也需要各位前辈的帮助!

“横看成岭侧成峰,远近高低各不同.”这就是思维的产物。
对于思维、抽象、建模、创建框架等概念似乎很流行,但又有多少人真正理解。不知道有哪位大师能够在BANQ提供的平台里,思维出一个典型的例子供大家讨论,并总结最后的结论作为理解这些概念的模型

我是个java初学者,看了这篇帖子我更有信心学好java了

相关继续讨论:

java基础真的不重要吗?
http://www.jdon.com/jivejdon/thread/32678.html

关键在于我们对基础的定义,技术不断在发展,在变厚,我们的基础定义就不能老是停留在过去水准,也必须变厚,重新定义。
[该贴被banq于2007年09月16日 09:59修改过]

>>那么里氏替换原则是不是这个设计抽象的一个准则和体现呢?

to luozhikee:
这个问题问得很好,个人观点:里氏替换原则正是检验抽取后的事物象不象原来事物的一个准则和体现。
所以,从多个角度看问题,经常能发现很多东西都是相通的,大有一种“原来你也在这里”的感觉,这样才能真正地融会贯通。

这其实是个理论和实践相结合的问题。
实践--理论--再实践--再理论
软件开发过程,要务实也要务虚,不可偏废。
科学的维物辩证法的确对具体的工作有思想上的指导作用。
不要再提老子的道,那是维心的辩证法!净来虚的!