论坛首页 海阔天空版 企业应用

回想过去几年软件业的荒唐事

浏览 673 次
该帖已经被评为隐藏帖
作者 正文
最后更新时间:2008-02-14
1、XP中的结对编程。XP编程中,有一些思想总结的很好,例如测试驱动,但又有极度的荒唐的就是结对编程。结对编程是我看到过的最荒唐最可笑的软件工程方法,两倍的投入,一半的产出,可谓事倍功半。以前看结对编程只是觉得荒唐可笑,后来看了李安的电影《断背山》,觉得以“断背”来形容结对编程最适合了,结对编程简直就是专门为“男同志”们度身定做的软件工程方法,你想一对“男同志”,每天手牵手背靠背进行“结对编程”,是多么“浪漫有趣”的事情。不过这只对“男同志”们的浪漫有趣,对工作本身一点也不有趣!
--------------

2、JDO投票闹剧(2004-2005)。一个通过黑客式静态AOP方式旁门左道实现的持久化技术JDO,竟然会被一些人追捧,这本身就是一个很荒唐的事情了。在JCP的投票中,JDO被否决了,这一点也不奇怪,奇怪的是投票结果出来之后的闹剧。一些人以“政治阴谋论”来说事,说JDO不被通过,是因为政治原因,而非技术原因,这个荒唐的理由竟然被社区的很多人相信了,一片声讨,JCP迫于压力,重新投票,通过了JDO相关的JSR。但是JDO并没有因此有一点点起色,一直沉沦至今。JDO通过静态AOP(enhance)的方式使得代码无法调试,就单这一点,就足以使JDO永远无法流行。

这件事情很明确表明两点:1)、不要相信一些技术作家的判断力;2)、普通的大众没有判断能力,会人云亦云。




JPA这个烂东西

竟然64个annotation,没有分类,放在同一个package下,同一个package(javax.persistance)还有其他java文件,共有88个java文件。不看内容本身,单从表面,都觉得这是混乱不堪的事情。这是那个猪头的杰作?glassfish上下载的源码中,这些java文件似乎都没有author,估计也不好意思把名字放出来见人吧!

------

觉得对象关系存储方面一直没有突破,也没有好的产品出来,其中一个原因,就是从没有过优秀的工程师投身过这个领域。关系数据库为什么能够一直坚守领地,成为绝大多数商业应用的基石,其中一个原因就是有过大量的精英投身于此,包括两个图灵奖获得者。

关系数据库,为了描述关系,创造一门SQL语言,将关系一些操作,例如投影(select)、选择(where)、分组(group by)等等,抽象得形象易懂,功能强大。对于数据的操作,SQL语言是最强大,也是最方便的,也是最易于使用的。一些非程序员的IT从业人员,非计算机专业的人员都能够熟练掌握SQL。

OO和Relational都是伟大的技术,从计算机最高荣誉奖可以看出这两个技术的伟大。OO的图灵奖获得者是三个,Relational的图灵奖获得者是两个。

面向对象技术自1967年simula引进依赖,所想披靡,93年-98年从C++开始流行,然后到Java,成为主流编程技术。Relational没有OO那么辉煌,但是在数据存储方面的地位固如磐石,长期占据绝对的地位。

曾经OO技术涉足于数据存储领域,但终究没有成功。面向对象数据库的变现总是差强人意,面向对象的方式操作数据,总是不如使用关系那么方便,那么灵活,那么易于使用,那么好的性能。于是人们在数据存储和处理方面,不在青睐面向对象技术,而是仍然使用关系方式,使用SQL语言,使用关系运算操作数据。面向对象数据库成了昙花一现的东西,并且可能永远都不会再流行了。

OO成了主流编程技术,Relational占据了绝对的数据存储地位,这两大技术需要交互,需要桥接,这需要OR-Mapping。Relational虽然好,但我们也要与时俱进,所以也需要OR-Mapping。

但是,做OR-Mapping时,不积极吸取relational方式对数据处理的灵活性、方便性、简单性,而只强调Relational和对象之间的的Mapping,试图以面向对象的方式操作数据,这是错误的方向。以前的EJB、现在Hibernate、JPA都犯了同样的错误,试图以更面向对象的方式操作数据,从而导致复杂混乱的模型,这也是JPA的现状吧。例如user.getGroup(),目前的ORM试图以纯OO的方式操作数据,所引起的LazyLoad、n+1等问题,使得事情变得复杂而且混乱不堪。

一些开发人员,去学习Hibernate,不学习SQL,有人提倡,只需要了解面向对象编程技术,不需要了解关系技术,亦属于本末倒置。需求人员都会用的SQL语言,对数据操作最方便最简单最强大的SQL语言,竟然成了令人生畏的纸老虎,可笑啊。

-------------

以下是过去的一些业界浮躁不理智:

1、面向对象数据库。曾被热衷而吹捧,面向对象数据库的变现总是差强人意,面向对象的方式操作数据,总是不如使用关系那么方便,那么灵活,那么易于使用,那么好的性能。于是人们在数据存储和处理方面,不在青睐面向对象技术,而是仍然使用关系方式,使用SQL语言,使用关系运算操作数据。面向对象数据库成了昙花一现的东西,并且可能永远都不会再流行了。


2、AOP。也是最近这几年流行的一个名词了。起了一个和OOP相似的名字,但是和伟大的OOP相比,它完全不算是什么。AOP只是一种很小很小的技巧而已,静态的AOP是黑客式的插入代码,会导致代码不可调试,动态的AOP能力有限,AOP最常被引用例子“日志AOP”是不合适,有用的日志通常是精心设计的,AOP方式的日志在生产环境中基本上是不可用。OO这么多年,这么为伟大,人们总是希望自己能做点什么和伟大的OO相比,于是命名为AOP,这是一个可笑的名字,前些年还有人谈论面向对象的未来是面向事实,也是同样的可笑。AOP有价值,但它是一种小技巧,和名字不般配。

--------------

目前在流行,但是可能是不理智的技术:

1、hibernate之类的ORM,试图以面向对象方式操作数据,和面向对象数据库一样,重蹈覆辙。
2、Ruby,一个小脚本语言,只是因为动态类型、mixin之类的功能,还没有被证明有生产力,有效益可用的脚本语言,就被媒体吹到天上去。Ruby有价值,但是最终结果会离大家的期待相差甚远。


转自http://www.cnblogs.com/jobs/
   
最后更新时间:2008-02-14
楼主真幽默
   
0 请登录后投票
最后更新时间:2008-02-14
今天好像不是愚人节吧?应该是情人节。
   
0 请登录后投票
最后更新时间:2008-02-14
一些道理好像也能说得通。。。
但是,除了这些我们该学什么?JDK或JVM吗?
   
0 请登录后投票
最后更新时间:2008-02-14
robbin 写道
楼主真幽默


为什么我看了想哭……
   
0 请登录后投票
最后更新时间:2008-02-14
第一点说的过了,
技术方面一些问题的负面评价基本赞同,
文章整体太负面了,观点太鲜明,有严重倾向的帖子,肯定要被评隐藏的。
   
0 请登录后投票
最后更新时间:2008-02-14
Godlikeme 写道
第一点说的过了,
技术方面一些问题的负面评价基本赞同,
文章整体太负面了,观点太鲜明,有严重倾向的帖子,肯定要被评隐藏的。


现在33个隐藏了,4个良好对冲。
真正隐藏还需要多少个隐藏?
隐藏的结果会不会造成太过和谐。
一下子想到了中石油。
   
0 请登录后投票
最后更新时间:2008-02-14
popi 写道
Godlikeme 写道
第一点说的过了,
技术方面一些问题的负面评价基本赞同,
文章整体太负面了,观点太鲜明,有严重倾向的帖子,肯定要被评隐藏的。


现在33个隐藏了,4个良好对冲。
真正隐藏还需要多少个隐藏?
隐藏的结果会不会造成太过和谐。
一下子想到了中石油。

没看出来为什么要隐藏
对或是错没有关系
主要的是否有思考在这段话中.
   
0 请登录后投票
最后更新时间:2008-02-14
放到IT 八卦里面吧 内容很符合阿。
   
0 请登录后投票
最后更新时间:2008-02-14
对SQL和AOP的看法有点赞同啊
   
0 请登录后投票
论坛首页 海阔天空版 企业应用

跳转论坛:
JavaEye推荐