看了这么多,我只能说我学到很多
To Coolyu0916:
你老站在微观角度去谈论宏观的问题。
面向对象本身就是站在一定抽象的高度上的认识。
你从宏观来说物体是物体,你从分子角度来看它是分子,你从原子角度来看他是原子。
你现在站在原子的角度来说这个物体他不是物体,他是原子,你觉得有意义么?
banq很早就说过。不是基础不重要。而是因为这部分已经得到大量的研究,做的足够好了。
算法当然重要,可是难道每次要用算法你就自己实现一遍?难道从底层开发那就叫高手?你怎么不去学汇编?你干嘛要用STL?
基于具体实现的角度去考虑面向对象,我觉得毫无意义。

还有,很讨厌那些没接触过Java就说C++比Java难的。难道你可以说数学比哲学难吗?难道C++人的自豪就是看着指针满天飞吗?
[该贴被damagegod于2007-11-25 18:01修改过]

说了这么多都不知道你们在说什么,有什么可讨论的。
对于java,它是什么,面向对象的语言,当然要注重oo了,不然还不如用c更好。既然是oo就要学会怎么更好的向上发展,而不是停留在面向过程的时代了。
学习数据结构和算法等当然重要,可是要看在什么上用了。都说那些是基础,当然,多少年前是,可是现在都什么年代了,还抱着那种思想怎么可以。
做电脑的要懂硬件知识,可是用电脑的需要懂吗?oo思想就是让我们像搭积木一样的用代码,不是做积木,不然java也不会封装,难道他们是闲得无聊不成。
oo才是基础,深入才到到面向过程,就像用电视简单,深入就去造电视。
还有的说“一流的企业做文化、做标准,二流的企业做品牌、做产品,三流的企业做项目。”可笑,你玩电脑的时候你是几流的,造电脑的又是几流,那挖矿的就是一流了吗?我看是不入流。“术业有专攻”听过吗?
正因为“术业有专攻”,现在是讨论j2ee,是oo,不是过程,如果说深入,那汇编呢?你们说数据结构和算法最终用什么实现,是语言,什么语言,不会是汇编吧,可是你们用的那些语言能驱动cpu吗?难道你们又要学汇编不成。所以,java包装了,我们就用,更合理的使用才是王道,java的王道。如果说数据结构和算法那就不要在这里说,难道你真的想要面对oo思想说过程吗?那java还封装个什么劲啊!不是自讨苦吃。

注意,说的是java,说的是oo,不懂oo的就去看,不要对我说oo是过程,数据结构和算法那是过程。

我认为单纯的讨论基础问题,太片面!应该把问题放在整个思维领域来看目前思考问题的位置.语言是思维的表达,不同方面的知识代表了不同思维的层次.
思维的层次是绝对的,位置是相对的.只是不同人的观点处于不同思维层次,不同的思维位置.
以什么样的思维去思考世界,反映一个人认识世界,认识自我的,表达自我的的能力.没有东西是错误的,只是它放错了位置.判断标准是思考的内容是否是当前问题的核心因素.
我们学知识的本质是什么,我认为是表达或者是应用!
那么我们在本着以应用为目的的基础上学知识,思维是发散的是自上而下的,就像企业的管理层,是从董事长开是到普通员工的.那么传统教育方式下的自下而上,以量变达到质变的方式,它与以应用为基础的思维方式是分别代表了思维的两个极端,那么它们的融合点在那了?哲学上说的质变引起量变的的另一方式.那就是构成事物的因素在排列顺序上的变化,是内涵上的量变,是事物内部的事!
一个代表外部因素(知识基础).一个代表内部因素(设计模式).就像cpu ,执行与调用.关键是我们什么时候去调用,什么时候去执行.
那天我终于有了答案,玩五子棋,什么时候以链的方式累积成5,什么时候以+的方式去组织灵活的整体的有效布局.除了对方的习惯性思维,还有其不变的规律,量的积累的最大优点是达到3,因此对方2的时候,你就破坏了他成3的可能,之后组织自己棋子的+模式.
所以在知识的学习运用上,什么时候去学基础,什么时候去用.那得看你目前是学,还是用.
知识就像海洋里的水,不怕漂不起你,只怕淹死你!
还好,我们不是白痴!学学公交车,把自己的思维打造成系统级的.
系统级的思维要求我们的最高效的存储模拟内存,把一个应用系统模拟成一个人,那么最常用知识与一般基础知识的区别就是与设计模式的最大关联,当然你的思维是整体性的,很好,那你就做好设计模式,然后你的思维再自下而上,验证模式的合理性,高效性!辩证一下!不断的自上而下,自下而上.整体局部,局部整体!
因此说,单纯的说j2se的重要性,那要看人,你现在为学习而学,好好学吧!
外延量变,五子棋的3的追求.如果你现在是在用,内涵量变,学设计模式吧!
再说一句,当国外大量的知识涨潮了,我们如何适应.它退潮后后,我们如何把握国产.产品,系统,服务.那就是系统的应用市场的广泛性与实用性,以及国内软件人才数量和质量上的突增.以系统为出发点,设计模式好像重要点吧!是正真思维,所谓彻底的软件,而基础的知识更像硬件!
还有设计模式与人的最高效记忆很的关联,记忆一个项目显然比记忆几章轻松的多,项目记多了,头脑里这时是设计模式的关系.因此把学习定位在用的基础上,把用的基础定位在项目的记忆上,这样才保证学的基本上随时可以用上!当然搞软件其核心是思维,但思维不是产品,基础还是要学,关键是学的目标的定位.
个人看法,仅供参考!
适合自己才是最好的!

看了这么多高手的回答,给了我很多启发.
我很同意学习或解决一件事情,就要理解它,俗话说理解万岁嘛.呵呵.

发表一下自己对这个观点的理解:
如果不使用面向对象的思维,也不使用面向过程的思维,而是使用任何一种不同于此两种思维方式的思维来思考"设计模式"和"数据结构",会得出什么结论呢?
个人以为这从某种角度来说都是一种方法,都是为了解决问题.
同理,面向对象和面向过程也是方法.
只是要选择方法了.

以上全是个人观点.欢迎大家指出错误.
[该贴被huraky于2008-02-21 18:15修改过]

看了你的帖子,我个人感觉真的不错。我是个刚刚想如这行的爱好者,当我看到人在编写程序的时候就很兴奋。请问您能不能有空指点指点我,我的QQ17473102
想做计算机科学家,那就学好数学,编译原理,数据结构
想做计算机应用学家,那就用好JAVA,设计模式,OO
有意思的帖子,透着不少人的思想
领域不一样,自然关注不一样,搞system和搞应用开发完全就是两码事,篮球运动员和乒乓球运动员能放在一起切磋技术吗,虽然大家搞的都是球?搞system的并不一定要知道模式,搭积木,搞应用开发的也不一定就要知道pipeline, ext2, micro-kernel。做的领域不同,当然去分不出OO模式重要还是体系结构,os,编译原理重要。
编译原理、数据结构、算法同设计模式好比一个人的两条腿,缺一不可,如果没有好的架构,不要说把系统做大,做到一定程度bug就会层出不穷,即使系统中的算法写的多么的优秀,但没有算法、数据结构,系统的性能不能保证,而且这些基础的东西可以让程序员更好的理解程序在计算机中是如何运行的,这样写出来的代码才足够的好。我觉得可以在有了j2se基础以后,学习设计模式,多做项目,在项目中提高设计能力,在做到一定项目以后,对编程有了新的认识,可以再回来学基础(当然学校的课程要学好),这样不断的迭代,提高应该会很快,而且高度会很高
花了好长时间来看这个帖子,呵呵,学到不少,开发java软件也有3、4年了,一开始做j2me手机游戏,曾痴迷于各种算法,往往崇拜于精妙的算法,后来由于工作需要要做一套基于java的脚本,又把精通编译原理的人惊为天人,如今开始做j2ee,各种框架,技术,思想充斥着j2ee的世界,几乎让我喘不过气来。回过头来看看这几年我的java开发的历程,忽然觉得迷茫起来,到底什么才是软件开发的基础。
很多人说算法高深,而我认为算法只是学习软件开发的必经之路,但是把算法当作整个软件编程的基础,还远远不够。说白了,算法是很多大师级人物智慧的积累。所谓精通算法不过是花点时间把别人的精华学过来用而已。很少有人能够在现在的排序、查询等经典算法上再进行突破了。从这方面讲可不可以把算法也当作一个对象呢?我们没有能力自己创造出更好的算法,只能把别人的算法拿过来用。其实大学学到的算法在工作的时候很多都忘了,需要的时候才想起来重新去翻书看看,这些基础的学习往往只是让我知道,在某些情况下我会想到用什么算法来应对,我很少会想自己创新的发明一个新的算法,毕竟我没那个能力,就算有能力,我也花不起那个成本。编译原理
花了好长时间来看这个帖子,呵呵,学到不少,开发java软件也有3、4年了,一开始做j2me手机游戏,曾痴迷于各种算法,往往崇拜于精妙的算法,后来由于工作需要要做一套基于java的脚本,又把精通编译原理的人惊为天人,如今开始做j2ee,各种框架,技术,思想充斥着j2ee的世界,几乎让我喘不过气来。回过头来看看这几年我的java开发的历程,忽然觉得迷茫起来,到底什么才是软件开发的基础。
很多人说算法高深,而我认为算法只是学习软件开发的必经之路,但是把算法当作整个软件编程的基础,还远远不够。说白了,算法是很多大师级人物智慧的积累。所谓精通算法不过是花点时间把别人的精华学过来用而已。很少有人能够在现在的排序、查询等经典算法上再进行突破了。从这方面讲可不可以把算法也当作一个对象呢?我们没有能力自己创造出更好的算法,只能把别人的算法拿过来用。其实大学学到的算法在工作的时候很多都忘了,需要的时候才想起来重新去翻书看看,这些基础的学习往往只是让我知道,在某些情况下我会想到用什么算法来应对,我很少会想自己创新的发明一个新的算法,毕竟我没那个能力,就算有能力,我也花不起那个成本。
编译原理
编译原理是个很深的学问,java很强大,但是实现java的思想不是更让人神往吗?实现java的思想,应该就是希望java这种语言能够更好的贯彻oo吧,在java孕育的时候,oo思想就是它诞生的历史使命。软件行业发展到目前的阶段,想要发展出一门新的高级语言并不是难事,毕竟已经有这么多年的经验积累。问题就是,编译出来的语言如何才能通过正确的思想来开发软件,oo无疑是目前最接近正确开发软件的思想。算法让我们的软件更高效,让我们在解决复杂问题时有据可循。他是术,不是道,oo是道。至少在应用软件上,oo是目前最正确的道,但是道是悟出来的,即使你把道摆在眼前,悟不出来,也是视而不见。所以基础是一拳一脚练出来的。banq希望国内的软件程序员把oo这个道,当成基础,目前来看有困难的,我也在等待自己的觉醒。
不是说完全不学,关键是学了,要跳得出来,如果跳不出来,不如不学。

完全同意...

面向对象程序设计对算法,数据结构等要求都不高..
只是要懂得里面的原理就OK..

那些领域专家也许会连显示器和主机都无法区分,但他们真的能够轻松的创造一个优秀的领域模型并能详细解说每一个细节部分,那为这个领域做软件,不和他们学跟谁学呢?难道跟CPU学习如何优化指令快速计算么?