这两句我认为没有前后关系,CRUD累了,我会做个框架或代码工具来替代我做,这样我省心了,但是你又让我去学算法,我累不累啊?就象你和累了一天的搬运工说:累了吧?去学点数学吧!
这两句我认为没有前后关系,CRUD累了,我会做个框架或代码工具来替代我做,这样我省心了,但是你又让我去学算法,我累不累啊?就象你和累了一天的搬运工说:累了吧?去学点数学吧!
楼上开始强词夺理了么??框架的作用不是依然是代替你做CRUD么,本质不变。我想说的是你每天都做这种项目,有没有一天想做一点具备一点难度的项目,这种难度不是研究新的框架,而是一种新的挑战,你致力于解决一个业务难题了。最后楼上说搬运工的事情,呵呵,简直就是可笑之极,我是从程序上面说的,你一定要说搬运工,要是搬运工都能做你做的事情,你觉得你很光彩??
大家想想为什么算法那么晦涩,大家一提到算法就头疼,因为算法更加抽象,它是人们解决问题的一个思路方法。而OO,不管怎样,大部分都是我们能够接触到的东西,虽然抽象一些,但是并不说那么晦涩。算法是与语言无关的,任何语言都可以实现算法,但是框架大部分是跟语言绑定的,不具备通用性,那个更加珍贵大家自己体会吧。
下面简单说一下我个人认为的计算机学习曲线:
1 编程语言API --功能
2 算法,数据结构,操作系统,编译原理等 --性能
3 框架,模式 --可重用
学习计算机跟个人的成长是类似的:遵循兴趣,曲折前进
初始关注的是如何实现,开发出来就是最大的激励 --重点在项目功能。
实现功能后,开始反思如何才能把性能提高 --即项目更好的实现方法
最后的兴趣点自然是如何找出不同项目间的共通的东西,提炼出共同的精髓--重用。
学习应遵循自然发展之道,兴趣点在不断发展中完成自然转移。
如果刚开始就过于关注模式和框架
入门者会失去兴趣,共鸣也不强烈。
模式,框架是老辈人的肺腑之言,经验精华
不过没有经过挫折历练的年轻人可能不想听,即使听了也不一定有感触,学不到精华。
有些路,即使是弯路也是必须要走的。
不过,"最终你会回来跟我一起唱这首歌的"---大话西游,唐三藏
非常正确,技术思想和程序员素质两者之间是不能脱离的,俗话说:屁股决定脑袋,在什么层次,就有什么想法,如下面两个帖子,都是因为没有真正掌握OO思想,从而对语言工具不习惯的例子,其实,如果要达到同样的软件设计质量或思想,无论什么工具只是途径,花费精力都差不多。:
真不知道有了C#.net,为什么还有人用基于java的应用程序了(j2ee,struts等) :
http://www.jdon.com/jivejdon/thread/31480.html
一流的企业做文化、做标准,二流的企业做品牌、做产品,三流的企业做项目。
那个更加需要软件需求变更大家可以自己看吧。
基础固然重要,而BanQ和zjlzjlzjl所说的基础是两种不同的概念,学Java技术当然要学J2se,J2se是Java所有一切技术的基础。从语言本身的角度来看,这种说法是对的,没有任何错误,zjlzjlzjl就是从这个角度出发去考虑问题的。而BanQ是站在软件开发的角度来看这个基础问题,他认为,要开发一个具有生命力的软件并不是掌握了所谓的基础(计算机原理、编译原理、数据结构等等)就能够开发出来的,重在强调于软件架构设计问题,而“新一代”软件架构都采用了许多优秀框架,如:struts、spring、Hibernate等。这些优秀框架都用到了许多设计模式,这些设计都是OO大师们多年来总结出的经验,设计模式让软件更具生命力,他可以让软件“健康”的成长 ,而设计模式是运用了OO思想,OO思想对于以前面向过程编程的程序员来说,必须要经历一种“蜕变”,因此他需要一定的时间。BanQ就认为,如果你现在是一个初学者,你就不应该再去学习面向过程的程序设计(如C语言),而是一开始就应该学习面向对象的程序设计(OOP),OOP本身就是符合人的一种思维方式。如果还是按照“传统”的学习方式去学习软件开发,就必然要经历一次从面向过程到面向对象的“蜕变”,我们完全没有必要经历这次“蜕变”,
直接从面向对象开始学习就好了。因此提出了这样一种观点:
我已经几年没有去翻j2se了,这不是说我对j2se滚瓜烂熟,而是几乎都记不得,我自己做的系统都是基于我自己的API工具和框架。
当然,不是说开发不需要j2se,需要时会通过google来查,但是击中j2se API的几率很小。
所以,我们可能要反思一个问题,我们过去包括你的思维中关于软件基础的定义是否有误区?是J2SE API是基础?还是模式设计是软件基础?传统教育和习惯都认为前者,而我认为是后者......这也可能是中国软件不能起飞的一个重要原因。
既然模式设计是基础,为什么象楼主等很多初学者觉得复杂,不认为是基础呢?
我个人认为这和先入为主有关,也就是说:如果你首先接受的是一种“畸形”误导性教育:学习数据库 API等这些死记硬背的东西,养成认为死记硬背的知识是基础的习惯逻辑和思维。
很多软件大师一再强调,OO面向对象思想其实不需要培训,是符合人类最自然的想法,小孩不需要学习,可以知道飞机是交通工具的一种,交通工具是飞机 火车 汽车的一个抽象概况,这些都是与生俱来的OO基础认识却被我们的畸形教育排斥了,让广大程序员反而走上与OO背道而驰的编程生涯……。
所以,J道试图通过社区形式“释真正OO自然之道”,拨解很多初学者心中迷雾,帮助他们找到真正的软件学习之道。
BanQ提出的看法似乎有些“走题”的迹象,首先,zjlzjlzjl提出的问题是学习Java技术的基础,而不是软件设计的基础。因此zjlzjlzjl认为应该多为初学者考虑,多讨论一些J2se的问题,而不是整天讨论这些初学者看不明白的问题。而BanQ就认为,J2SE这些东西不应该放在这里讨论,如果我们过多的讨论J2SE的问题,会使得其它读者认为掌握J2SE是最重要的,因而花了大量的时间和精力去学习J2SE,这样就会“误人子弟”。BanQ强调的是软件设计的基础,而不是语言或技术本身的基础。因此,他们俩的观点原说就越偏离主题。
软件分分析 设计 编程三个阶段,分析方法学习Evans DDD;设计方法学习GoF设计模式,本站都有专门讨论.
我学SSH等这些框架纯粹是个人兴趣爱好的使然,原来本科时就一直有强烈的兴趣从php/asp一路走来,直到java(非jsp),然后对狂热的喜欢java:)自然而然就走上了java web开发的道路。现在可以说算是入门的程度。面临实习时遇到困惑:然找份工作不是很难,但是感觉从事J2EE这个方向,工作也大多是用几个主流的开源框架做一些开发。这样只是用技术而不是研究技术,也无法体现出研究生跟专科毕业就从事类似开发有什么优势可言(目前来看,甚至是劣势)。java应该是这样的吗?我想应该是no。java门槛不是很高这是公认的现实,以前一很牛的学长听到我做java web开发时回复我说:怎么去做这个了,你怎么跟那些已经有两三年工作经验的人去比?说的偶战战兢兢。
同学中从事linux下c编程的显得平静的多,整天看协议,看算法,写代码。整天在思考中度过应该是幸福的。就目前的行情来说,似乎做java web基本就与算法无缘了。开发做完一个项目,没什么令人惊喜的算法,虽然有JUnit等令人眼花缭乱令人欣喜丰富的工具而让人体验到工程开发的乐趣,但是少了自己动脑思考的算法,总觉得少了点什么。
个人对如何利用框架实现应用不是特别感兴趣,更对struts,hibernate源代码感兴趣,但是目前谁能给提供一个这样的岗位来做类似的事情?Coolyu0916您说IBM,Microsoft,但是就目前我接触的来看,同学去IBM实习的大都是测试,就算是CRL组也是如此。Google招聘的大多是纯算法的实习生,这些职位属于清华,北大的牛人们。纯搞算法也确实太累了,最好的是算法跟应用开发结合起来。
乱说了这些,可能也根本没表达出自己的意思来,但这就是目前的状态,学习SSH困惑时的状态,找工作时困惑的状态----LOST
=============
另:其实没必要抱着说服别人的情绪来谈话题,各自表达,互相理解,观者各取所需最好
另:语言表述能力有限,说的不合理之处希望大家海涵,个人是怀一种崇敬的心态来请教的
寻找一条平滑的学习曲线 优于 从难从严
结合实践学以致用 优于 钻研理论知识和艰深技术
虽然我认为后者也有其价值,但是前者更有可能取得成功
前者可以称为“敏捷学习方法”,后者更像瀑布型
[该贴被daquan198163于2007年05月10日 13:50修改过]
过程和OO是水与火.中国对OO程序的教育应该以设计思想这个宏观上入手.这样初学者就更好的去领悟与实践!我也是从C过程语言过来的.确实有很大的束缚感,自从找到JDON后,我一直对JDON很是关注,并在此对BANQ对中国软件在OO方面的努力表示敬意!