非常同意gggg250gg 的想法. 我经常和我们公司的毕业生说, 你们只要把语言层面的基本问题掌握就好了,作到会用语言就可以了,然后花大精力去学习OO.
但是他们经常把算法,UI 研究的非常深刻, 经常会以又会用一个api而自豪.
这就有点本末倒置了.
说到底还是受到传统教育的根深蒂固的影响, 没有认识到OO在企业应用中的重要性.
所以, 我经常不厌其繁的向他们强调OO的重要性,可最后的结果是 他们谈论的还不是OO,而是某某算法怎么用,某个api怎么用.

所以我非常同意,bang 大哥说的传统教育的问题.

我昨天回去做了个实验: 我给老婆讲了OO,讲了抽象, 她立即就解释说"你们做的东西怎么那么简单啊, 面向对象就是面向抽象嘛!". 我立即晕到.

没有接受过面向过程教育的她,竟然能这么快的意识到面向对象, "面向对象就是面向抽象"我可是捂了一两年啊!!

==>这个概念是给那些不喜欢算法的人一个借口

要知道,如果我是从事数据库开发, 操作系统的开发,图象处理的开发等,
我就不会学习面想对象.

但是现在中国有多少是做这些工作的呢?就连国外有多少呢?
都说了, 现代软件的开发 决大多数是 企业应用. 开发企业应用的过程中,很少用到算法的, 用到最多的是什么?面向对向啊,
所以我就是认为 面向对象 比算法重要.因为我从事企业应用的开发.

如果我要开发一个数据库,操作系统,图象处理软件, 我就会认为算法 比 面向对象重要.

==>以为DDD可以解决一切问题,可是事实是如果没有了算法,DDD不过是上层建筑罢了

不知道这个逻辑从哪里来,算法和DDD哪里有直接的关系?是不是要学习DDD,要先学算法?不要再误人子弟了.

呵呵,我说了这东西就跟做菜一样,炒鸡蛋很容易,简单做点也不难,可能也会做的也很好吃,可是你不能称为国家一级厨师。你不能说我不想做大师,你的职业是程序员,既然是就要有职业操守。
>>不知道这个逻辑从哪里来,算法和DDD哪里有直接的关系?是不是要学习DDD,要先学算法?不要再误人子弟了.
当然要先学算法,学做菜不能一上来就看食谱,一上来看食谱注定你只能当个做菜爱好者,而不是厨师。你是程序员,上来要学刀工,颠大勺的,你的职业是程序员啊。


为什么总要断章取义那??
你真的可以脱离算法么??你说刀工不好无所谓,因为客户不在意的,火候不好客户也能吃,这是一种不负责任的说法。但是你是一个程序员啊,你的要求就是当个爱好者我无话可说,可是你是程序员,这是一种责任心的丧失!!


[该贴被Coolyu0916于2007年04月18日 11:37修改过]

==>当然要先学算法
所以说,你有点误人子弟.
问问banq大哥,你学习DDD把数据结构算法又看了一编了吗?
算法和DDD根本关系不大.

==>你真的可以脱离算法么?
确切的说,我脱离了写算法, 但是没有脱离使用算法,我可以负责任的告诉你,这三年我开发软件从来没有写过一个算法.

==>职业操守
我明白你这个职业操守的例子.
但是现在的问题是,现代企业应用软件开发(我只指这一类,开发数据库,OS等的除外)和算法没有必然的联系.
但是你认为是有必然的联系的,这就是我们争论的原因.认为DDD和算法有联系的,可以说你的思想已经"根深蒂固",为什么呢?这又到传统教育的问题上来了.已经串成一条线了. 我是把算法这个"根深蒂固"的东西抛到脑后了,可能我比较走运,压根不会算法.

最后回复你,
你我的思想根本不一样,争论不可能有结果,就此打住吧!如有冒犯,请海涵.

这不是已经很明白了,现在大多数人还是需要先学会做菜,糊口第一,以后想成为大师的时候,再去好好练习刀功、火候什么的吧。
也就是说,如果说入门的话,可以先从面向对象开始,学会一个系统的整体架构方式,至少经理分给你一个模块或是一个栏目之类的,你知道如何架构,至于里面的算法,通常不会太难,即使遇到难的,也可以请教高手,但基本的架构思想很多还是要靠自己来做的,项目经理之类顶多给个大致的框架而已,同时一般软件完成后,后期的维护通常也就落到了原来的开发者身上,所以你总不想自己回头看自己的东西都乱得不想再看吧?如果架构是灵活的、可扩展的、易于维护的,那么就算是全面更换几个算法又有什么难度呢。
我在公司里也跟上面abiandbel的感觉一样,通常一个具体的函数问题,倒不担心新人做不了,如果真有难度或是非常核心也不会让他们去做,倒是大量的工作需要他们能领会需求,分析需求,同时正确地架构相应的模块,如果这方面出现问题,后期是非常头疼的。新人最大的问题是给个具体的工作他会做,而需要构思一下,设计一下的事情就不知道怎么做了或者是结果不理想。大多数公司的项目管理可能还没分工到那么理想的程度,就象印度那样,大多数的项目经理分派任务还是按笼统的模块啊栏目啊什么的分给下面,一方面希望开发人员能理解现有的框架和设计,另一方面希望在细节的开发上也能充分考虑扩展性、可维护性等等。

所以Coolyu0916,你说的其实是成为大厨师的高追求,不适合初学者的,基础的算法、数据结构等有所了解就可以了,初学者更重要的是树立好的编程思想和设计思想。

>>所以说,你有点误人子弟.问问banq大哥,你学习DDD把数据结构算法又看了一编了吗?算法和DDD根本关系不大.
呵呵,不知道究竟谁误人子弟,我看DDD的时候不需要看算法,因为我已经会了,就像我看了菜谱照着做就行了,至于切丝还是切块,切多深,我心里都有数了,我还怕什么,不过多难的菜,我根本就不怕去做,因为我手下有准,书上说八分火候,我就八分,你没有这个基础你就要不断的去尝是不是达到那个地步了。

>>确切的说,我脱离了写算法, 但是没有脱离使用算法,我可以负责任的告诉你,这三年我开发软件从来没有写过一个算法.
那只能说你在写一些非常普通的应用,这三年你从炒土豆丝发展到了土豆丝炒肉了,呵呵,你别生气,你仔细想想你这三年做的项目,是不是都是在不断的select,insert,update,只是这些更加巧妙了而已,可能一开始你要自己手写,现在有了分层了,多了封装罢了,但是总的来说没有本质区别。

>>我明白你这个职业操守的例子.但是现在的问题是,现代企业应用软件开发(我只指这一类,开发数据库,OS等的除外)和算法没有必然的联系.但是你认为是有必然的联系的,这就是我们争论的原因.认为DDD和算法有联系的,可以说你的思想已经"根深蒂固",为什么呢?这又到传统教育的问题上来了.已经串成一条线了. 我是把算法这个"根深蒂固"的东西抛到脑后了,可能我比较走运,压根不会算法.
这句我就不想说了,井底之蛙,那是企业应用么??你做的是某个企业的解决方案,而不是企业应用。交易算不算企业应用,看看股票交易的说明,怎么最大化成交,买一、买二、买三怎么处理??你考虑过么??这些你靠select能解决么??也许你一辈子做不了鲍鱼鱼翅,但是你不要破灭更多人做鲍鱼鱼翅的希望来误导大家。

我用事实说话,我把我的感受告诉你,我不想我们国家把大把的银子给IBM!!这不是说谁不想给就可以不给的,人家技术摆在那里,人家能解决这样的问题,你解决不了。

>>这不是已经很明白了,现在大多数人还是需要先学会做菜,糊口第一,以后想成为大师的时候,再去好好练习刀功、火候什么的吧。

这个我承认是事实,所以我呼吁大家对于算法跟数据结构要努力的去学习,去看,你刀工、火候够了,再往上是很容易的事情,这叫磨刀不误砍柴工。如果你一辈子只想做个爱好者,不想登堂入室,那么满足现状也是可以的,但是你希望一辈子就是做一个爱好者么??

可能下面的话比较难听,但是我只是打个比方想把事情说清楚。
还是以做菜为例,如果你不打好基础,你可以在小饭店里面打工,每次都做5元一份的炒土豆丝,也许你以后会做芹菜炒肉、还会做不少菜,但是你的菜最多不过卖这个价钱,而且还要考虑能不能卖的出去。

如果你打好了基础,你可以去考一级厨师,去五星级酒店,一样的土豆丝,你可以问别人要50块钱,而且还要加收15%的服务费。而且你根本不用担心是否有人来买你的菜。

更主要的是你还有机会去做鲍鱼、鱼翅,因为你的企业能够接受这个失败,它可与让你用鲍鱼、鱼翅来制作新的菜品,成功了会给企业带来更大的效益,失败了对大企业而言还可以让你接着试,你的境界会越来越高。小的饭店不可能允许你用鲍鱼做菜的,一方面没有人吃,另一方面也不允许你做失败,它承受不了这种失败。时间长了,这种对比就会越来越明显。

to Coolyu0916
我想大家都已经明白你的意思了,作为版主,提醒你:有点好像麦霸嫌疑,让其他人多说说话,大者希音,不是喉咙大就有理由的。

不要再接我的话了,思想只有沉淀和理性,才能发光,短时间内大量发言,水分会很多,这不是J道倡导的理性论坛的目的,看你的IP地址来自大连,我上周刚给大连华信培训完Spring后回来,有可能我们认识,就当我求你吧,别接这个帖子了。
[该贴被banq于2007年04月18日 15:30修改过]

对不起,我还要回一下这个帖子
可能与这个无关

我只是让大家看看。

banq大哥你没有修改你以前我说的是
论坛就是来讨论东西的,我希望大家通过讨论来促进提高。争论不一定是为了分出胜负,关键要从别人谈话里面汲取自己有用的来补充自己欠缺的。

那个城市无所谓,你要是想知道你可以问我,我没有需要隐瞒的。华信是大连的一个代工工厂,主要给日本人做软件,我跟他们毫无关系,而且他们基本上上班也不可能整天泡论坛。我不是一个开发者,我是一个爱好者,一个使用者。

最后问一句难听的,"是以圣人之治,虚其心,实其腹,弱其志,强其骨。常使民无知无欲。使夫智者不敢为也。为无为,则无不治。"你是用这句话治理Jdon这个论坛的么??没有激烈的思想碰撞能有进步么??一家之言永远不能进步。

你说的是.我2004年毕业,学校没有把数据结构和算法学好,一直找不到工作,直到2005年7月分才从事软件开发.
这三年来,我从事的软件开发的大部分工作就是CRUD,正是因为这样,我才竭力倡导我们的公司,我身边的同事,平时要多花点时间在OO上,而不是研究某个算法,某个api.

我想从事更高级的软件开发,不只是简单的CRUD, 我想从事真正的面向对象软件开发.我想开发出好的软件,可扩展的软件.当我们的客户有变更的时候,我希望我和我的同事能够在一两个小时内解决,而不是加班加点的去改那些意大利面条式的代码.

我用我仅有的两年工作经验,和身边的同事交流,平时要以OO学习为主,并不只是看算法,看api. 我无悔于自己做的这些工作和努力.

我坚信,如果现在我回头去以算法为基础,我会自取灭亡.
但是如果我坚持以OO的思想去工作,学习, 用不了三年,我就可以做鲍鱼.如果我能更早认识到OO的重要性,我现在就可以做鲍鱼了.前些天有人已经出4K的工资请我,我面试的时候只谈了面向对象,他们让我去做设计.我知道4K不多,但是已经证明我以面向对象为基础的正确性.

我现在还在做.NET的工作,.net里面根本很少人讲OO.所以说,我的OO完全是自己体会出来的,没有任何人教.我知道现在OO还不到家,我没有能力和资格去说服任何人,但是我相信,我一定能用OO去解决我这只井底之蛙眼里的企业应用的.
同时,我仍然相信,学习DDD可以没有算法,但是不能没有OO作为基础.

看了上面的激烈的争论,我对 第一页 wind13 所发表的帖子,鼓掌,

可能大家说的都有道理,但是我在想,我们之间的层次是不是不一样了,项目做多了,不代表你很牛,你只是在这方面有经验,

我们从大学里毕业出来,我们要去找工作,而我们所学的东西,得让我们找到工作,然后有了工作,我们在追求发展。

底层是操纵高层,研究底层要看个人能力,就象windl3说的那样,先学着怎么用,然后在回头研究这是怎么一回事。

就好比我们买了台冰箱,你难道就去研究冰箱的工作原理?

在更多的情况下,我们是在使用冰箱,而没有去研究他们的原理。

话说回来了,为什么程序员工资的工资那么低了,很大原因,是因为我们都在做翻译,把别人的思想翻译成计算机能够执行的程序,我们所做的是,进行翻译而已,
而别人做的是,将他们的思想传递给我们,然后我们给他们进行翻译,换句话说,我们就好比民工。

struts,spring这些都是别人的思想,我们要先了解这是怎么用,知道怎么用后,我们可能会去了解这是什么样的一种思想,

如果我们不去学习这些思想,将来的程序员可能会越来越贬值,到后面的框架很容易的解决一件事,而我们所做的事,把这些框架使用起来。

至少我认为,我在能够生存的情况下,在考虑我的发展,所以我要先学会公司里的混饭吃的技能,在去考虑我的发展发向。

其实在我脑海里,“算法和数据结构” 与 “面向对象和模式”等的区别就好象“武功”与“兵法”的区别一样。
武功是局部的,兵法是统御的
一边就象是诸葛亮那类,对武功不感冒的,呵呵……
而另一边就象是江湖人士,对武功痴迷,这让我想起那部电影《英雄》,好象大家在争论谁是英雄?
视角不同,英雄也将不同,无谓争论了。
呵呵,帖子写道这里我都不知道说什么了。
我想大家都读过大学,如果你在大学用大四一年去研究算法,你可以去IBM,MS去面试(当然,可能外语要好一点),根本就不愁怎么去找工作吧。

而且大家看看强调OO设计的公司都是什么样子的公司。oracle、IBM还是MS??为什么大公司只是提质量体系而不强调OO设计那??

abiandbel,你是做.net的么??你去听听微软的课程吧,你可以把petshop4.0作为教程,看看是不是可以作为OO设计的教程,如果再高一个层次你可以看看entlib的讲座,这都是微软本身的OO设计,包括IOC,AOP里面都有的。MVP的设计非常清晰,不要因为没有见过就说没有这方面的设计。

还是希望大家加强算法及数据结构方面的修养。每天做CRUD难道不厌倦么??不期望自己有个突破么??