软件代码自动化生成工具我们该不该用!

http://www.softfactory.cn  软工厂 软件代码自动化生成工具

从目前的情况来看,软件开发的速度缓慢、代价高昂而又极易出错,常常会生产出存在大量缺陷的产品,在可用性、可靠性、性能、安全以及其他服务质量方面造成严重的问题。

根据 Standish Group [Sta94] 的统计,美国公司每年投资约 175,000 个软件开发项目,投资额约为 2,500 亿美元。这些项目中只有 16%能够在预算内按计划完成。另有 31%的项目主要由于质量问题而被取消,经济损失约为 810 亿美元。另外 53%的项目平均超出预算 189%,经济损失约为 590 亿美元。完成的项目平均只实现了原来规划的功能的 42%。

这些数字客观地印证了我们根据经验所做出的判断,那就是软件开发是一项劳动密集型的产业,它创造每一美元的价值所消耗的人力资本超过了我们对于一个现代化行业的期望值。

杰出开发人员比蹩脚开发人员的工作效率高一千倍,但蹩脚开发人员的数量也几乎是杰出开发人员的一千倍

一切自动化是人类的一个梦想,人们为了实现这个梦想不断努力。人们利用计算机软件与硬件实现办公自动化、管理自动化的同时,也在考虑程序代码的自动生成。 
  在软件工程发展过程中,计算机科学家为了降低软件开发得强度,缩短开发周期,减少代码的重复书写,从而减轻程序员的编程负担,一直以来都致力于代码自动生成方面的研究。Lex/Yacc是最早用于自动化编写编译程序的工具。随着现代化信息环境日趋复杂,各种应用软件的开发难度随之加大,这需要更有技巧,更有方法地从事软件开发,开发团队之间也必须更无障碍地沟通,否则极可能无法在有限的开发时间中完成任务。由于时间上的压力,一般人只注重程序的编写速度,却忽略其完成后的实用性与维护性,加上大型程序多人共同参与开发,每个人都有各自的程序风格,容易造成严重的差异性,随着系统规模越来越大,这将造成系统完成后在测试及维护上沉重的负担,代码自动生成技术更显出了其显著的优越性。尽管这些应用没有代码生成工具也能开发完成,但利用代码生成技术可以大大加速软件的开发进度,提高软件的质量。 

对软件代码自动化生成工具的看法:

(1):提高了开发效率的同时也要提高代码的优化,别弄的一个简单的运算就生成一大堆的代码。

(2):代码自动生成主要是减少重复代码的劳动,然后把集中精力放在代码优化上面,代码优化是见仁见智的事情。

(3):虽然减少了重复代码的手工劳作,但是如果再去花精力代码优化是否就得不偿失呢?
也许你去修改一个别人的程序花费的时间精力可能要比你重新写一个程序多,那自动生成代码的意义又何在呢?所以我个人不太认同自动生成代码!

(4):如果自动生成代码,那么还是生成代码的主体结构吧!

(5):代码自动生成
是要根据具体项目来设计的才有实际意义的
如果只是单纯的简化写个循环之类的BEGIN END
那是没多少用的。只会把现在发展的程序员搞坏

但相对的,如果是具体设计好某个公司的底层模块。
特别是核心类  
那么其他要继承这个类,所需要必写的东西那么就自动生成
这样才是有真正使用意义的。

举个简单的例子就是:
某个工程的整体架构,信息传送等流程都已经定好。
然后编写一个数据库程序。把对应的方法,接口等写上,并且有对应的解说
然后按一下按钮,很多代码就自动生成提供复制。并且会把说明部分作为注释
那么代码编写工作就可以根据这些具体的注释来编制了。

(6):容易让人产生懒惰!

(7):通常自动化高,灵活性会差些.
提高效率,但没有太多考虑个性.
当做一件事社会必要时间缩小,就是不值钱的时候.

 

8):社会必要时间,是按整个社会对于生产出这个东西的生产必要时间.
如果单单只有你高于这个必要生产时间一倍,那你赚的钱也比社会其他同类产业高一倍利润.
45楼的话是绝对理解偏向了.
只有不断寻求缩短社会必要生产时间,才是钱的来源.

自动化高,并不一定灵活性就差.特别编程
定义接口定义得好.这个不仅是灵活性好,扩展性好,实现代码也会好.

程序不像艺术,艺术是要按各人个性,而非统筹.
程序是绝对统筹比个性来得重要.
程序面向个性,带来的是局部的速度,总体合起每个细节,极有可能效率会更低.
相反,面向统筹的程序,这个问题是绝对不会存在的.

原文地址:https://www.cnblogs.com/softfactory/p/2830696.html