分享
 
 
 

也说计算机自动编程

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在csdn上见到一篇文章,说的是计算机自动编程,原文链接为:

http://www.csdn.net/develop/Read_Article.asp?Id=27403

觉得有些意思,也来说说计算机自动编程。

首先,把程序员解脱出来,让计算机实现自动编程的想法,是很有意义的,也不完全是天方夜谈。据我所知,可操作的“自动编程”的概念,作为遗传程序设计GP的目标,已经在演化计算(智能计算的一种)中提出了;而且,在一些相对简单而却实用的领域,已经可以有很好的实践。如我们系的老师康立山教授所举的例子,他取三峡大坝岩石的数据,曾演化设计出一段程序,对其问题获得很好的模型。

如文中所言,或许未来真可以使程序员的身份转变,他们不再是“程序员”,而不得不成为“辅助程序员”;计算机可以自动编程,所以对于一般问题,只需购买一些自动编程组件(原文如此称呼之),让辅助程序员操作一定的接口就可以由计算机完成编程工作,而且比人做的更好。

然而,科学的“自动编程”概念,还处于刚刚提出的阶段,事实上目前所做的工作,还是在相对简单的问题领域上进行的。所依据的原理,所达到的成果,和我们的目标还有很大差距。如原文所言的大规模工程上的使用,还差之千里万里。

为什么如此呢?原文中并没有深入的谈。而说到如何实现“自动编程”,原文只是说需要人工智能的发展,并利用海量网络信息。但是,其中颇为艰辛呢。

我就从高级语言C++的编程谈起。

最简单的问题领域,我们取整数的加法、减法运算。比如下面的问题:

问题. 使用C++语言,编写程序模块完成对两个整数a与b求和。

程序员对其编程,就会完成如下的一个程序:

//compute the sum of a and b

int Sum(const int a,const int b)

{

return a+b;

}

程序员完成这个编程工作,一般思考步骤为:

1,对于该问题,所用到的数据结构是整型数,C++语言提供数据类型int。两个整数为a和b。

2,对于该问题,所用到的算法为整数相加求和,C++语言提供‘+’运算操作符。

3,对于该问题,程序员对模块进行设计,模块名为Sum,输入参数为const int a和const int b,返回类型为整型数。

显然,其中1与2是程序的核心,是传统意义上的程序定义。3是程序的结构,我觉得程序的结构也是非常重要的,尤其对于近年来,计算机软件的复杂度越来越高,注意设计良好的程序结构,是必然的要求。如对于本问题,使用“函数”设计模块当然是可以的,然而使用C++类来封装也未尝不可。

所以,对于计算机程序,目前我理解的概念是:

计算机程序 = 数据结构 + 算法 + 程序结构。

这个简单的问题,由计算机自动编程来实现是否能完成?

事实上,目前演化计算的“自动编程”,是启发于“计算机程序 = 数据结构 + 算法”的思想的。我们来看一看它对上述问题的解决。

对于该问题,建立计算机自动编程的基础——两个集合:

data = { a,b },op = { + }.

计算机自动编程所得到的程序,为data与op的一种关系,我们用字符串表示。如

s1 = aa+ ;// 即 s1 = a + a ;

现在对于一个字符串s,计算机便可以进行自动设计:

s = a ; // 尚未成功

s = aa; // 尚未成功

s = aa+; // 不合要求的程序,舍弃

s = a; // 尚未成功

s = a+; // 不合法的程序,舍弃

s = a; // 尚未成功

s = ab; // 尚未成功

s = ab+; // 程序成功,退出

换言之,计算机自动编程的程序,这里定义为

计算机程序 = data * op .

当然,获得一个合要求的计算机程序,不是一个枚举的过程。演化计算的方案是使用随机策略、通过演化获得好的程序。

data和op两集合,是自动编程的基础,可相对于问题的领域与复杂度而设计(好比程序员所需要的计算机语言复杂程度也不同一般)。比如,上述的data再加入两个整型变量x,y,就完全可以设计出和Sum模块功能相等的程序。如果data和op扩充如下:

data = { a0,a1,a2,...an,n,x },op = { +,-,* }.

其中x是实型变量,那么就可以由计算机自动编程来设计多项式逼近的程序。

而且,逻辑操作如if,else,还有循环操作,都可以加入到op集合中。那么,自动编程可解决的问题领域会更大。

然而,自动编程仍只是刚刚开始。说它要代替程序员的工作,还为时尚早。

首先,计算机自动编程是基于集合data和op的,这两个集合可比于计算机自动编程的语言,但这个语言还非常的不完善。对于个别的问题可以设计一个可行的语言,但大部分问题还没有办法找到合适的语言,更不用说设计出一个较为普遍的语言。而程序员所使用的计算机语言,则已到了相当完善的程度。而OO语言出现后,程序员可以设计自己的数据类型,计算机的自动编程目前是无法做到这一点的。

比如对于上面的问题,程序员可以设计一个数据类型对整数进行封装(我们不谈它对本问题的实际意义,很显然我们重视它的抽象意义):

//define new type :Integer

class Integer {

//...

public:

//...

};

由此,程序员对于现实世界进行建模的时候,表达工具(计算机语言)是相当得力的。然而计算机自动编程的data与op,对工程计算与简单逻辑判断,可以很好的建立模型,但在深度与广度上却远远落后于程序员。

其次,我觉得计算机程序的概念,必须要加入“程序结构”的因素;程序结构的因素,对于大规模工程应用具有重要的意义,而且是程序员智慧体现的精彩处。一个复杂问题的程序,糟糕的结构,往往是致命的。比如一个全局的指针对象,就会有太多的陷阱,能让设计不好的系统彻底瘫痪。然而好的结构则不然。另外,程序员充分利用“程序结构”上的经验,总结出好的设计模式,开发出性能良好的类库、程序框架,使得程序设计的继续得以良性循环。

但目前自动编程尚没有规划这方面的问题。一开始的定义,就是基于data与op的,而data*op的过程,目前由演化计算来做,就如处于汇编语言程序设计时期的程序员,可考虑的程序结构是很少的,只能拼命般的用聪明的脑袋对付问题的复杂度。

最后,当然是目前计算机的制约。就目前自动编程的主要问题,还是难以处理的复杂度。计算机本身性能的进一步提高,好的算法进一步开发,会使得自动编程进一步发展。但问题并非孤立的,解决问题的复杂度,当然也得考虑自动编程自身理论的发展,如突破上述的界限等。

原文中还提到利用网络信息资源,与计算机的学习能力,当然,这些步骤都是必然的。自动编程肯定要面临这些学科资源。但这涉及的问题更多。集中的说,网络和分布式系统,与人工智能,都要解决大量的问题,才可在工程上更充分进入自动编程的范围。目前来看,还是智能计算与自动编程关系最为紧密,也是主要的推动学科。

这里所说的,都是从软件的角度。原文另外提到跨系统(比如windows与UNIX)的自动编程,我想这个问题程序员更为头痛些。不妨更宽泛的说,由于偶然或必然的原因,计算机体系结构目前是多种多样的,自然程序员的编程都是基于某种体系结构的计算机。一个CISC机器的程序,在RISC机器上运行肯定有问题;那么在前者上编程(无论是程序员还是自动编程),如何无缝移植到后者上去,我想这就不仅是程序设计的问题了。

原文中提出“辅助程序员”的说法,我觉得很有意思。既然编程的工作,下放给计算机,那么辅助程序员就是要管理那些进行“自动编程”的计算机了,这有些项目经理的味道了。

很显然程序员在程序设计的时候,受软件工程上的一些规律制约。而这个过程的管理,是十分复杂的;大部分项目经理都有经验的。那么,如果多个计算机在“协同自动编程”的时候,又会是个什么样子?其中有那些规律可探讨?我想虽然计算机可以自动编程了,程序员从编程的工作中解脱了;但行业对人的要求并没有降低是吗?

或许应该说,时代在发展,行业对于人的要求,永远都是在提高的。

除非,人工智能彻底的成熟,机器和人具有一样的行为方式了。人或许可以休闲了。

那么,“辅助程序员”们,你们怕不怕?这个问题就不仅仅是行业内部问题了,计算机也要薪水的话,整个社会就会关注它了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有