to beepbug
快奔3的人,不知道算不算年轻啊..

1)数据库是用来表达数据的,而不是用来表达整个应用系统的。应用系统包括数据和代码。
2)对于处理数据的应用来说,数据是中心,围绕着数据做开发。因此,在第一层面,必须以数据库为中心。第二层面,该是以应用架构为中心(是传统C/S模式,还是两层B/S,还是三层B/S,还是分布式,还是P2P等等)。在第三层面,也就是编码时,才有可能以OO为中心。
3)我没提倡SP。有了OO,当然不必SP了。但是,第一,不要把OO看得太神圣,OO才起步,现在的OO与现实世界还有很大差别,今后将有许多重大改变;其次,对别人的SP,我们也必须容忍。
4)弄清楚“中国中小型软件企业,到底有多少在搞OO的?”,有意义吗?我们个人也没能力做完成这么庞大的工程。不过,我可以告诉你,我认识许多用OO开发的自由职业者。自由职业者都用OO,哪还有必要去怀疑中小企业嘛?我举例的那个浙大生,他从大二起赚钱,除在学校实验室做研究外,还在几个城市搞开发。据他自己说,即使搞开发,也全是OO。看他随时根据客户需求变化修改代码,可以判知,首先,他的数据结构设计十分合理,其次,OO得相当不错。应聘金蝶时,深圳技术总管专程飞来面试。后来他改去上交大读研,金蝶老总几次发邮件给他,表示金蝶永远欢迎他。说明他的OO是切合实际的,不是空头理论。他算过,本科三年,平均将近9000/月,硕士生三年,平均16000/月。也说明OO并没有妨害他挣钱。
5)说点实际的。也不是到处可以用OO的。譬如在工控领域,前端机代码的编写,就没法OO,也不宜OO。驱动程序编写也不宜OO。特殊场合,连SP都有问题。譬如,编写效率要求极高的代码时,有人会先写全C码,调通后,再在调试器里用汇编码替换掉速度敏感部分。像这种代码,根本无结构可言。OO是个好东西,但它不是一切。

同意beepbug的看法。采用什么技术,首要考虑不是那个技术好,而是你究竟要做什么,需求是什么。抛开需求纯谈技术,没有任何意义。

beepbug 的观点我两三年以前就谈到过,很可惜,很多人都认为应该OO主导开发,其实需求才是主导开发的。

我再说一个例子,这个例子大家都知道,我们奥运会的售票,当时系统设计为百万次的访问量,结果是什么样子??我不说也知道,没两个小时,系统挂了。怎么办,增加服务器,还是扩大集群数量??答案是改成抽签,问题迎刃而解。

所以需求才是主导开发的唯一标准。

楼上2位说话的位置站的太高,观点太过抽象..

需求主导开发.. 从这个高度来看,大部分人都会肯定这是毫无疑问是正确的.

我们把范围缩小点吧, 目前中国有一大部分软件企业开发信息管理系统,因为中国很多政府部门 企业需要信息管理系统提升管理效率.开发信息管理系统使用很多技术,如果使用java那有很多开发方法. OO和SP就是其中两种.到底是走OO的路,还是SP路呢? 这两条路都能到达目的地.那到底那条路更好走呢?......

至少目前我觉得,在这种情况决定走那条路,不是需求定,而且实际的环境因素确定.实际的环境因素非常复杂,比如公司领导思想、市场策略、人员技术因素等等很多.

答案是根据公司的积累而来。如果公司在sp积累了大量的经验,在项目管理上成熟稳定,为什么一定要舍弃sp而就oo那??那如果本身公司OO方面就颇有建树,项目就一定按照OO方式进行。如果是新的企业,没有积累,那么取决于开发项目的成熟情况,如果开发人员都适应SP则应当使用SP,反之亦然。

>答案是根据公司的积累而来。如果公司在sp积累了大量的经验,在项目管理上成熟稳定,为什么一定要舍弃sp而就OO那??那如果本身公司OO方面就颇有建树,项目就一定按照OO方式进行。如果是新的企业,没有积累,那么取决于开发项目的成熟情况,如果开发人员都适应SP则应当使用SP,反之亦然。

我觉得应该是这样比较符合实际情况,新东西必然带来风险,就象在项目开发中引入新技术一样,都是有风险的。还是大家熟悉方法的比较稳妥、比较有信心。
有时候是知道新东西好,但还是会选择保守的好一些。


从企业的角度控制风险是第一要务,要不然虽然东西很新,但是一旦出了问题往往结果就是倒闭。所以很多新技术往往是小公司研究,大公司看到前景后收购。

>>其实也许还有一个原因,就是很多人都不想去学习新的东西,自己都做了很多年的东西,也有经验,也有很多积累,为什么学个新的东西,还得不断的去尝试,去实践,而公司的项目不可能实践的,只能采用大家都熟悉的方式,不然实践失败了,项目失败了,谁负责。

这个我想在很多做大型软件,如:电信、电力、银行、物流等企业里是最常见的,我们公司我想是可以当个例子!公司的决策层基本都是从面向数据库编程过来的,特别是VB->delphi—> C#,他们很多拥有行业的背景经验好几年了。然后现在做类似的项目,采用的是java,他们一样用以前的方式来做,在非常熟悉业务的情况下把数据设计好了,然后交付给开发人员,开始画界面原型,然后开发业务。有时在想这java到底用来做什么用的呢?虽然他们在口头上一直声称:我们要会用面向对象;但是又是怎么表现的呢?我以前一直都在抱怨,现在心态好多了,接受吧!

其实只要是封装到class里就可以较面向对象。区别在于如何决定怎么封装。是先设计数据库,再设计类和关系。还是用DDD,最后确定数据库。
你们公司的做法可以继承原来的经验,毕竟单纯从语言的基本功能看,C和Java差不多。这样可以比较容易的转到Java。风险和成本都相对较小。以后积累多了,再进一步加强OO。
公司做事风险控制很重要。再好的新技术,初始阶段风险和成本都会很高的。
而且用Java可以获得跨平台的好处。

>>>OO和SP就是其中两种.到底是走OO的路,还是SP路呢? 这两条路都能到达目的地.那到底那条路更好走呢?......
如果你们公司用的是Java,那OO是无疑的。无非是OO得好一点,或OO得差一点罢了。
只有使用非OO语言的,才可能是SP。
有的甚至连SP都没法做到。
可以去看看最近的语言排行榜,恐龙级的语言还占据着高位:COBOL(21位)、LISP(23)、FoxPro(24)、Ada(25)、FORTRAN(26)、Prolog(30)、Smalltalk(43)。这些可是在SP之前的老家伙。

至于使用面向对象还是面向数据库要根据实际情况,能解决问题就OK,世上不存在无价值的东西