锁定老帖子 主题:技术框架上的皮之不存,毛将焉附
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-28
downpour 写道 还是请楼主用一句话来概括一下你的中心思想,然后我们再进行讨论,否则又变成论战了。
俗话“兵来将挡,水来土掩” LZ的意思就是“兵来土掩,水来将挡是错的!” |
|
返回顶楼 | |
发表时间:2009-04-29
LZ所说的假设只因为他存在所以有框架的存在。
开源框架的存在是为了解决某一领域的问题,看你怎么去取舍? |
|
返回顶楼 | |
发表时间:2009-04-30
unsid 写道
starfeng 写道
说了个大众的道理, 却原来有这么多人不明白 -- 从很多人获至如宝的感觉可以看到.
但这种道理, 你明白了也没用. --- 借用downpour一句, "楼主到底想说明一个什么中心思想?实在没看出来。" 这个道理,和有因必有果没两样, 只不过倒过来变成, 任何结果都一定有其成因... 而问题的真正难点却在于, 果的因很难寻, 有些成因的背景很复杂, 再借一句fujohnwang的, "可是我看LZ好像自己都没搞清楚他自己陈述地背景对不对,何不合适... " 更看远一点点, 果的因, 却不一定再要来一个因"因"而果, 有时寻因是根本没有含义的. Javascript随rich client的需求再次崛起, 还去寻求其最初提出的成因, 以其成因对是否匹配现在的业务, 是没任何含义. 果是因"因"而起, 而果却又能成为另一个"因". 这种大众的理, 不拘泥于技术的, 多看点最基本的哲学(16世纪以前的), 很多. 多扯一句, 因技术而悟哲学, 无非平白的多几个看起来不错的自我领悟. 想抽象一点, 直接从哲学去看技术好了. 你看得远不代表你看得明白 我是主张了解事物根源的 你非用哲学描述,那我想用医学描述 当发生某场大规模瘟疫的时候 医学者总是分为两批 一批寻找治理办法,但是新办法总是受限,总是发现这些治疗只是短暂的遏制作用,甚至有时候有负面效果 另一批是苦苦寻找这场瘟疫的根源,是从老鼠?蝙蝠?还是某种植物. 当然二者都不能少,如果只有第一批人,或许感染的人永远只能维持几天的生命 如果只有第二种人,在它找到根治方法之前,人就已经死光了 根源帮助你了解问题的实质,如果就像你说的"经过时间推移,因已经变成了另一个因",那么根源至少是个毛线头,是个你用来找到新的"因"的线索,否则一切无从查起. 另外大概没多少人向你说得那么如获至宝吧
看了,都很有才! |
|
返回顶楼 | |
发表时间:2009-05-01
liujunsong 写道 技术框架上的皮之不存,毛将焉附
关于技术,语言上的是是非非,实在不是一两句话能够说清楚的事情. 前两天在和朋友的交流中,忽然想到这样一句话:皮之不存,毛将焉附,以此来形容很多技术的兴衰,真是非常贴切. 所有的技术,语言也好,框架也好,其实都有一个基本的假设,在讨论问题的时候,往往是在这个隐函的前提下来讨论才得出的结论,一旦经过认真考虑,把这个假设推翻了,那么整个技术的大厦也就轰然倒塌了. 以下举例说明. 譬如J2EE架构,在早期推出的时候,强调EJB这一组件的功能,其实隐含了一个假设:所有的应用都需要分布式支持,所以才提出EJB这样一个分布式的技术方案.后来在实践中终于发现,绝大部分应用都不真正需要分布式支持,于是乎EJB就变成了J2EE中著名的鸡肋产品.甚至基于这个观点,推除了J2EE without ejb这样的概念出来.此其例一. 譬如JSP技术,按其本名,Java Server Page,就是利用Java语言在后台服务器上,动态生成一个Page的意思.这里其实有两个隐含的假设,其一,页面是动态生成,而且是用Java动态生成;其二,页面是在服务器上生成,而不是在客户端生成.在技术发展的早期,这一概念确实风靡一时.但在目前的技术生态中,增加了Ajax和RIA的概念,在RIA的概念中,页面完全是可以由客户端来动态生成的,这种情况下,就把JSP存在的基本假设推翻了,长此下去,JSP技术的立足点就不复存在了. 再譬如Jsp的tag技术,它的基本假设是采用JSP技术来做页面展示,一旦上面第二条中谈到的假设 被推翻了,jsp的tag技术也就没有立足之地了. 譬如Hibernate技术,它的隐含假设,就是对于数据库的操作,必须通过对象方式来实现,不能直接编写SQL语句,一旦这一假设不存在了,Hibernate的用处也就不存在了. 譬如Spring技术,它的隐含假设,就是所有业务逻辑及数据处理等等,都集中在服务器上进行,而且这些组件还是经常要改变的,所以为了管理方便,给你搞一套IOC的玩艺儿来试图简化它. 但如果这些假设都不存在了,要Spring干啥用呢? 这样的例子简直举不胜举. 大家在疯狂的讨论技术的种种优势和缺点,但是在讨论这些问题之前,请先明确一下,所有这些讨论,它的假设是什么,它的前提是什么. 非常恭喜楼主,看到这一面,证明你已经成长了许多。做软件的人浮躁的非常多,我记得6年前,我在javaeye的时候看到许多人跟风痛骂EJB,热推Spring;痛骂CMP,热推Hibernate;痛骂Struts,热推WebWork;到后来看到痛骂RUP,热推XP;痛骂Java,热推Ruby等等。许许多多的人根本就没有想过,更加没有思考过他们之间的区别与定位。甚至到后来,更可笑的是一个软件架构师=Struts+Spring+Hibernate了,着实可悲。 这个世界上绝对没有万能的银弹,也不会有许多人研究推崇的废物,有的只有适合与不适合。就拿EJB说事,到今天,我相信到明天一样会有生命力,否则早在2.1的时候就该死了,被人痛骂的CMP也不会演化成JPA(到头来,Hibernate只是弱化成了JPA1.0的一个实现)。 一个优秀的软件设计师,一个优秀的软件架构师,是必须要看到这点,做到物尽其用,而不是盲目地跟风。 楼主看到了假设,看到了前提,更加还要看到它们适合的应用场景,彼此的优缺点。。。 |
|
返回顶楼 | |
发表时间:2009-05-01
有需求,才有解决方案,一系列的解决方案的精华成就一门技术;技术也会随着需求改变吧.我觉得把握变与不变才是真理.
|
|
返回顶楼 | |
发表时间:2009-05-01
最后修改:2009-05-01
凤舞凰扬 写道 到头来,Hibernate只是弱化成了JPA1.0的一个实现
Hibernate是兼容JPA 1.0,不是弱化。 |
|
返回顶楼 | |
发表时间:2009-05-03
最后修改:2009-05-03
对这个精华有点失望。
引用 在RIA的概念中,页面完全是可以由客户端来动态生成的,这种情况下,就把JSP存在的基本假设推翻了,长此下去,JSP技术的立足点就不复存在了.
那客户端生成UI的代码哪里生成的?我的理解,RIA增强的是客户端的表现能力,而架构并没变。如果有不同意见,欢迎指教。 引用 再譬如Jsp的tag技术,它的基本假设是采用JSP技术来做页面展示,一旦上面第二条中谈到的假设 被推翻了,jsp的tag技术也就没有立足之地了.
tag的目的1是为了分离UI和“java”代码,2是为了封装代码,实现程序员的UI和美工UI的职责分离。即使将来RIA了,还是要分离这个,即使没有JSP的tag,也会有FLEX的tag,来将程序员的UI增强到美工UI里,却不影响美工。 你hibernate和ejb那段我挺赞同,另外不同意你关于spring的看法,spring并没有强调一定要在服务器端,他强调的不过是一种解耦的思想,这种思想很多时候不是通过IOC来体现的。IOC是核心不是一切。 我们不用spring未必就不能用这种思想。 看技术,看前提,我再补充一点,看目的,并且从他的技术实现中学习手段。 unsid 写道 bs那些用了RoR,Groovy,Scala之后把java贬的一无是处的人
最近看grails源代码,了解grails的设计思路,并通过这个过程掌握使用groovy语言的技巧。很有收获:java程序员没必要妄自菲薄,grails这些东西,在技术上,还是用的java的技术,某些部位,使用了groovy来增强。 我很担心grails比ror要差,于是找ror的fans问和比较,伯仲之间,不过ror先入为主了。就能力上groovy语言已经不逊色ruby了。 grails也是有缺点的,这个东西继承自spring和hibernate,并且多数技术都是后者只是用groovy关键部位做了代码增强,因此,很多时候要有后者的技术积累,前者不过是提供了多数情况下的快速开发能力。 优点是:对ssh熟手来说,提供了ssh快速开发框架,多数情况下提高效率,少数情况下——回到ssh,并且将问题和groovy框架混淆。so,要深入了解grails————这都是学习成本(换取开发效率) —————————————————— 貌似javaeye最近精华的水准下降了。我建议是不是有一个“二级选举”: 不同的领域,比如java,或者RIA,或者别的什么,都有“领域专家”以及级别。 这个职称依靠群众投票和个人发帖被推率等综合计算得出。 不同级别的专家,对不同领域的帖子评分,按照对应领域级别估定评分比重。 现在貌似,领域没区分。 |
|
返回顶楼 | |
发表时间:2009-05-03
看了以上这么多回复,感觉都是从同一个人的角度在看问题,而现实上往往同一个问题的处理者都是不同的角色,这就导致了不同人看问题的不同角度和不同方法了。
领域和实现是不同的东西,往往做设计的是一个人,而实现的又是另外一个人。这就不同保证实现的人能够理解设计人的意图了,或者实现者又有自己的意图,这就导致了冲突的存在。 所以,同一个问题,同一个框架,从不同的使用者角度上,都有不同的意义。高手可能认为解决方案最重要(不是方法),而一般人则认为实现方法最重要,这就从认识层面上把人给分别开来,所以有不同的理解,是很正常的。 我也很赞同LZ的观点,不管是从哪方面来看,而且软件开发并不是从哪一个人就能决定所有的开发方面的。同一个问题,不同人总有不同的解决方案,但前提都是为解决某一类问题而出现的。 没有能够解决所有问题的银弹,所以不可能连问题的假设都没有。 |
|
返回顶楼 | |
发表时间:2009-05-07
icewubin 写道 凤舞凰扬 写道 到头来,Hibernate只是弱化成了JPA1.0的一个实现
Hibernate是兼容JPA 1.0,不是弱化。 hibernate当然还存在,可是未来呢?hibernate只是一个开源产品,在商业公司几乎不会被使用,因为没有任何商业支持。 如果你是一个JEE的系统设计师或架构师,你应该关注的是持久化的行为而不是具体,这就是JPA的空间。JPA作为JEE容器的一部分,任何一个JEE的容器都会提供实现,你丝毫不要去关心它来自于何种的实现,hibernate也好,toplink也好。 到了JPA2.0,完全的参考实现也已经是EclipseLink(原Toplink)了,hibernate是否支持,也不确定(不过Jboss是估计要跟进的)。 对于一个业务系统的设计师来说,hibernate与否还有太多的意义么? |
|
返回顶楼 | |
发表时间:2009-05-22
一切以市场为导向..
事物的存在 在于 它拥有自身的生存空间 优胜劣汰 物竞天择 大自然的生存法则而已. 生物如此 技术亦如此. |
|
返回顶楼 | |