to coundy :

恭喜你碰到门坎了,碰到门坎意味着可能会上台阶。

人最怕的是找不到门坎,要么一辈子在地上爬,要么空中漂着没有根。

leebai:

我把问题列出来: Java语言算法 与 oo分析与设计哪个更加重要?
我认为OO分析与设计更加重要, 这个要花费比 Java语言算法更多的时间和实践去学习.leebai的那个算法 我也不会,编程到现在我最怕的就是算法.但是我觉得自己比以前有底蕴多了. 以前把语言当个宝,asp 具体都有哪些东西,java语言怎么用? 做了那么长时间我都不知道自己得到了什么. 

算法在一些特定的领域的确重要,图象领域就比较多.如果不入这些领域那根本不需要掌握算法.我们不需要写操作系统,图象处理软件.我们更多的是企业应用,我讲的软件开发就是为了解决企业应用的.会java语言算法,就去建立企业应用,看你怎么弄.写OS的,图象处理的除外.

哪个比较重要是要看他们的应用范围,目前国内还是企业应用比较多的.

如果让我面试,我会把leebai的算发拿过来,用来考java语言算法,算法有没有实现无所谓,会写java语言就可以了. 但是下面我将大篇幅考核OO分析与设计,因为我认为只有OO分析与设计到家了,才能把企业应用做好.

框架让我们更好更快的开发企业应用,有写人都不知道Spring Hibernate解决什么问题的,就拿来用,即使你懂得java语言与算法,但是不懂OO分析与设计,你很难知道他们是解决什么的.但是当你明白OO分析与设计后,你可以很轻松的学习这些框架.

如果你是开发OS,图象处理, OK 你只要学好语言与算法就可以了.
如果你是要搞一般的企业应用,还是要把OO分析与设计学好,
做了这么多的企业应用,为什么会失败呢,哎,就是没有人会用OO分析与设计去建立良好的领域模型啊!

搞不懂leebai这样这么有经验的人为什么还要拿算法说事情,误人子弟啊!不同领域的基础是不一样的.要看领域一般性啊,国内开发OS的多,还是开发一般的企业应用比较多? 你觉得那些框架学的比较慢的话,那就是因为OO分析与设计不到家.我学习Spring+Hibernate时间不到一个月,感觉很简单,现在就可以应用了. 以前看这些框架的时候,都不知道他在讲什么.


OO分析与设计 是 一般企业应用的 基础.

你说的对,但不准确。“思想”和“逻辑”还是不同的,中国人不缺思想,但缺逻辑,这也是中国近代以来落后于世界的根本原因,题外话了,呵呵。
=================================================

我觉得你讲的刚好相反,中国人最缺的是"思想","逻辑"比"思想"多,但是"逻辑"的深度还没有国外强.

我说的"思想"是OO分析与设计,"逻辑"就是语言算法.

to zhouxu:

》简单、高效、低成本==僵化、高维护、不可重用
》DDD一书中论述过这种智能UI技术,不想学成猪的人一定要小心。

我做软件首先追求的是usable(functionable),其次是stability,最后才是performance,maintainability,reusable,而在所有的方面,我都追求生产效率。 也许老兄的追求次序不同,我也能理解,这年头说什么人都有,多元化时代嘛。

简单和可重用很多时候确实是有矛盾的,但简单和可维护没有矛盾。

我没看过DDD,不知道你说的“智能UI技术”是什么,能否细谈?

“不想学成猪的人一定要小心”,这话你老兄说对了。我做这框架的目的就是让程序员享受猪的快乐,而不是写出的每一行代码都惊天地泣鬼神(补一句:当然框架本身的每一行代码是必须要惊天地泣鬼神的,否则达不到目的,这叫“严于律己,宽于待人”)。

[该贴被leebai于2007年04月11日 11:42修改过]

to abiandbel :

如果你见到我那笔试题的第一反应就是去记忆深处挖掘你所谓的“算法”,找不到就说不会做的话,那你就根本没有领会banq兄这个“J道”的真谛,我要说:banq兄,你这也是“误人子弟”啊,呵呵。

我中学时用Basic做这个题,当时脑子里根本就不知道什么是“算法”。

你要知道微软和google这样的公司,考试比我这个还极端:说白了就是直接测智商。
[该贴被leebai于2007年04月11日 10:47修改过]

不会就是不会,没有什么好掩盖的. 而且我不会算法,并不是bang大哥"误人子弟",我对bang大哥的观点绝对赞同,第一次来到J道,我暗暗切喜,我终于找到志同道合的人了.我舍语言与算法,而把基础放在OO分析与设计建立领域模型,完全是我自己两年软件开发切身体会.

为什么,原因我已经阐述,
一般企业应用是以OO分析与设计建立的领域模型为基础,
OS啊,图象处理啊(我叫不出具体的名称,肯定还有遗漏的方面)是以语言与算法为基础的.

而且我认为现在我要从事的是一般企业应用开发,所以我更多的学习OO分析与设计建立领域模型. 这么长时间下来,我认为自己还只是掌握了皮毛.

不知道你为什么要把算法看的那么神圣,
是你的侧重点与我不同吧!还是你用语言算法开发了这么多年的 企业应用?
反正我有点想不通,呵呵!
[该贴被abiandbel于2007年04月11日 11:17修改过]
[该贴被abiandbel于2007年04月11日 11:19修改过]

to abiandbel :

"误人子弟",开玩笑,别当真。

题不会不丢人,不动脑子就不应该的了,你有OO分析与设计的智商,做这题绝对没问题。再明确一遍,这道题不是竞赛题,离智力题的水平都差很远。教条主义害死人,哪儿都这样。


补一句:
》》》这么长时间下来,我认为自己还只是掌握了皮毛.

两年时间如果只能让你掌握点皮毛,那这东西还是不学的好,人生有几个两年啊,呵呵。俺掌握牛顿n个定律也就几天时间,后来的相对论俺好几个礼拜搞不定,就不学了----没必要啊,我又不是物理学家。

[该贴被leebai于2007年04月11日 11:33修改过]

我想问几个问题, 只涉及基础, 不涉及其他讨论方面,例如发展,重要性等等。

1: 你说的基础, 指的是JAVA程序员的基础, 程序员的基础,还是建模专家或数学专家的基础?

2: 基础是指必备知识,是否在广泛存在的问题中,我们都必须具有这样的能力才能解决问题?
- 想想你们的项目开发中, 最广泛的问题是否是因为自己不具备你们所说的“基础”而造成的。

3: 基础中也有轻重, 当前那个对于解决问题更具有实质性的提升。

To leebai:
你那题只是算法书上一个简单算法,对于我做项目没有实质作用, 甚至我连用没用得上都不知道,但我知道,如果我需要的时候,我翻一下就能再次明白,而对于项目来说:用得最多和最需要掌握的是design and thinking model.
算法其实也只是一种解决方案, 或效率或复杂度, 确实也是我们需要掌握的一个能力。

To all:
- 搞清楚讨论的topic, 请不要老是想着与自己观点不同的地方抓刺而去反驳他。
- 不要有“互轻”的观念
- 想清楚上面3点再回答什么是基础
- 也许我说的过激,抱歉,只是不想你们互扯。

引用BANQ大大的话(原话我不记得了):
不要把计算机编程和数学等同。

有关基础, BANQ已经说得很明白了, 言毕。

to snowfeather:

说话干脆,i like it。

如果老兄还是以“算法书上一个。。。”来看那道题,“。。需要的时候,我翻一下。。”,那么,我觉得“Program”的精神还没有融到你的血液中,对于软件来说,知识是次要的,能力才是根本。我没见过哪本书上有这个题的“算法”,但我知道这个题有----N----种解法,这是程序员应该具备的自然本能,这道题有没有用是一回事,做的出来做不出来是另一回事。去看看国际大公司的招聘考试题,你就知道什么是“选人才”,什么才叫“人才”。

如果一个程序员不查资料就做不出这个题,我认为他实在没有资格学OOP/OOD/OOA。

我不反对OO,但不认同过度的OO。老兄可以去看看我的框架,看里面有没有构思精巧的OO设计(我不喜欢用“模式”这样的词汇,这种东西容易把程序员教条化,看到一盆水从阳台上泼下来,就“飞流直下三千尺”,好象汉语就那么几个字似。)就知道我的态度了,


》》引用BANQ大大的话(原话我不记得了):
》》不要把计算机编程和数学等同。


BANQ兄这句话估计有特定的语言环境,编程和数学当然不会等同,这话不可能是错的。 但是一旦教条化,它又是错的:物理学、天文学研究的最高境界其实就成了数学研究,编程的本质其实就是数学求解,OO和数学一点也不矛盾,你去查查OO的最初来源就明白了。这说起来有点“上纲上线”,但BANQ兄这块地盘是修“道”的,我觉得在这里说也还算合适。

to leebai:
> 中国人不缺思想,但缺逻辑
非常赞同您的这个观点

再来说说 算法.
我非常同意banq大哥认为传统教育"误人子弟"的观点,原因也出在算法上.
大学学习数据结构的时候,我挂了几次,最后不知道怎么过的.
后来考高级程序员,下午就是不过,放弃了.
04年毕业后,我做了一年的业务,没有办法,招毕业生还特别重视算法,有的直接拿高程题目来考.我认为自己不适合做软件开发,就要放弃了.后来我偶尔接触到了OO,
看到高手说 现代企业应用开发,算法根本不重要,重要的是OO. 就好象抓住了救命稻草,疯狂学习OO.终于05年底做了软件开发, 做了这么长时间,我又认为.Net人很不注重OO,遭遇很多的失败,又想转Java.

一路走来,我发现,如果不是OO,我已经回家种田了.到现在,我依然不会算法,但我做的很好 .学习OO不到两年,但是我已经深刻的认识到,OO是企业应用的基础,我会更加一如既往的学习用OO建立领域模型.

不管楼主所说的j2se基础是指java 语言,还是指算法,还是其他,我都可以负责任的告诉你:在有限的精力内,学习OO分析与设计会给你带来更大的惊喜.当然如果你是超人,精力充沛,j2se基础和OO都能学的非常好,那当然更加好.

To leebai:
>>我做软件首先追求的是usable(functionable),其次是stability,最后才是performance,maintainability,
>>reusable,而在所有的方面,我都追求生产效率。 也许老兄的追求次序不同,我也能理解,这年头说什么人都有,多元
>>化时代嘛。
不要讥笑。我的次序和你也差不多,但软件是分层次的,我想你不会在你的核心技术里轻易地忽略哪怕任何一个要素。

>>简单和可重用很多时候确实是有矛盾的,但简单和可维护没有矛盾。
我这里指的是开发工具的简单,比如那些曾经盛极一时的MIS系统,那些声称不用编写一行代码的,甚至包括后来众多的4GL语言...用这些简单工具开发软件固然快速,但都存在一个致命缺陷,那就是没有或很难建立一个完整的领域模型,充其量是一堆类似事务脚本的东西。
当然,对于简单的项目,用一用还可以,尤其是对于广大非专业人士一定大受欢迎。

>>我没看过DDD,不知道你说的“智能UI技术”是什么,能否细谈?
在本站搜索一下,会有不少有关的话题。
有意思的是,Eric指出智能UI技术是旁门左道,正是因为这种开发方式不信任程序员的能力,不主动发挥程序员的创造性--猪没有理想没有创造性所以快乐,但程序员没有理想没有创造性也快乐吗?

(有需求的工具就会受到支持的,我没有任何贬低的意思。)

请问:这个论坛的全文检索怎么用?没找到地方,我要查“智能UI技术”

to zhouxu:

还在找“智能UI技术”。。。不过估计不是我的模型那种。

我的框架并非“MIS系统生成工具”的当代版,你见过MIS系统生成工具能开发windows资源管理器类似的程序吗?我的框架是通用框架,不局限于数据库应用。

我是新人,胡乱说说。
我感觉就是分工精细了。最早也是不分软件工程师、硬件工程师的。设计计算机的人也同时是写程序的人。后来随着软件业的发展,软件行业也出现了分工,于是也就有了算法设计师、系统架构师。对于每种分工来说,我们才可以谈论这种工作的基础是什么。系统架构师对算法只是一种了解,即使不精通,也可以成为优秀的系统架构师;同样算法设计师即使不精通系统架构,也不妨碍他设计优秀的算法。但是要用软件解决问题,作出优秀的软件,就需要合作了。分工是因为人的精力有限,无法两头兼顾,所以如果要成为算法精通,基础就是数据结构、数学,要成为架构精通,基础就是OO思想。