关于语言基础与设计模式基础的争论。

/**

写在前面 by zwonder:

这是我在jdon上看到的一个帖子,很有意思,原名是“j2se基础的重要性”。 网友“zjlzjlzjl”认为j2se基础是基本的东东,掌握了这个才好谈及设计模式,或者说应该已j2se为基础讨论设计模式。  jdon掌门人“banq”的观点是:设计模式才是最基础的东东。  双方站在不同的层面,进行了一场小小争论,很有意思。我想这些对于刚刚接触设计模式和刚开始编程的人来说,都是值得一看的。 

写在前面 Over

*/

原文出自:http://www.jdon.com/article/31338.html

内容如下:

j2se基础的重要性

作者:zjlzjlzjl 发表时间:2007年04月03日 18:40 回复此消息回复

原贴网址: http://www.jdon.com/jivejdon/thread/31338.html

 

大家都发表关于模式,框架的话题,难道对这些模式,框架掌握了就能把项目做好了吗?
模式,框架固然重要,最重要的还是基础,还是java语言本身,请banq老师回答我,你为什么关于基础这方面的东西说很少那,你不觉的这样会误导好多学java的人吗?你是不是觉的自己的水平很高了,不需要强调这方面了,我这不是书你给大家提的建议不好,而是说你应该多关注一下java的初学者,而不要一味地讲高深的东西,觉的自己的水平很高一样,你能采取我的意见吗?请尽快回贴,谢谢bang老师.

回复:j2se基础的重要性 发表: 2007年04月04日 10:13 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08
我不想说太多,我可以告诉你我目前的情况:

我已经几年没有去翻j2se了,这不是说我对j2se滚瓜烂熟,而是几乎都记不得,我自己做的系统都是基于我自己的API工具和框架。

当然,不是说开发不需要j2se,需要时会通过google来查,但是击中j2se API的几率很小。

所以,我们可能要反思一个问题,我们过去包括你的思维中关于软件基础的定义是否有误区?是J2SE API是基础?还是模式设计是软件基础?

传统教育和习惯都认为前者,而我认为是后者......这也可能是中国软件不能起飞的一个重要原因。

以上个人观点,仅供参考。

 

回复:回复:j2se基础的重要性 发表: 2007年04月04日 12:13 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08
开一个新贴再谈继续深入探究:

既然模式设计是基础,为什么象楼主等很多初学者觉得复杂,不认为是基础呢?

我个人认为这和先入为主有关,也就是说:如果你首先接受的是一种“畸形”误导性教育:学习数据库 API等这些死记硬背的东西,养成认为死记硬背的知识是基础的习惯逻辑和思维。

很多软件大师一再强调,OO面向对象思想其实不需要培训,是符合人类最自然的想法,小孩不需要学习,可以知道飞机是交通工具的一种,交通工具是飞机 火车 汽车的一个抽象概况,这些都是与生俱来的OO基础认识却被我们的畸形教育排斥了,让广大程序员反而走上与OO背道而驰的编程生涯。

所以,J道试图通过社区形式“释真正OO自然之道”,拨解很多初学者心中迷雾,帮助他们找到真正的软件学习之道。

 

re:j2se基础的重要性 发表: 2007年04月04日 21:35 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
banq老师,你也是从大学过来的吧,象你那样说,对待OO面向对象的程序设计不需要学习,对小孩也知道飞机是交通工具的一种,交通工具是飞机 火车 汽车的一个抽象概况,如果小孩没受过教育他们能知道这些东西吗?你说的你的j2se的知识都忘了,并不代表你没看过啊,既然你看过了,你已经了解java的基础了,并且在你的工作中得到了实践,如果没有数据结构,操作系统,编译原理,数学等方面的基础知识,懂再多的设计模式又有什么用的,那还能称得上是个程序员吗?我真不知道你是怎么看待编程的?只能说你没有站在初学者的角度去看待编程,你说j2se不需要仔细的学,那为什么JAVA编程思想这本书销量那么大那,难道你没看过这本书,这不正是介绍java的基础知识和原理的吗?j2ee是搞高层开发的,相对来说对好多的基础知识还用的少点,要是搞底层开发,用java试试,要是没用一定的基础知识看看行不行.好多东西是不需要去死记硬背,但该记住的一定要记住,如果脑子里不积累一定的知识行吗?基础的知识也不一定非要死记硬背,但要理解吧,就是创新也要在前人知识的基础上去创新吧!

 

回复:re:j2se基础的重要性 发表: 2007年04月05日 10:01 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08

你保留你的观点,你可以继续依靠你的传统教育观点去“误人子弟”,或者你也认为我也是这样,但是我相信很多跟着J道成长的程序员已经完全明白我的意思。

顺便说一下:JAVA编程思想名称中思想的意思就是OO思想,就是设计思想,所以我们认为它是基础,观点一致,我还要批判一下这本书缺点:由于作者是从C转业过来的,很多思维还是从C标准来述说,无疑中会误导很多初学者的思维方式,其实Java和C是完全不同思维方式的语言了。

Java是注重向上思维,什么叫向上思维:就是站在前人肩膀上思考,我以前举过例子:以前“程序员”杂志刊登台湾一个软件大师关于“Collection字节码研究”,因为Java中Collection很神奇,有时好像J2SE中只需要掌握一个COllection就可以走遍天下了,所以,好奇的程序员希望打开Collection这个黑盒子,瞧瞧里面是什么东西,可能有人已经觉得很可笑了,里面能有什么呢?不过是汇编语言字节码罢了,COllection神奇不是它的内部,而是它的使用方式上,也就是模式使用上。

那种将技术分解,喜欢深入技术内部探讨的思维方式就称为向下思维,这种思维表现在:数据库连接池 线程池等等都要自己做,其实,我们重点是来如何应用这些组件的技术,就象如何堆积木,而不是研究如何制造一个个积木块。我相信,老板都不会允许象你这样浪费时间和精力来研究如何制造积木块,这是一个构件分工大生产时代,不是小作坊了。

向上思维就是拔高思维,拿来主义,一个新技术不必关心它是如何做出来的,而是重点研究是如何使用它,使用的场合和条件是什么,这些就是模式啊。


说到这里,如果我说不学习"数据结构,操作系统,编译原理,数学",照样可以作出架构优质的高性能Java系统,你可能不惊奇了,Collection和数据库技术已经就是依据数学结构做出来的,你学了数学结构,自以为懂了很基础知识,碰到COllection,你就会自然去打开看看,自豪运用你的数学结构理解它一番,可是这些对于你如何使用COllection根本是两个领域的知识(如何使用Collection是模式领域知识),这些都是先入为主造成浪费时间,能力不足的表现。

操作系统和编译原理 我更不要讲了,DSL语言出现,会讲领域专家画的类图直接编译成Java等高级语言,这是新的编译原理,但是这个编译原理和高级语言编译成汇编语言原理可是大相径庭,其中模式架构是主要的,数学等则退位其次。

关于数学是否要学,我以前说过:企业软件不是数学 和管理,企业软件是研究如何让自身更具生命性,伴随人共同成长的学科。数学和管理等只能是专业领域的,属于软件需求领域前端,很多人觉得做软件,好像数学一定要好,也是错误的,如果我们依次类推,做ERP软件所有程序员是不是都必须是企业管理专家?实际上一个好的管理软件是由管理专家加上软件架构专业人才和程序员共同分工完成的。

过多学习"数据结构,操作系统,编译原理",会让我们产生软件到底就是数学的思维,这是相当有害的,软件不只是数学,也是艺术,领域建模就是一门创新的艺术,你如何通过模型建立来模拟客观世界,这就很象绘画写生一样,越能抓住本质,你的软件系统就越具有生命性,否则东施效颦,软件模仿了客观世界的皮毛,客观需求一变化,软件就全部瘫痪,甚至重写,这些都已经深刻说明,软件是一种思维方式,是一种认识世界的过程。

以上这些观点,可散见到我以前各个帖子观点,收集在此,一直挂在首页,希望能够帮助更多Java初学者,如果你看到觉得,觉得自己世界观以及过去成长经历受到完全否定,思想接受不了,可以关闭这个帖子,希望没有打扰你“正常”编程生涯,对不起了。

 

re:j2se基础的重要性 发表: 2007年04月05日 13:57 回复
xige415 发表文章: 2/ 注册时间: 2007年04月02日 17:16
banq老师,您好!
我认为人思维的转换真的是很难的,有时自己会怀疑,有时会受到阻力。听了你的意见,我的内心多的是“反抗”。
我听到大多是这样的:在编程方面,算法数据结构和编译原理这两门是重点,他们决定一个程序员编程能力。我是照这个思路一路走过来的。做了这两个课程设计真的让我提高了不少(编程)。
您说的“领域建模”——通过模型建立来模拟客观世界,我觉得它最多是方向上的指导,就目前来说,它还要在实际上能实现,不是吗?如果一个团体没有基础开发能力,还谈什么实现?
我的看法可能比搂主的差不多:没有编程基础的学习,做模式设计是“纸上谈兵”。搭建,测试,维护一个软件的能力从哪里得到的呢?如果初学者连J2SE(其他OOPL也一样)的基础都还没掌握好,就想去搞架构,我说他只能是心有余而力不足。
banq 老师,可能你的软件架构的境界太高了,你的观点一开始让我激动不以,但过后我立刻觉得这样真的很不踏实。你以上面的意见启发初学者,谢谢你!但我们现在更需要的是:一个软件大师的初始历练。
因为我是初学者,并且刚加入这个大家庭的,对Jdon的精神还不是很了解,所以我的想法可能不是很全面,甚至可能搭不着边。我看到老师你发了7k张帖,也就发表下我的看法,请不吝赐教!

 

re:j2se基础的重要性 发表: 2007年04月05日 14:05 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
你的观点可能适合那些在别人研制出来新产品的基础上进行学习,创新的人,拿来主义确实很省时间和金钱,并且开发效率也很高.但长此下去,程序员会变的越来越没激情.永远跟在别人的新技术的后面跑,最后只会越跑越慢,中国为什么没有自己的让用户能广泛使用的操作系统,为什么没有自己的开发工具?大家好好想想,到底为什么?基础不好,还想设计自己的东西,那行的通吗?数据结构,操作系统,编译原理,数学等方面的基础知识不学好,只能做一个应用方面的人才,想搞点什么的研究根本行不通.不搞深入的研究怎么提高自己的编程水平那.象banq老师那样说,我国的大学也不需要开这些课程了,甚至说大学也在“误人子弟”,我国的计算机科学研究院也可以关闭了,还研究什么啊?底层的东西都不需要研究,拿来用就行了,(看看日后中国的计算机方面的发展是什么样子,肯定是一塌糊涂).对计算机有兴趣学生们都初中毕业就去研究模式设计,框架的开发,搞oo面象对象程序设计,看看最后有几个能成功的.
没有面向过程的程序设计哪来面向对象的程序设计,没有数学的知识哪来的计算机应用,人的知识都是一步一步的向前发展,不可能一下就有什么创新的.banq老师,你要是没有从小学一直到大学毕业积累的基础知识,没有sun公司的java语言的诞生(为什么中国没有设计出java语言啊,向你那样不需要对底层进行研究,中国永远都不可能,设计出什么语言).你能有今天那么大的成就吗?
banq老师,你说那些话适合搞应用型开发的人才,拿来主义+改造+自己的开发,对公司对个人效率都很高,可你别忘了,中国还有一大批博士,硕士在搞底层的研究,开发,并且大学里也有一大批学生以后想搞底层开发,你说的那些对这些人有什么好处那,你应该针对一些人说一些对他们有用的话,而不能一概而论.基础对任何人来说都是很重要的,有些人想搞高层开发,有的人想搞底层开发,对他们的基础要求不同而已.

 

re:j2se基础的重要性 发表: 2007年04月05日 14:12 回复
dong198645 发表文章: 14/ 注册时间: 2007年03月30日 11:08
banq老师您好
我只想说说我的看法,作为一个刚刚入门,或者说是刚刚参加工作的人,他们对于你说的
“建模领域“确实是接受不了,虽然这思想是很好,我也很喜欢,但是您认为像我刚才说的那俩种人能接受得了吗?这些对您来说可能是很简单,但是对于我们这些人来说确实很深,我相信在这个论坛里的人,有很多人理解不上去,更别说实现了,我只是说像我们这个层面的人,您总是说一些设计模式之类的东西,我知道,这些非常非常重要,我也学习了,我在这个论坛确实也学到了不少,但是,毕竟工作经验欠缺,还没有运用到.有很多东西我们是接受不了的,这些东西固然好,但是不是每个人都能一下全都能接受的.SORRY

 

回复:re:j2se基础的重要性 发表: 2007年04月05日 15:19 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08
多谢zjlzjlzjl认真和我探讨,我知道不可能说服你,但是应该明白我的观点,也可能我还是没说明白。

我想说的是:没有学过计算机的人(包括大学课程)应该直接从OO语言以及设计开始学,不要以为OO是基于传统面向过程和数据结构等基础知识的,OO是和这些传统基础知识并行的,是水火不容,是两个路线问题,非此即彼,是相克的,是黑与白,是不匹配的,是mismatch的。

极端一点,我认为大学直接从OO语言和设计开始学习,国外不少大学已经开始只学习Java和GoF设计模式,这是趋势,国内大学课程和培训课程早就应该更换了。

正因为OO设计和传统基础知识是矛盾的,是两个不同方向,如果你走上传统基础知识这个学习方向,那么就很难理解OO这个方向的东西,甚至觉得高深,就出现楼上各位和我争论的现象。

正因为我走过那么多弯路,庆幸自己思维转过来了,但是回头看看对岸那么多没有能够过河,跨到OO这边的初学者,我也很着急,一直在探究为什么那么难,就是一个捅破窗户纸的事情,,,通过J道社区和很多人交流下来,才得出“面向过程面向数据库的传统过程思维才是阻碍我们转变的罪魁祸首”,而且越是经验程序员,如果缺乏自我挑战革新的决心,更难。所以,我认为,如果一开始学习软件时,就从OO就入手,一切就容易多,而且OO是那么自然,比所谓用数据结构表达方式要自然多。


当然,争论是好的,因为开始思考了,总比被那些所谓计算机教授权威蒙蔽,一直以为是正确的要好得多。


[该贴被banq于2007年04月05日 15:52修改过]

 

re:j2se基础的重要性 发表: 2007年04月05日 16:57 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
谢谢banq老师耐心的回帖:
你说面向过程,算法数据结构,数据库是和oo水火不容,不能并存,那你看看这个论坛的源代码,是不是基于数据库,算法的,难到这就算是完全面向对象了吗?再面象对象,对象里面总有方法,及用的数据类型吧!那用的不正是算法,数据结构吧!你做出来过完全脱离数据库的系统吗?你说你做的系统都是基于你自己的API和工具,那你公开一下你的API,让大家看看你的API和sun公司的用什么不同. 计算机教授权威蒙蔽这也许不太正确吧,哪个教授愿意蒙蔽自己的学生啊,你不需要说服我们,只需要拿完全脱离数据库,算法数据结构的系统来证明.
windows系列,linux强吧,还不照样用传统的知识来做的吧,就算以后可以用完全面向oo的来实现,也是一个预测吧.有多少编译系统是用纯java,纯oo做出来的.知识之间都是相互联系的,谁也不能脱离谁,只有联系紧密程度而已,你说这对吗?纯oo是很好,可没有以前的传统基础知识有多少人能一下转过来啊.
什么事情都要做到了,再传授给大家,不能只预测,即使是预测,也不能说的太绝对了,否则会让好多人不知道该怎么做,作为一个学习的论坛,就要务实.要是有说的不对的地方,请banq老师多原谅.

 

re:j2se基础的重要性 发表: 2007年04月05日 17:15 回复
xige415 发表文章: 2/ 注册时间: 2007年04月02日 17:16
up

 

回复:re:j2se基础的重要性 发表: 2007年04月05日 17:29 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08
>你看看这个论坛的源代码,是不是基于数据库,算法的
不是基于数据库的,是基于OO的,你看到的数据库只是持久层一个实现,明天我可以跳换使用XML文件来实现.

>再面象对象,对象里面总有方法,及用的数据类型吧!那用的不正是算法,
你看到的是算法,而我看到的是符号,是类似UML类图的另外一种实现方式,model包下面类代码其实都是可以用UML画出,现在这种双向工程软件很多,你使用together或rose再打开jivejdon3.0看看,你看到的是图,表达对象可以有多种方式:UML图 Java代码 C#代码.

为什么我们两个看同样的东西,得出结论不一样,就是因为传统基础知识蒙蔽了你的眼睛,让你带上了数据有色眼镜.

所以,我们两个带的是不同颜色的眼镜,你说是黄色,我说是红色,你说还有什么好争论,所以,思维方法不同,就很难对话.

>可没有以前的传统基础知识有多少人能一下转过来啊.
如果没有以前的传统基础知识,可能全部都能转过来了(包括你),正是以前的传统基础知识阻碍了转变.

[该贴被banq于2007年04月05日 18:44修改过]

 

re:j2se基础的重要性 发表: 2007年04月05日 18:51 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
banq老师,既然可以不学算法,数据结构,编译原理等基础知识,可以直接学习面向对象程序设计,请你说一下详细的学习面向对象程序的过程,从对程序设计一点都不懂到成为一个合格的程序员,就拿java这门语言来说.谢谢.

 

回复:re:j2se基础的重要性 发表: 2007年04月05日 18:56 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08
不是说完全不学,关键是学了,要跳得出来,如果跳不出来,不如不学。

这个帖子:
http://www.jdon.com/jivejdon/thread/30976.html

这里一个帖子很有借鉴作用,作者没学过你说得那些传统基础知识,但是对OO依然有自己的认识:
http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=29282&message=23104782#23104782

 

re:j2se基础的重要性 发表: 2007年04月05日 22:56 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
我们知识要一天一天的更新,但切忌盲目追求新技术,要知道咱们有没有基础?新技术也是国外那些大师们在传统基础知识上开发出来的,咱们怎么就开发不出来?(banq老师能回答我这个问题吗?)是咱们没oo思想吗?难道他们的oo思想比咱们强吗?不见得吧!应该是咱们缺乏基础知识,对底层的研究精神吧!没基础上去就玩oo,玩模式,可能以后的程序员会越来越少.

 

re:j2se基础的重要性 发表: 2007年04月05日 23:10 回复
zuly 发表文章: 57/ 注册时间: 2007年03月29日 11:42
不学算法直接写java的人多呢!


从c转到java的人思想上有障碍,看见对象就会去想他的地址!这种思维定式不是3天2月能扭转的,没有办法!

楼上的可以先从uml入手,了解面向对象,再转Java
ps:本人就是UML->JAVA的转化过程

请楼上的把J2ee的Turiroal读完!读完之后你就会知道j2ee是什么!j2ee讲的全是解决方案和j2se没关系,你看j2ee但是用C#去实现也可以!只不过j2se是个很好的轮子。
[该贴被zuly于2007年04月05日 23:15修改过]

 

回复:re:j2se基础的重要性 发表: 2007年04月06日 08:57 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08
>新技术也是国外那些大师们在传统基础知识上开发出来的,咱们怎么就开发不出来?(banq老师能回答我这个问题吗?)

因为我们陷入了传统基础知识里面跳不出来了,没有创新开拓勇敢的精神,传统又学得不精,老子很早就说了: 为学日益,为道日损. 学得越多,要跳得出来,跳不出来,就死了.

探究这些现象,说大点:说明国人丧失了大智慧的哲学意识,说近点:这是死读书封闭的教育科研体制造成的.

 

re:j2se基础的重要性 发表: 2007年04月06日 09:59 回复
wind13 发表文章: 59/ 注册时间: 2006年07月10日 18:52
看了这个讨论,太开心了,哈哈……

Jdon这个网站就是在研究Java的道,如果你看了老子或庄子的道家思想,就会理解banq为什么会有如此的观点和论调,“跳出来,站在身外看世界”,好象说两国之争也只在蜗牛的角上,如果我们只是想抓只蜗牛来玩儿,又怎么会在乎里面的血战?有用与无用是在于得到他的人如何看待而已。
面向对象模式等与编译原理什么的何为基础,这个问题我想举个例子来说,就好象我们日常所用的各种电器、手表、电脑等,你说其中的机械原理、电子原理等是基础一定没错,没有这些知识哪能造出这些东西,但如果banq说如何更好地用手表计时间、更正确地使用冰箱存储食物、用电视收取信息、用电脑帮助工作才是基础,那对于自然界中的我们——人,来说,可能就更加自然和容易了。

本人大学学的是药学,可以说跟电脑没有一点关系,因为从小的爱好,后来工作中不断从平面设计到网站建设最后到BS结构软件,觉得接触到Java的面向对象非常高兴,这样的程序才象是有生命的,原本跟我想的就一样嘛,后来懂了接口的概念,觉得是一种提升,将行为进行抽象就更妙了,再后来看到模式,很是兴奋啊,觉得这才真的是在编程序,好象孙悟空学会了七十二般变化(见《Java与模式》闫宏著)。至于很多程序员,特别是C、C++系统的所提到的数据结构、编译原理、内存指针,对我来说确实是相对陌生的,在我觉得那才真的是高层次的东西,我打算哪天需要做一些底层的、工具性的软件时再去研究吧。就好象说我先把家里这些日常生活需要用的电器搞得会用,正常运转并且能科学合理充分利用,帮助我解决平常的难题再说,以后哪天如果觉得哪个电器不够好用,需要有所改进,再考虑是不是自己研制一台新的,可能这种可能性会相当小,更多的可能还是找到制造这台机器的厂家,给他们提出改进的建议,他们可能会解决得更加好。
[该贴被wind13于2007年04月06日 10:23修改过]

 

re:j2se基础的重要性 发表: 2007年04月06日 13:38 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
wind13 说的很好啊!我赞成.
banq老师从开始一直到现在,都在强调程序的应用方面,oo的强大之处,怎么利用oo在较短的时间内做出更有生命力的系统,以及咱们应该向面向oo转型,今天编程爱好者都知道oo很好,比面向过程好,我觉的banq老师说的很对,对好多公司和想在编程应用方面(不包括想在底层发展的程序员)有所成就的人很大的启发.

但banq老师对传统的基础知识一味的贬低,真让人失望啊,可以想象一下假如一个程序员不懂算法数据结构,编译原理怎么能做出一个好的系统,就拿windows来说,盖茨怎么不用oo改变,并且不用传统的基础知识,那可能吗?中国的程序员都向你学习,可能很难开发出自己的操作系统,编译工具,包括开发工具,没算法数据结构,编译原理的基础知识怎么开发啊?(请banq老师回答).

>Collection和数据库技术已经就是依据数学结构做出来的,你学了数学结构,自以为懂了很基础知识,碰到COllection,你就会自然去打开看看,自豪运用你的数学结构理解它一番,可是这些对于你如何使用COllection根本是两个领域的知识(如何使用Collection是模式领域知识),这些都是先入为主造成浪费时间,能力不足的表现。


对底层数据库,操作系统的研究是浪费精力和时间,但也不能说是能力不足的体现啊,我看能把操作系统研究通的程序员是最伟大的,最可敬的.不研究怎么能用活那,怎么能借鉴别人的技术来开发自己的啊!一大批人是不需要对这进行研究(包括我),可中科院和一些研究所的搞科研的人需要研究啊,不研究中国怎么在计算机界有质的飞跃啊!(banq老师你说对吗?)


>>为什么我们两个看同样的东西,得出结论不一样,就是因为传统基础知识蒙蔽了你的眼睛,让你带上了数据有色眼镜.

banq老师把算法和数据类型看成是符号,这可能是在oo里马上要出现的名词定义吧!
里面的数据也不叫数据了(让你带上了数据有色眼镜),那该叫什么那?





 

re:j2se基础的重要性 发表: 2007年04月06日 14:15 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
>>你看到的是算法,而我看到的是符号,是类似UML类图的另外一种实现方式,model包下面类代码其实都是可以用UML画出,现在这种双向工程软件很多,你使用together或rose再打开jivejdon3.0看看,你看到的是图,表达对象可以有多种方式:UML图 Java代码 C#代码.

UML建模是很强,建再多的类,实现再多的对象,对象里面总要用到数据类型,算法,只不过类和对象组织的程序比以前的只用函数实现功能的面向过程的程序要好的多的多的.一个简单的链和数组也算是数据结构里面的吧!一个简单的for语句,递归语句也算是简单的算法吧!banq老师说的数据结构和算法就是符号,不懂算法和数据结构,用UML把类图完美的画好,可怎么实现啊(因为人都学模式设计,框架去了,没人懂算法和数据结构了,连进程和线程也不懂了,就知道一切都可以用对象实现,可怎么实现啊?)请banq老师回答!(别再说用符号了,符号代表的太多了)


>>那种将技术分解,喜欢深入技术内部探讨的思维方式就称为向下思维,


深入技术内部就是向下思维,向上思维和向下思维有这样说的吗?就象windows一样,大家只管用它,不需要管它怎么实现,对大部人来说真是这样(包括我),为什么好多公司,好多研究人员千方百计的想让盖茨公开源代码啊!要是windows真公开了,肯定他们会好好的研究一下,争取在windows的基础上做出比它更好的系统,难到这些公司和研究人员也是向下思维吗?(请banq老师回答)

对一门技术的应用和开发是两码事,应用的只管怎么把这门技术用好,而不关它内部怎么具体的工作的.开发就不同了,要知道它的内部工作机制和各个部分怎么才能协调的工作,并且开发出来要让广大的用户喜欢.不懂一些基础知识只懂对象和模式能开发出来吗?
(请banq老师回答)


>>>OO是和这些传统基础知识并行的,是水火不容,是两个路线问题,非此即彼,是相克的,是黑与白,是不匹配的,是mismatch的。

哲学中有这样几句话:"事物之间都是相互联系的","一切事物都在变化之中",怎么能说OO是和这些传统基础知识是水火不容的啊!




 

不必辩论,寻找合作…… 发表: 2007年04月06日 15:01 回复
wind13 发表文章: 59/ 注册时间: 2006年07月10日 18:52
一切辩论的本初是追寻事物的本质,当知道了本质后,就不要再玩语言游戏了,辩论不在于分出高下,而在于明白真理,如果你明白了对方的意思,就不必再争论了,呵呵……

有些教育的误导,常常培养人们的辩论能力,而不是理解对方,寻找与对方合作可能的能力,感觉也就好象我们的软件教育,常常把一件简单的事情搞得复杂。

以上问题,看过的人都已经清楚了,已经不必再争论下去了,各自可以思考各自的方向,不可能每个人通过一次辩论后,都变成一样的观点,走一样的路。

道可道,非常道

软件编程之道,恐怕也不是一句两句能说得清楚的。

 

re:j2se基础的重要性 发表: 2007年04月06日 19:16 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
我认为这不是辩论,这是一个很严肃的问题,对大家学习有影响的方法就不应该在一个讨论学习的论坛上存在,应该抛弃.对待科学就应该严谨点,思想是很重要的.

>>其实数据结构与模式语言的结合可以很好地 重用的解决一类通用问题,下面这个主题就是结合Composite+Visitor模式和二叉树概念解决树形结构通用问题访问这类实际应用中问题,从而形成解决一类问题的框架,这样不是提高我们开发效率和开发质量吗?(banq老师你以前说过吧!)
这是banq老师以前在论坛上给大家说的,而今天又说
>>OO是和这些传统基础知识(数据结构)并行的,是水火不容,是两个路线问题,非此即彼,是相克的,是黑与白,是不匹配的,是mismatch的。

这能不让人费解吗?

作为一个大家心目中的专家,高手,能这样解释问题吗?这还叫科学的思想吗?

 

re:j2se基础的重要性 发表: 2007年04月07日 23:59 回复
Coolyu0916 发表文章: 196/ 注册时间: 2007年04月23日 11:29
算法与数据结构才是程序的灵魂
如果你在框架的光辉下迷失了方向
你就就成为了蓝领工人
------------------
以上的话绝对不是讽刺
为什么用框架,是为了提高生产效率、为了降低成本
你说你用了框架除了框架的API你什么都不会
每天都在关心框架的变更
每天都在问自己是不是落伍了
担心这个不会找不到工作,那个不会怎么样
如果你真的算法与数据结构非常厉害
IBM,Microsoft你不是随便挑么??

 

re:OO需要灵感 发表: 2007年04月08日 01:36 回复
zhouxu 发表文章: 23/ 注册时间: 2007年01月31日 13:08
计算机专业已经今非昔比,需要重新划分更多的专业才行,各有各的方向。得图灵奖的好像都是算法与数据结构大师,但搞企业应用他们恐怕不行。我个人认为软件设计是一门艺术,与数学关系不大,高等数学也早忘光了。
学艺术与学数学自然不同,两方面没有什么可比性。

 

re:j2se基础的重要性 发表: 2007年04月08日 20:51 回复
Coolyu0916 发表文章: 196/ 注册时间: 2007年04月23日 11:29
楼上真的想过什么是企业应用么??
google的起家就是一个算法
microsoft的起家也是算法与数据结构(操作系统)
这两个是真真正正的纯软件公司
难道有比他们更加出名的企业么??
看看那些标称框架的公司,他们的效益和影响力有这两个公司的几分之几??

 

re:j2se基础的重要性 发表: 2007年04月08日 22:37 回复
zjlzjlzjl 发表文章: 13/ 注册时间: 2007年04月03日 18:30
本来我不想再谈这个问题了,看了Coolyu0916说了那么多,我又想说两句了,因为大多数人都明白这个问题,只有banq老师领导的J道这些人,好象把模式和框架太神化了,把其它的一切基础都看成是模式和框架绊脚石,
你们可以说模式和框架很重要,以后应用的也很多,好多人都同意,也符合发展趋势,可也不能把模式说成是学习编程的基础吧!那真是太离谱了,这就好想是说,一个小孩一生下来,就会走了,不符合事物的发展规律,学习也要有个过程吧,数据结构以前都是用面向过程的语言来描写的,现在oo重要,现在不就有好多用oo语言描写的数据结构吗,它一样很重要啊!



我上面问了banq老师好多问题,为什么不回答啊?
你的回答可不是我一个人看的,是有好多登陆论坛的人要看啊!

 

re:j2se基础的重要性 发表: 2007年04月09日 08:48 回复
Coolyu0916 发表文章: 196/ 注册时间: 2007年04月23日 11:29
数据结构真的过时了么??
不要以为现在没有使用数据结构与算法
架构中大量使用HashMap用的就是hash算法
知道hash算法可能出现什么问题么?
hash函数怎么处理的么??
为什么使用hash表而不使用链表那??
只是因为方便么??
只是java帮你封装了,你觉得也够用了
如果真的有一天你需要自己来处理内存中的数据
建立自己的hash函数,这就很重要了。

框架永远脱离不了算法与数据结构的

 

re:j2se基础的重要性 发表: 2007年04月09日 09:37 回复
banq 发表文章: 8101/ 注册时间: 2002年08月03日 17:08
多谢zjlzjlzjl一再邀请,我的观点前面已经说得很明白,可能你目前没有理解,还是听听大家意见,让更多过来人来谈谈自己感受。

 

re:j2se基础的重要性 发表: 2007年04月09日 10:49 回复
Coolyu0916 发表文章: 196/ 注册时间: 2007年04月23日 11:29
呵呵,可是banq大哥始终无法解释为什么注重算法与数据结构的企业发展要比注重架构的企业要好。
我们用手指头数一下
IBM - 提出了java架构,可是从400主机到9000、6000主机都很少有jdk。websphere还需要自己来装。

microsft - 提出了.net平台,可是赚钱的是office与windows

google - 提出了ajax,主营业务是搜索引擎以及广告,用了什么framework?

oracle - 数据库的老大,关系型数据库的基础是什么大家都知道吧,用了framework??

borland - 我曾经最喜欢的企业,现在开始做企业整体解决了,可是效益跟影响力怎么却日益减退那??

还需要举例了??

如果你打算当蓝领工人,那么请努力学习那些framework,因为你的公司需要它们,需要他们来做项目。但是如果真的想发展,走入软件的核心,进入ibm,microsoft,google,去进入到核心,请仍然回到算法与数结构上。

 

re:j2se基础的重要性 发表: 2007年04月09日 12:06 回复
wind13 发表文章: 59/ 注册时间: 2006年07月10日 18:52
Coolyu0916 和 zjlzjlzjl 要先明确在讨论什么问题,不要引向绝对化。
Coolyu0916所举的例子都是说核心的东西是数学、算法、数据结构,最牛的东西是这些,可是我们现在讨论的是初学者应该从哪里入门,正如我上面所说,每家每户都用电器,所有的知识都是先学会用它,再学会其中的原理,很多知识只要会用了,就已经可以做出很多东西,对社会有贡献了。

至于你们所说的“基础知识”,说不定哪天你们又会遇到某个数学狂人,对你们现在研究的计算机知识嗤之以鼻,说数学才是基础,数学问题你们研究得太少了等等。

明确问题,研究方向不同,对于做应用性的软件(目前大多数项目也仅止于应用)来说,面向对象的思想、模式、框架等确实已经成为基础知识,更宏观一些。

拿机械行业来举例,我们可能更关心的是类似于机械的结构,如何用现有的别家厂商的发动机组装成自己的产品,可能80%的零件均来自其他厂商,但只要产品是独特的也是可取的。而如果片面强调机械内齿轮的钢材如何如何,镙丝的丝数如何如何才是基础,那可能就有些舍本逐末了,始终明确刚起步时,你要做的是什么。

二位所说的“基础”确实是基础,只不过对于初学者来说,深奥了些,等他们会做一些简单的应用后,等他们已经能胜任当前的应用软件开发的工作后,我想他们会回头来补这一课的,到那时学习这些所谓的“基础”时,可能更容易、更好理解、更明确目标,甚至那时才会在学习的基础上更多地思考“原来我那时用这样的结构是不太好的啊!”“好象那个模式里加入这种算法就更妙了”,而这些思考是一开始学习这些基础不会想到的,反而会觉得枯燥无味,学而无用等等。

我的学习理论:先会用,管他怎么回事!回头再细细研究,一定更有体会!

 

后面还有好几大页回复,有兴趣的去原网址看看http://www.jdon.com/article/31338.html

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值