MF再j2ee企业级应用领域的贡献是不可磨灭的,我认为J2EE不用多看书,只要把<企业应用架构模式>那本吃透了就无敌了,可是有几个人能吃得透.MF现在在写关于DSL的书,出版了我一定第一时间看.

??楼主,你真的不知道你在什么地方发帖吗?你懂java吗?你觉得用面向对象的程序来当作面向过程的程序是一种荣耀吗?
游戏中游戏引擎,物理模型,你不学数学能做出来吗?而你学了数学还要狡辩那是学的编程,跟数学无关。可笑。
操作系统也是程序,你不学硬件能编的出来吗?
这些依你的意思就是我们都要学了?
干什么,学什么,那是古人都知道的“术业有专攻”,你还不明白。

只是OO和算法都在不同层次对软件质量提高。不要太拘泥于那个重要。

看了这个贴,我一定要回一下,呵呵,楼主可能是搞C/C++系列的,我也做过这方面,所以对于这两种语言涉及的领域略知一二。
操作系统是很复杂,人工智能、游戏开发、编译器开发、高性能计算。。。这些确实很难很复杂。没错,我承认。但是不能否认了在应用领域里,这个庞大的应用空间,面向对象在往另一个纵面不段深入,越来越具有哲理性,这个纵面的深入,与以往的重点:数据结构+算法有些越行越远。可以说完全是不同的焦点了。很多人喜欢武侠小说,拿九阴九阳来做个比方,我个人觉得很像。00==九阳,算法==九阴。能同时精通二者的人只怕不存在,不想走火入魔的人可以去试试。
再换一角度来说服一下楼主的过激心态吧:楼主可能对算法比较精通,那么我斗胆猜测楼主在00领域可能是个“小学生”,可能感觉非常困惑。也许楼主在算法世界已经达到了一个“巅峰”,但是楼主可曾知道,OO世界才是丰富多采,有着无穷无尽的发展潜力。OO世界里的每一步跨越才是那么不容易,那么有价值和现实意义,那么充满灵性和富于美感。试问:在哲学和艺术面前,你能如此小瞧吗。我当然不否认算法的重要性,只不过在目前的阶段,算法已处于使用阶段,而非创造阶段,记得一位搜索引擎专家曾说过:算法已经很成熟,算法世界里现在已没有什么“发明”了,都是在套用现有的,无非就是做些折折补补。不过算法有一定的门槛,只要跨过那道槛以后,会发现其实就那些东西,都一样。
力劝楼主放开心怀拥抱OO,学习它,应用它,超越它也是超越自我!

算法一定是基础的。楼上说00==九阳,算法==九阴,我不同意这个观点,我觉得算法==九阳神功,OO==乾坤大挪移,没有九阳神功也可以练,头两年可以打赢九阳神功,但是三五年之后练就九阳神功以后会再去oo会很快,而且对于oo的理解完全要比一开始就乾坤大挪移的好。现在很多人为了OO而OO,根本不明白他的好处。只有做过了、体会了才会有提高。

仁兄的见解也有道理,关于九阴九阳,纯属我心血来潮的的话语,我不做肯定态。但是咱们可以探讨一下
我还是认为OO是更思想性的东西,有点无招胜有招的韵味。纯以内力取胜。比做大挪移也不太妥,叫无象神功吧,九阳神功也未尝不可啊,象郭靖,一招势大力沉,无人可抵。而关于算法,我的理解是倾向于具体招式的味道,凡搞算法者,必然对于精巧之道很在行,也就是过分关注于技巧,招式,而OO靠的是分析,其艺术性哲理性不是一招一式可以说得清的。
纯属个人见解,请指教

算法可以说是某一些人的基础,但是OO是大多数人的境界。

很多人都喜欢无招胜有招,呵呵,大家只看到大侠风光的时刻可以天马行空的任意发挥,可是他一开始的马步,长拳又有多少人知道那??无招胜有招不是坐着就能从天上掉下来的,一定是努力的学习一点点积累出来的。宗师总是不断的追求自我的超越,自我的完善,最终才能成为融会贯通,又开新立意才可以的。我想说的其实很简单,我不希望过分鼓吹设计,更不要把算法割裂出来,这是设计的基础,是马步,是长拳,所谓重剑无锋,大巧不工,技巧再好一定要有基础的配合才可以的。

我发现,如果站在应用软件的角度,一个不懂算法,甚至不太懂软件技术的人,如果潜心研究OO,业务,会比有深厚算法、软件基础的人来得更深入些,这种情况如何解释呢?
从领域建模的角度来看,首先是不要去关心具体技术实现,而是站在业务的高度来进行00的划分,这种划分能力真的不需要算法,也不需要软件技术。

>我发现,如果站在应用软件的角度,一个不懂算法,甚至不太懂软件技术的人,如果潜心研究OO,业务,会比有深厚算法、软件基础的人来得更深入些,这种情况如何解释呢?

几乎所有的好外企都笔试算法,你又作何解释呢,我还是觉得算法还是要好好学学的,当然OO肯定也要好好学习的,我觉得做为一个计算机开发人员,这些都应该学习一些的。不要认为算法不重要,如果是学生,找工作的时候不知道有多惨~

以面试要算法这一个点来做为理由,是否可以这么理解:这是考官在短时间内有效的一种手段,如果允许,也可以在短时间内考察面试人员的分析能力啊。只不过这两种面试方式针对的求职人群可能不同了。
对于区分真正的优秀和贡献肯定不是靠这个算法。若干年以前可能是,现在不是了。

算法与OO的较量,我认为是深度与广度的较量,虽然算法不等于数学,但是数学不好就搞不好算法,好算法虽然难,但是难点集中,集中攻克,目标明确,成就感足. OO则不一样,它深入到软件的方方面面,要想搞好没有点经验见识,没有足够广博的知识是不可能的. 所以有时候会出现这样的人: 这个人才接触了计算机不过几个月,然后写出非常精美的算法,人们称算法天才......但是却从来没有这样的人: 他接触计算机很短时间,却能成为OO领域专家,OO无天才.... 我觉得同样让我做算法和OO做到最好,那么OO对我来说要更难些.

首先来讲我们要确定我们要做一个什么样子的人,是一个具有业务专长的人还是一个软件开发人员(我个人非常讨厌系统架构师这个称号,这是自我吹捧的一个代号罢了)。如果是前者,那么我承认你说的事实,我们进行项目开发的初期阶段通常也会找很多领域专家,然后让他们对领域进行分解,并可能会适当的转化为数学模型(或计算机模型)。但是系统并不只是这些东西,还要涉及存储、速度、健壮、人机交互等很多方面的东西。而这些是领域专家所不能达到的。如果你从项目流程的全局来看,业务分解,业务对象转化只是一开始的部分,并不是一个项目的全部。而作为可以软件人员,你不但要参与到上面的过程中,还要参与到接下来的设计、编码、测试、修正、部署等一系列的过程当中去。而且项目结束后你可能参与到另一个项目,而另一个项目可能跟你这个项目模型完全不同(或者不是同一领域的),那么业务专长的人就更没有优势。

算法和OO是没有关系,学好了OO未必就能学好算法,学好了算法未必就能学好OO,我觉得这样讨论没什么意思,本来就是两个不同的东西。每个人有每个人的追求,有自己的爱好,选择对方向,努力就是了。

有时间有精力都可以弄明白