自动编程体系设想

自动编程体系设想

编程的演化

编程语言的发展


随着语言的发展,编写的代码将越来越精简,而且领域化(不同领域用不同的编程语言,以达到开发效率和程序性能的最优化)。

自动编程的需求

在各种设计框架、基础库日益完善的情况下,上层应用中的编程基本上就是找API,构建一个调用逻辑,然后反复的开发自测试。下层框架/函数库开发一般都基于开源代码不断优化,同样反复地自测试。

在软件开发中,编程这一环节事实上越来越成为简单重复的劳动。有重复就有自动化的欲望,也因此有了自动编程的思想。

自动编程思想

自动编程,指的是根据测试用例自动生成符合测试用例的程序。简而言之,将数据变成程序。
与代码生成器(模板驱动开发)相比,自动编程强调由预期结果生成程序逻辑,而不仅仅是由逻辑生成程序代码。

如此框架下,在一般的软件开发中,不需要资深程序员/架构师的参与,他们从事平台性的工作,开发与测试不分,有测试用例就会生成代码。

开发就是测试

有了测试用例自动转化成程序的机制,开发人员的主要工作就是搭建自动编程环境,基于对需求的理解编写测试用例,并且对自动生成的代码进行测试。这个工作事实上就是现在测试人员的工作。原来软件开发流程中的测试环节已经没有存在价值。
没有测试环节并不意味着产品质量得不到保障,事实上,测试环节是完全被开发覆盖了,由于程序自动化生成,避免了人写代码出低级错误的可能,产品质量更有保障。

数据就是程序

在能够根据用例表生成代码的情况下,完善的测试用例数据即等同于程序。所有的需求变更反映到用例数据的更新。
一个程序好不好用,一方面在于其需求设计是否合理,测试用例是否设计完备;另一方面,在于构建程序的环境是否有足够丰富的代码源(早期来源于程序员的编写,后期主要是自动生成的有效代码段),是否有足够的计算能力。
总而言之,程序来源于数据,好坏取决于数据量和数据处理能力。

用户也是开发

程序开发者可以把测试用例数据的编写规范开放,使用户在使用的过程中自行输入新的测试用例数据,传到开发者的服务端或直接本地生成更加优秀的程序。

时间: 2024-09-28 17:48:07

自动编程体系设想的相关文章

idea 类里面引入别的对象,多了会自动编程.*

问题描述 idea 类里面引入别的对象,多了会自动编程.* 我引入 同一个包下面的几个对象,然后就会自动 变成import com.cc.test.* 请问怎么设置 可以取消 这个 自动变成.*的功能 解决方案 在线等啊,困扰了几天了,网上一直没有看到类似的问题.主要是这里的SVN 代码审查 有点严 解决方案二: idea自动生成serialVersionUID

自动编程是不可能的 我为什么不在乎人工智能

有人听说我想创业,给我提出了一些"忽悠"的办法.他们说,既然你是程序语言专家,而现在人工智能(AI)又非常热,那你其实可以搞一个"自动编程系统",号称可以自动生成程序,取代程序员的工作,节省许许多多的人力支出,这样就可以趁着"AI 热"拉到投资. 有人甚至把名字都给我想好了,叫"深度程序员"(DeepCoder = Deep Learning + Coder).口号是:"有了 DeepCoder,不用 Top Cod

Google自动编程框架AutoML入门指南

本文讲的是Google自动编程框架AutoML入门指南, 前言 本篇是和Kabuto_hui(ISN国家重点实验室成员)合作修改生成的,感谢Kabuto_hui. 导读 Google在AI First的战略下,陆续发布AI相关的产品,技术.据最新的报道:Google AutoML 系统自主编写机器学习代码,其效率在某种程度上竟然超过了专业的研发工程师.AutoML的目标并不是要将人类从开发过程中剥离出去,也不是要开发全新的人工智能,而是让人工智能继续维持某种速度来改变世界.笔者认为,机器编程即将

【AI系统首次实现真正自主编程】利用遗传算法,完爆初级程序员

本文讲的是利用遗传算法,完爆初级程序员,让AI自动编程一直是计算机科学家的梦想.目前这个方面的成果还非常有限,比如让AI自动补完编程语言,或者执行简单的加法程序.今天我们要介绍的这项工作,号称是第一个能够全自动生成完整软件程序的机器学习系统"AI Programmer". 研究人员表示,他们用这个系统证明了长久以来的假设,那就是功能完备的程序确实能够被自动生成.具体到这项工作,AI Programmer利用机器学习中的遗传算法,模拟复杂的指令.虽然现在AI Programmer生成的程

转贴:MSDN访谈录C#编程之四

编程 ROBERT HESS: 当作一个标准的For循环? JEFFREY RICHTER:对,当作一个标准的For循环.因此有时到了最后,它所做工作比我当初想象的还要多.使用foreach是相当常见的,有了它实在是很爽. ROBERT HESS:我猜您本来也应当在那里放置一个计数器,不过这会完全使foreach不起作用. JEFFREY RICHTER: 是的,很正确. ROBERT HESS:那么,您认为C#还另外具有什么样很酷特性,以让观众说,好,这就是我要选的语言? JEFFREY RI

多线程编程中的本质问题

在编写多线程程序的时候我们经常需要判断临界条件,如对象池中的可用数,某一个对象是否可用等状态.当我们这么做的时候其实就已经错了,为什么这么说因为在我们的潜意识里一直在使用绝对时间点来判定多线程程序.因为我们习惯性的用锁然后判定当前时间点的临界条件状态并作出相应处理.这样做当然可以但是在理念上错了,锁是为了同步资源用的而不是临界条件(当然你们做也没关系不过我向往无锁并发).那我们不依赖绝对时间点还能依赖什么呢?那就是事件,不过这个event可不是.net里的那个关键字.这是个逻辑上的概念.所谓多线

PaperWeekly 第43期 | 教机器学习编程

作者丨赵越 学校丨北卡罗莱纳州立大学博士生 研究方向丨编译器,程序语言 随着深度学习的发展,人工智能迎来了新一轮的热潮.在图像处理和自然语言处理方面,深度学习已经展现出强大的能力,成为了这些领域的主流方法.与此同时,深度学习也在编程领域开始得到应用.毕竟广义上,编程本身就是人工智能的一部分,机器如果可以学会自动编写程序,那么人工智能岂不是可以实现自举了?  在最近的新闻报道中,大家也会时不时看到一些报道说某个研究可以实现自动编程,甚至任务在不远的将来机器会代替代程序员的工作.实际情况是什么样的呢

mschart坐标为自动后台如何获取具体上下标数值

问题描述 mschart坐标为自动编程需要获取具体上下标数值. 解决方案 解决方案二:什么上下标数值?解决方案三:mschart坐标为自动,已经生成图片了.其他地方想用到现在实际坐标最大值,最小值.

QT分析之网络编程(一)

首先对Windows下的网络编程总结一下: 如果是服务器,其WinSDK调用分别为: WSAStartup() -> socket() -> htons() / htonl() -> bind() -> listen() -> accept() -> recv() / send() -> closesocket() -> WSACleanup() 如果是客户端程序,其调用序列为: WSAStartup() -> socket() -> htons