这个讨论非常有意思。。。

本人2年多以前也是在矛盾中痛苦着。每天周旋于数据结构的复杂和JAVA的纯面OO。。。

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

让我深有同感。我就是一个活生生的例子!!一个没有学过计算机的人,并且直接从OO语言以及设计开始学JAVA的人。回想当年从邮件都不会发,QQ不懂申请。WORD不用(题外话!)到学JAVA,直到现在靠JAVA混饭吃。。

能从一穷二白到靠JAVA混饭吃,全靠当初一位老师的提点。。他第一次鼓励我说:你是学过政治那些东西的,对抽象的东西都可以理解,我想信你很容易理解JAVA,并且没有过程语言束缚你的思想。并且强烈要求我放下数据结构的书。

从此我才走上正途。。。。

另一个例子是我的朋友。他是一个中山大学的汉语言文学研究生。
他没有学过计算机,通宿舍的人报修C++一门课,结果那人没去,他自己觉得闷就去了,学完后也没有什么,听说考试得了很高的分数。原因是是他精通哲学,居然在短短的三个月看完了 深入浅出MFC,.我完全无法相信他会看得懂。我很疑惑。他只是淡淡说:那些只不过是抽象了客观世界的一部份而与。我晕死。。。。


断线,再续一帖。

这位仁兄为何理解能力如此的强?最重要的一点是他没有去顾及太多的细节,过程,和算法。他首先把事务高度抽象,然后他有把事务分解成算法的思维!


虽然C++不是纯对象的语言(道听途说!)为了兼容C而有很多算法。。但是一个没学过C的人直接去学面向对象的语言,就这个例子看来是可能的。。编程语言不断的抽象,一层层的包装。。从打纸条到汇编 再到ada..然后是JAVA....

难道现在还要人去把类和对象,组建,框架分解成碎片来用吗??
ada作为第一个纯面向对象的语言(又道听途说!),ada有着巨大的库。。还不是一般的巨大。。非常巨!(再次道听途说!)!这是为什么?就是为了复用!简单的说就是写过了就不用再写了。

Ada 最初设计时关注于 3 个最重要的问题:程序的稳定性和可维护性,程序设计和人的行为接近,并且高效。

请大家考虑: 程序设计和人的行为近。这是什么?

由于 Ada 的语法接近人的语言,即使是初学者,也不会感到很难读懂。

请大家考虑: 如何让编程语言接近于人的语言?


如上。说了那么多,无非是赞同banq这帮人的观点。。孟岩说C语言已死了引发的涛论和这个论题很相似。。

我认为面向对象编程语言是把客观世界的过程和信息高度抽象出来,通过认识其重复规律而得已不断重复使用来改造世界的一种方法论。

而过程编程语言只是把过程和信息分别的抽象,通过认识客观世界的过程的重复规律来改造世界的方法论。


这里结帖!!!!!!!!!!!


我在2年前一直观注jdon,jdon更观注的是oo的思想,个人也很同意banq的观点,不懂“编译原理、数据结构,操作系统”也完全可以开发出高性能的软件。就像banq说的Collection,开发商已经将Collection封闭好了,你直接使用就好了,除非性能要求软件,比如高性能排序,虽说Collection.sort()已经提供排序功能,但你也可以搞出更好的算去做排序。也就是说你完全不会数据结构,一样Collection.sort()也可以完成需求。banq大哥说的他所开发的软件现在使用db,说哪天换成xml,也只需将接口实现换成xml实现类即可。这就是OO的魅力。java编程思想讲的确实是oo。软件是艺术,并不是死记硬背的API。

呵呵,吃别人吃过的镆还觉得有味道。真的是悲哀。

inter有8086的处理器,要龙芯真是费钱啊。

windows好好的,我们盗版挺方便,谁那么无聊弄个linux,中国干吗要发展操作系统,就是浪费钱吗。

oracle已经很完美了,db2,sqlserver也不错啊,免费的咱有mysql、Postgre SQL,东软要做什么中国的数据库,做的那么差不是丢人现眼吗。

中国根本就不需要叫什么计算机原理、算法的课程,第一学期给个java的jdk,背下来就及格了,第二学期就开始做oa、erp,crm,我们换着样子来,那中国的的ERP可就全世界出名了,那么多企业用那,这么多学校做加上企业做,收费的、免费的,肯定世界第一。

呵呵,觉得从db换成xml就是神奇的,可是银行晚上必须完成清算,否则第二天就不能进行业务,你加内存吧,你加cpu吧,一点都不贵,不行加个9000服务器,反正有的是钱。

没错,GOOGLE就是通过增加内存,加cpu来解决问题的,但是因为9000个太少拉,GOOGLE一次性向INTEL购买了30万个服务器....


GOOGLE核心的东西会变吗?没有好的系统设计思想,就没有好的系统伸缩性,要算法何用?

印度的软件行业的发展过程过程就是对算法的最大讽刺.!

>>GOOGLE核心的东西会变吗?没有好的系统设计思想,就没有好的系统伸缩性,要算法何用?

google靠设计起家的??超级郁闷,什么时候PageRank算法成了设计了??从yahoo最开始的网络搜索引擎到现在的google,baidu都是靠算法起家的,跟OO设计毫无关系。

印度承认自己是软件生产车间,我说那是软件蓝领,可是你不喜欢听,你一定说我们不是,什么设计设计是从印度流传出来的,印度出了什么著名的软件??有一天如果印度的人力成本超过其他国家,印度的软件业会迅速衰退。外包、代工永远不可能接触到核心产业,也永远不会有大的发展。

9000少么??我接触的企业80%都有9000服务器,即使没有也有6000服务器,可是真的解决问题了么??google为什么买那么多pc服务器知道为什么?为了降低成本!!为了加快速度,改进速度不需要修改算法,用你的sort够么??

oracle有java包吧,可是核心的数据库引擎都是c写的,IBM的为了java社区做了多少贡献,看看9000、6000服务器上装得什么版本??上面的服务有几个是Java写的??这才是讽刺。

国内做了那么多crm,erp的解决方案,那个世界知名的?买了个软件人一多根本就不能用,不得不重新请IBM来给我们做事务处理。想想为什么,因为你接触不到核心,大把的银子只能给别人。你上层应用卖的钱还不够别人一人月那。

算法解决的都是结构良好的问题,也就是有清晰定义的问题,所以不少算法大师都同意--算法的问题就是提出问题。

企业应用的大部分困难也是找出问题,因为需求是变化的,但不是毫无理由的变化,背后的推动力就是潜在的抽象问题。运用OO的目的,正是为了捕获那个潜在的抽象。

为什么说OO更重要呢?因为OO更侧重于深度抽象问题的能力,OO方法建立模型的目的之一就是容许变化,不断追踪问题的本质,通过持续演化,找出最贴近现实的原型。这个过程体现出与算法与数据结构训练的根本差异。

现今大学教育的最大问题,也是只重培养学生解决问题的能力,而忽略了找出问题、定义问题的能力。

结构良好跟spring,hib无关。

我再说一遍我的观点,我认为oo也非常重要,良好的设计在软件的生产中也是必然。但是设计是设计,不等同spring,struts,hib,这是要区分的事情,你要看的是设计模式,而不是21天学会spring,有那个时间你看一下算法与数据结构,会更加有用。

而且我真的希望国内企业能够加强自己的企业竞争力,别动辄使用了这个框架那个框架,没有用,对用户来说实实在在的解决问题是最高兴的。核心竞争力怎么提高,靠使用hib使用struts么??

>>现今大学教育的最大问题,也是只重培养学生解决问题的能力,而忽略了找出问题、定义问题的能力。

这个问题也不是OO能解决的

跑题了,不过接着说吧


>>我觉得一个项目组应该有一部分剧本攻关能力,去做最难的部分
从这句话开始,Coolyu否定了算法是更为重要的基础。不好意思挑语病了呵呵

好了,现在争论的焦点从什么是重要的基础变成了什么对程序员更重要了。

不过大家说来说去,其实说的是两个方面的,就楼主的问题而言,学习java什么最重要?学习java是为了使用java,那自然不是算法重要。对于程序员来讲,如果你搞OO的,那么可以说算法就不重要,如果你搞过程语言的算法自然就是重要的。

我总是觉得Coolyu打的比方有些问题
》》吃别人吃过的镆还觉得有味道。真的是悲哀。

这里应该说是别人作好的馍吧?一边给你刚作好的热馒头可供食用,另一边是给你面粉、水、锅等等可以自己做想要的馒头,对于饥饿的你来讲你是选择哪一边?

另外,软件蓝领就是软件蓝领,没什么喜欢不喜欢的,我相当认同这个叫法,叫软件民工也不错。只不过说明状态,没什么侮辱不侮辱的。

>>而且我真的希望国内企业能够加强自己的企业竞争力,别动辄使用了这个框架那个框架,没有用,对用户来说实实在在的解决问题是最高兴的

你的意思是就是框架不能实实在在解决用户的问题了??
[该贴被colina于2007年04月16日 13:50修改过]

解释一下楼上给我提出的问题

所谓攻关就是处理系统中的瓶颈,也就是系统中最难的部分。我接触的项目通常都有明确的目的,比如说这个项目就是为了实现XXX,其他的显示啊,分层啊都是一部分人做,关键的部分只是很少人做,通常比较考验能力,对算法也有很高要求。

至于我说为什么吃别人吃过的镆,是因为我觉得中国企业做的软件太缺乏竞争力,同质化严重,缺乏内在的魅力,为什么要选择你的解决方案那??因为我跟你比较熟,这就是现在大多数企业信息化的现状,所以销售人员看不起开发人员,因为没有他们你的产品只能等着烂掉,所以他们拿的钱也比你多。如果我从这个企业走掉了,如果系统升级很可能就把你的系统换掉了,因为人际关系不在了。

如果你的软件具备指导作用,或者不可替代,那么想换掉就不是那么容易了,我的软件能告诉你怎么节约成本,你的只是出个报表什么的,这就是程序的高下之分。

算法是软件的灵魂,没有算法的软件本身就是缺乏竞争力的软件,因为他没有特点,你说你是设计精妙的ERP,我是代码很烂的ERP,但是对客户而言没有区别,但是如果我代码很烂的ERP可以解决企业的问题,对客户而言我的就是好的ERP。

>>你的意思是就是框架不能实实在在解决用户的问题了??

是,他解决的软件公司的问题,不是最终用户的问题。