不学算法直接写java的人多呢!


从c转到java的人思想上有障碍,看见对象就会去想他的地址!这种思维定式不是3天2月能扭转的,没有办法!

楼上的可以先从uml入手,了解面向对象,再转Java
ps:本人就是UML->JAVA的转化过程

请楼上的把J2ee的Turiroal读完!读完之后你就会知道j2ee是什么!j2ee讲的全是解决方案和j2se没关系,你看j2ee但是用C去实现也可以!只不过j2se是个很好的轮子。
[该贴被zuly于2007年04月05日 23:15修改过]

>新技术也是国外那些大师们在传统基础知识上开发出来的,咱们怎么就开发不出来?(banq老师能回答我这个问题吗?)

因为我们陷入了传统基础知识里面跳不出来了,没有创新开拓勇敢的精神,传统又学得不精,老子很早就说了: 为学日益,为道日损. 学得越多,要跳得出来,跳不出来,就死了.

探究这些现象,说大点:说明国人丧失了大智慧的哲学意识,说近点:这是死读书封闭的教育科研体制造成的.

看了这个讨论,太开心了,哈哈……

Jdon这个网站就是在研究Java的道,如果你看了老子或庄子的道家思想,就会理解banq为什么会有如此的观点和论调,“跳出来,站在身外看世界”,好象说两国之争也只在蜗牛的角上,如果我们只是想抓只蜗牛来玩儿,又怎么会在乎里面的血战?有用与无用是在于得到他的人如何看待而已。
面向对象模式等与编译原理什么的何为基础,这个问题我想举个例子来说,就好象我们日常所用的各种电器、手表、电脑等,你说其中的机械原理、电子原理等是基础一定没错,没有这些知识哪能造出这些东西,但如果banq说如何更好地用手表计时间、更正确地使用冰箱存储食物、用电视收取信息、用电脑帮助工作才是基础,那对于自然界中的我们——人,来说,可能就更加自然和容易了。

本人大学学的是药学,可以说跟电脑没有一点关系,因为从小的爱好,后来工作中不断从平面设计到网站建设最后到BS结构软件,觉得接触到Java的面向对象非常高兴,这样的程序才象是有生命的,原本跟我想的就一样嘛,后来懂了接口的概念,觉得是一种提升,将行为进行抽象就更妙了,再后来看到模式,很是兴奋啊,觉得这才真的是在编程序,好象孙悟空学会了七十二般变化(见《Java与模式》闫宏著)。至于很多程序员,特别是C、C++系统的所提到的数据结构、编译原理、内存指针,对我来说确实是相对陌生的,在我觉得那才真的是高层次的东西,我打算哪天需要做一些底层的、工具性的软件时再去研究吧。就好象说我先把家里这些日常生活需要用的电器搞得会用,正常运转并且能科学合理充分利用,帮助我解决平常的难题再说,以后哪天如果觉得哪个电器不够好用,需要有所改进,再考虑是不是自己研制一台新的,可能这种可能性会相当小,更多的可能还是找到制造这台机器的厂家,给他们提出改进的建议,他们可能会解决得更加好。
[该贴被wind13于2007年04月06日 10:23修改过]

wind13 说的很好啊!我赞成.
banq老师从开始一直到现在,都在强调程序的应用方面,oo的强大之处,怎么利用oo在较短的时间内做出更有生命力的系统,以及咱们应该向面向oo转型,今天编程爱好者都知道oo很好,比面向过程好,我觉的banq老师说的很对,对好多公司和想在编程应用方面(不包括想在底层发展的程序员)有所成就的人很大的启发.

但banq老师对传统的基础知识一味的贬低,真让人失望啊,可以想象一下假如一个程序员不懂算法数据结构,编译原理怎么能做出一个好的系统,就拿windows来说,盖茨怎么不用oo改变,并且不用传统的基础知识,那可能吗?中国的程序员都向你学习,可能很难开发出自己的操作系统,编译工具,包括开发工具,没算法数据结构,编译原理的基础知识怎么开发啊?(请banq老师回答).

>Collection和数据库技术已经就是依据数学结构做出来的,你学了数学结构,自以为懂了很基础知识,碰到COllection,你就会自然去打开看看,自豪运用你的数学结构理解它一番,可是这些对于你如何使用COllection根本是两个领域的知识(如何使用Collection是模式领域知识),这些都是先入为主造成浪费时间,能力不足的表现。

对底层数据库,操作系统的研究是浪费精力和时间,但也不能说是能力不足的体现啊,我看能把操作系统研究通的程序员是最伟大的,最可敬的.不研究怎么能用活那,怎么能借鉴别人的技术来开发自己的啊!一大批人是不需要对这进行研究(包括我),可中科院和一些研究所的搞科研的人需要研究啊,不研究中国怎么在计算机界有质的飞跃啊!(banq老师你说对吗?)


>>为什么我们两个看同样的东西,得出结论不一样,就是因为传统基础知识蒙蔽了你的眼睛,让你带上了数据有色眼镜.

banq老师把算法和数据类型看成是符号,这可能是在oo里马上要出现的名词定义吧!
里面的数据也不叫数据了(让你带上了数据有色眼镜),那该叫什么那?

>>你看到的是算法,而我看到的是符号,是类似UML类图的另外一种实现方式,model包下面类代码其实都是可以用UML画出,现在这种双向工程软件很多,你使用together或rose再打开jivejdon3.0看看,你看到的是图,表达对象可以有多种方式:UML图 Java代码 C代码.

UML建模是很强,建再多的类,实现再多的对象,对象里面总要用到数据类型,算法,只不过类和对象组织的程序比以前的只用函数实现功能的面向过程的程序要好的多的多的.一个简单的链和数组也算是数据结构里面的吧!一个简单的for语句,递归语句也算是简单的算法吧!banq老师说的数据结构和算法就是符号,不懂算法和数据结构,用UML把类图完美的画好,可怎么实现啊(因为人都学模式设计,框架去了,没人懂算法和数据结构了,连进程和线程也不懂了,就知道一切都可以用对象实现,可怎么实现啊?)请banq老师回答!(别再说用符号了,符号代表的太多了)


>>那种将技术分解,喜欢深入技术内部探讨的思维方式就称为向下思维,


深入技术内部就是向下思维,向上思维和向下思维有这样说的吗?就象windows一样,大家只管用它,不需要管它怎么实现,对大部人来说真是这样(包括我),为什么好多公司,好多研究人员千方百计的想让盖茨公开源代码啊!要是windows真公开了,肯定他们会好好的研究一下,争取在windows的基础上做出比它更好的系统,难到这些公司和研究人员也是向下思维吗?(请banq老师回答)

对一门技术的应用和开发是两码事,应用的只管怎么把这门技术用好,而不关它内部怎么具体的工作的.开发就不同了,要知道它的内部工作机制和各个部分怎么才能协调的工作,并且开发出来要让广大的用户喜欢.不懂一些基础知识只懂对象和模式能开发出来吗?
(请banq老师回答)


>>>OO是和这些传统基础知识并行的,是水火不容,是两个路线问题,非此即彼,是相克的,是黑与白,是不匹配的,是mismatch的。

哲学中有这样几句话:"事物之间都是相互联系的","一切事物都在变化之中",怎么能说OO是和这些传统基础知识是水火不容的啊!


一切辩论的本初是追寻事物的本质,当知道了本质后,就不要再玩语言游戏了,辩论不在于分出高下,而在于明白真理,如果你明白了对方的意思,就不必再争论了,呵呵……

有些教育的误导,常常培养人们的辩论能力,而不是理解对方,寻找与对方合作可能的能力,感觉也就好象我们的软件教育,常常把一件简单的事情搞得复杂。

以上问题,看过的人都已经清楚了,已经不必再争论下去了,各自可以思考各自的方向,不可能每个人通过一次辩论后,都变成一样的观点,走一样的路。

道可道,非常道

软件编程之道,恐怕也不是一句两句能说得清楚的。

我认为这不是辩论,这是一个很严肃的问题,对大家学习有影响的方法就不应该在一个讨论学习的论坛上存在,应该抛弃.对待科学就应该严谨点,思想是很重要的.

>>其实数据结构与模式语言的结合可以很好地 重用的解决一类通用问题,下面这个主题就是结合Composite+Visitor模式和二叉树概念解决树形结构通用问题访问这类实际应用中问题,从而形成解决一类问题的框架,这样不是提高我们开发效率和开发质量吗?(banq老师你以前说过吧!)
这是banq老师以前在论坛上给大家说的,而今天又说
>>OO是和这些传统基础知识(数据结构)并行的,是水火不容,是两个路线问题,非此即彼,是相克的,是黑与白,是不匹配的,是mismatch的。

这能不让人费解吗?

作为一个大家心目中的专家,高手,能这样解释问题吗?这还叫科学的思想吗?

算法与数据结构才是程序的灵魂
如果你在框架的光辉下迷失了方向
你就就成为了蓝领工人
------------------
以上的话绝对不是讽刺
为什么用框架,是为了提高生产效率、为了降低成本
你说你用了框架除了框架的API你什么都不会
每天都在关心框架的变更
每天都在问自己是不是落伍了
担心这个不会找不到工作,那个不会怎么样
如果你真的算法与数据结构非常厉害
IBM,Microsoft你不是随便挑么??

计算机专业已经今非昔比,需要重新划分更多的专业才行,各有各的方向。得图灵奖的好像都是算法与数据结构大师,但搞企业应用他们恐怕不行。我个人认为软件设计是一门艺术,与数学关系不大,高等数学也早忘光了。
学艺术与学数学自然不同,两方面没有什么可比性。

楼上真的想过什么是企业应用么??
google的起家就是一个算法
microsoft的起家也是算法与数据结构(操作系统)
这两个是真真正正的纯软件公司
难道有比他们更加出名的企业么??
看看那些标称框架的公司,他们的效益和影响力有这两个公司的几分之几??

本来我不想再谈这个问题了,看了Coolyu0916说了那么多,我又想说两句了,因为大多数人都明白这个问题,只有banq老师领导的J道这些人,好象把模式和框架太神化了,把其它的一切基础都看成是模式和框架绊脚石,
你们可以说模式和框架很重要,以后应用的也很多,好多人都同意,也符合发展趋势,可也不能把模式说成是学习编程的基础吧!那真是太离谱了,这就好想是说,一个小孩一生下来,就会走了,不符合事物的发展规律,学习也要有个过程吧,数据结构以前都是用面向过程的语言来描写的,现在oo重要,现在不就有好多用oo语言描写的数据结构吗,它一样很重要啊!

我上面问了banq老师好多问题,为什么不回答啊?
你的回答可不是我一个人看的,是有好多登陆论坛的人要看啊!

数据结构真的过时了么??
不要以为现在没有使用数据结构与算法
架构中大量使用HashMap用的就是hash算法
知道hash算法可能出现什么问题么?
hash函数怎么处理的么??
为什么使用hash表而不使用链表那??
只是因为方便么??
只是java帮你封装了,你觉得也够用了
如果真的有一天你需要自己来处理内存中的数据
建立自己的hash函数,这就很重要了。

框架永远脱离不了算法与数据结构的

多谢zjlzjlzjl一再邀请,我的观点前面已经说得很明白,可能你目前没有理解,还是听听大家意见,让更多过来人来谈谈自己感受。

呵呵,可是banq大哥始终无法解释为什么注重算法与数据结构的企业发展要比注重架构的企业要好。
我们用手指头数一下
IBM - 提出了java架构,可是从400主机到9000、6000主机都很少有jdk。websphere还需要自己来装。

microsft - 提出了.net平台,可是赚钱的是office与windows

google - 提出了ajax,主营业务是搜索引擎以及广告,用了什么framework?

oracle - 数据库的老大,关系型数据库的基础是什么大家都知道吧,用了framework??

borland - 我曾经最喜欢的企业,现在开始做企业整体解决了,可是效益跟影响力怎么却日益减退那??

还需要举例了??

如果你打算当蓝领工人,那么请努力学习那些framework,因为你的公司需要它们,需要他们来做项目。但是如果真的想发展,走入软件的核心,进入ibm,microsoft,google,去进入到核心,请仍然回到算法与数结构上。

Coolyu0916 和 zjlzjlzjl 要先明确在讨论什么问题,不要引向绝对化。
Coolyu0916所举的例子都是说核心的东西是数学、算法、数据结构,最牛的东西是这些,可是我们现在讨论的是初学者应该从哪里入门,正如我上面所说,每家每户都用电器,所有的知识都是先学会用它,再学会其中的原理,很多知识只要会用了,就已经可以做出很多东西,对社会有贡献了。

至于你们所说的“基础知识”,说不定哪天你们又会遇到某个数学狂人,对你们现在研究的计算机知识嗤之以鼻,说数学才是基础,数学问题你们研究得太少了等等。

明确问题,研究方向不同,对于做应用性的软件(目前大多数项目也仅止于应用)来说,面向对象的思想、模式、框架等确实已经成为基础知识,更宏观一些。

拿机械行业来举例,我们可能更关心的是类似于机械的结构,如何用现有的别家厂商的发动机组装成自己的产品,可能80%的零件均来自其他厂商,但只要产品是独特的也是可取的。而如果片面强调机械内齿轮的钢材如何如何,镙丝的丝数如何如何才是基础,那可能就有些舍本逐末了,始终明确刚起步时,你要做的是什么。

二位所说的“基础”确实是基础,只不过对于初学者来说,深奥了些,等他们会做一些简单的应用后,等他们已经能胜任当前的应用软件开发的工作后,我想他们会回头来补这一课的,到那时学习这些所谓的“基础”时,可能更容易、更好理解、更明确目标,甚至那时才会在学习的基础上更多地思考“原来我那时用这样的结构是不太好的啊!”“好象那个模式里加入这种算法就更妙了”,而这些思考是一开始学习这些基础不会想到的,反而会觉得枯燥无味,学而无用等等。

我的学习理论:先会用,管他怎么回事!回头再细细研究,一定更有体会!