CN110287001A - 程序合成虚拟机 - Google Patents
程序合成虚拟机 Download PDFInfo
- Publication number
- CN110287001A CN110287001A CN201910527685.8A CN201910527685A CN110287001A CN 110287001 A CN110287001 A CN 110287001A CN 201910527685 A CN201910527685 A CN 201910527685A CN 110287001 A CN110287001 A CN 110287001A
- Authority
- CN
- China
- Prior art keywords
- program
- storage
- virtual machine
- synthesis
- parameter storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种程序合成虚拟机的逻辑设计方案,具体包括程序存储器、参数存储器、控制器、模型接口等程序合成虚拟机所涉及的重要部件的设计;同时给出了一种基于程序合成虚拟机的程序自动合成的解决方案。以解决目前程序自动合成过程中通用性、可扩展性、可评价性差等诸多问题。
Description
◆ 技术领域
本发明涉及计算机程序自动设计领域,具体涉及程序合成虚拟机逻辑结构设计和基于程序合成虚拟机的程序自动合成解决方案。
◆ 背景技术
程序自动合成是一个及其复杂的过程,也是人工智能领域重要的研究方向。其本质是对于给定的<输入,输出>样本,正确合成将“输入”转化成“输出”的“程序”。当前,程序合成都基于不同的领域语言(Domain-specific Languages,DSL),程序结构简单,且有严格的限定条件,通用性差,没有开放和可扩展的解决方案和运行平台来支持程序自动合成中的各项操作,严重制约了这一领域研究与应用的进一步发展。
本发明给出了一种基于程序合成虚拟机的程序自动合成解决方案,设计了一个基于高级程序设计语言、与具体领域无关、通用、开放、可扩展程序合成平台,即程序合成虚拟机。通过程序合成虚拟机,实现程序对象的“执行”、“修改”、“评估”等处理和操作,解决目前程序合成结果通用性、可扩展性、可评价性差等诸多问题。
◆ 发明内容
本发明给出了程序合成虚拟机的逻辑设计方案,具体包括:程序存储器、参数存储器、控制器、模型接口等程序合成虚拟机所涉及的重要部件的设计方案;
在此基础上,给出了基于程序合成虚拟机的程序自动合成解决方案;
◆ 本发明的具体步骤如下:
第1步)设计程序合成虚拟机的逻辑结构,给出程序合成虚拟机各重要部分,如程序存储器、数据存储器、控制器、模型接口等的设计方案。
第2步)给出基于程序合成虚拟机的程序自动合成解决方案。
◆ 本发明的有益效果:
给出一个程序合成虚拟机的逻辑结构设计方案和程序自动合成的解决方案,为程序自动合成提供通用、统一的运行平台,解决当前程序合成结果通用性差、无法统一评价等问题。
◆ 附图说明
图1是程序合成虚拟机结构示意图。
图2 是基于程序合成虚拟机的程序自动合成方案示意图。
◆ 具体实施方式
1)程序合成虚拟机的逻辑结构和主要组件设计
程序合成虚拟机由程序存储器、数据存储器、控制器、程序转换器、程序执行器、模型接口、几个部分构成,具体设计方案如下(附图1)所示:
程序存储器
程序存储器是程序合成虚拟机中的程序存储装置,具体为一顺序可读写存贮结构,每个单元具有一个地址,每一指令占用一个存储单元,所有指令都具有如下形式:p i+1 =f k (p i ),其中,f x 为有限的且具有明确定义的基函数,p i ,p i 为f x 的输入、输出参数,p i ,p i+1 可以是一元的也可以是多元的. 对于基本操作符,可以通过适当的转换来实现格式的统一,如加法操作“+”,与其对应的函数格式为p j =add(p k ),其中,p k 为二元参数。从程序存储器的初始单元到终止单元的一次扫描,即可得到一个程序序列。
② 参数存储器
参数存储器是程序合成虚拟机中中间结果的存储装置,具体为可读写的表格存贮结构,其行数rnum和列数cnum视具体情况而定。参数存储器用于存放程序执行过程中产生的中间结果,每个单元可以通过其行列坐标进行定位。假设样本集D={<input 1 ,output 1 >,…,< input n ,output n >},初始时刻,从D中选择rnum个样本的输入{input 1 * ,...,input rnum * },加载到参数存储器的第一列,存储器的每一行对应一个样本,参数存储器中的参数被程序存储器中的相应指令调用,新产生的结果不断保存在参数存储器列单元中,同列不同行的存储单元中,存放的是同一函数不同输入参数(同列,不同行)的输出结果。
③ 程序转换器
程序转换器为程序合成虚拟机中程序的转换装置,具体实现将程序存储器中的程序序列转换成对应的高级语言源程序,由于程序存贮器中存放的是函数式程序指令序列(参见①程序存储器设计),因此,每个指令可对应一段确定的程序代码,程序存贮器中的指令序列最终可转换成某种语言的源程序。对程序转换器进行扩充即可实现对不同语言的支持。
④ 程序执行器
程序执行器是程序合成虚拟中的程序执行装置,程序执行器接收程序转换器传来的源程序代码,自动调用相关的编译器或解释器,对程序转化器生成的源程序进行编译执行或解释执行,将执行结果保存在参数存储器中。
⑤ 模型接口
模型接口是程序合成虚拟机与程序合成算法交互的接口,实现了抽象程序表示到程序指令序列的双向映射。具体由一组编码器/解码器和参数存储器快照构成。其中,编码器将程序存储器中的指令序列编码成抽象程序结构,以便程序合成算法加工处理;解码器将抽象程序结构解码为程序存储器中的指令序列。编码器和解码的具体编/解码方式与程序合成算法有关,通过对编码器和解码器的扩充,可实现不同程序合成算法的接入。参数存储器快照(Snapshot)是参数存储器的实时镜像,通过该快照为程序合成算法下一步程序修订提供依据。
⑥ 控制器
控制器是程序合成虚拟机的调度控制中心,按如下不同状态执行相应控制指令:
状态1. 初始时刻,从样本集D中选择rnum个样本的输入{input 1 * ,...,input rnum * }加载参数存储器的第一列,为参数存储器创建一个与其内容完全一致的快照,加载相应程序到程序存储器中.
状态2. 当程序存储器发生变化时,控制程序转换器将程序存储器中的程序序列转换成相应的源程序代码,调用程序执行器自动地执行该源程序,将程序运行得到的结果保存到参数存储器中.
状态3. 若参数存储器中的一列或多列与样本的输出一致,则该源程序即为目标程序,终止执行. 否则,将参数存储器状态、程序存储器中的程序序列,分别通过模型接口中的快照和编码器传递给程序合成算法,接收程序合成算法修订后的抽象程序,经解模型接口的解码器解码后加载到程序存储器中, 转向状态2。
2)基于程序合成虚拟机的程序自动合成方案
由(附图2)所示,在本发明中程序自动合成的解决方案按“程序逻辑合成”和“程序物理运行”两个步骤交替进行,直至满足终止条件:
第一步)程序逻辑合成:通过程序合成虚拟机模型接口的编码器,将程序合成虚拟机运行脚本编码成某种抽象结构,再由具体的程序合成算法,对程序的抽象表示进行加工处理;
第二步)程序物理运行:通过程序合成虚拟机模型接口的解码器,将逻辑合成处理后的程序抽象表示进行解码,生成可在程序合成虚拟机上运行的程序脚本,在程序合成虚拟机运行该程序脚本,保存运行的中间结果,用于启发程序合成算法。
综上,本发明给出了一种程序合成虚拟机逻辑设计方案和一种基于程序合成虚拟机的程序自动合成解决方案。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种程序合成虚拟机的逻辑设计方案,其特征是:程序合成虚拟机由程序存储器、数据存储器、控制器、程序转换器、程序执行器、模型接口几个部分构成。
2.一种基于程序合成虚拟机的程序自动合成解决方案,其特征是:程序合成算法与程序合成虚拟机相互独立,通过程序合成虚拟的模型接口进行交互;程序的合成过程两个按“程序的逻辑合成”和“程序的物理运行”两个步骤交替进行。
3.如权利要求1所述的一种程序合成虚拟机的逻辑设计方案,其特征是:在程序合成虚拟机中,程序存储器是程序的存储装置,为一顺序可读写存贮结构,每个单元具有一个地址,每一指令占用一个存储单元,采用函数化指令形式,从程序存储器的初始单元到终止单元的一次扫描,即可得到一个程序指令序列。
4.如权利要求1所述的一种程序合成虚拟机的逻辑设计方案,其特征是:在程序合成虚拟机中,参数存储器是程序中间结果的存储装置,具体为可读写的表格式存贮结构,每个单元可以通过其行列坐标进行定位。
5.假设样本集,存储器的每一行对应D中的一个样本,参数存储器中的参数被程序存储器中的相应指令调用,新产生的结果不断保存在参数存储器列单元中,同列不同行的存储单元中,存放的是同一函数不同输入参数的输出结果。
6.如权利要求1所述的一种程序合成虚拟机的逻辑设计方案,其特征是:在程序合成虚拟机中,程序转换器是程序的转换装置,具体实现将程序存储器中的程序序列转换成对应的高级语言源程序,由于程序存贮器中存放的是函数式程序指令序列,每个指令可对应一段确定的程序代码,程序存贮器中的指令序列最终可转换成某种语言的源程序。
7.如权利要求1所述的一种程序合成虚拟机的逻辑设计方案,其特征是:在程序合成虚拟机中,程序执行器是程序的执行装置,程序执行器接收程序转换器传来的源程序代码,自动调用相关的编译器或解释器,对程序转化器生成的源程序进行编译执行或解释执行,将执行结果保存在参数存储器中。
8.如权利要求1所述的一种程序合成虚拟机的逻辑设计方案,其特征是:模型接口是程序合成虚拟机与程序合成算法交互界面,由一组编码器/解码器和参数存储器快照构成,编码器将程序存储器中的指令序列编码成抽象程序结构,以便程序合成算法加工处理;解码器将抽象程序结构解码为程序存储器中的指令序列,参数存储器快照是参数存储器的实时镜像,通过该快照为程序合成算法下一步程序修订提供依据。
9.如权利要求1所述的一种程序合成虚拟机的逻辑设计方案,其特征是:控制器是程序合成虚拟机的调度控制中心,按如下不同状态执行相应控制指令:
状态1. 初始时刻,从样本集D中选择rnum个样本的输入{input 1 * ,...,input rnum * }加载参数存储器的第一列,为参数存储器创建一个与其内容完全一致的快照,加载相应程序到程序存储器中.
状态2. 当程序存储器发生变化时,控制程序转换器将程序存储器中的程序序列转换成相应的源程序代码,调用程序执行器自动地执行该源程序,将程序运行得到的结果保存到参数存储器中.
状态3. 若参数存储器中的一列或多列与样本的输出一致,则该源程序即为目标程序,终止执行. 否则,将参数存储器状态、程序存储器中的程序序列,分别通过模型接口中的快照和编码器传递给程序合成算法,接收程序合成算法修订后的抽象程序,经解模型接口的解码器解码后加载到程序存储器中, 转向状态2.
如权利要求2所述的一种程序自动合成解决方案,其特征是:在程序的逻辑合成过程中,程序合成算法处理的是,程序合成虚拟机模型接口中编码器传递来的程序抽象表示。
10.如权利要求2所述的一种程序自动合成解决方案,其特征是:在程序的物理运行过程中,程序合成算虚拟机处理的是,从模型接口中解码器传递来的程序指令序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910527685.8A CN110287001A (zh) | 2019-06-18 | 2019-06-18 | 程序合成虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910527685.8A CN110287001A (zh) | 2019-06-18 | 2019-06-18 | 程序合成虚拟机 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110287001A true CN110287001A (zh) | 2019-09-27 |
Family
ID=68003975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910527685.8A Pending CN110287001A (zh) | 2019-06-18 | 2019-06-18 | 程序合成虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110287001A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353371A (en) * | 1990-09-28 | 1994-10-04 | Kabushiki Kaisha Toshiba | Apparatus and methods for generating a program by synthesizing an object described in an object-oriented language |
US20170239576A1 (en) * | 2016-02-24 | 2017-08-24 | Virginia Tech Intellectual Properties, Inc. | Automated program synthesis from natural language for domain specific computing applications |
CN107615190A (zh) * | 2015-05-27 | 2018-01-19 | 三菱电机株式会社 | 程序生成装置、程序生成方法及程序生成程序 |
CN108829438A (zh) * | 2018-07-05 | 2018-11-16 | 南京大学 | 一种基于深度学习与程序合成的c/c++程序缺陷自动修复方法 |
CN109871284A (zh) * | 2017-12-05 | 2019-06-11 | 北京元比特科技有限责任公司 | 一种应用程序跨语言运行时环境执行的虚拟化技术及方法 |
-
2019
- 2019-06-18 CN CN201910527685.8A patent/CN110287001A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353371A (en) * | 1990-09-28 | 1994-10-04 | Kabushiki Kaisha Toshiba | Apparatus and methods for generating a program by synthesizing an object described in an object-oriented language |
CN107615190A (zh) * | 2015-05-27 | 2018-01-19 | 三菱电机株式会社 | 程序生成装置、程序生成方法及程序生成程序 |
US20170239576A1 (en) * | 2016-02-24 | 2017-08-24 | Virginia Tech Intellectual Properties, Inc. | Automated program synthesis from natural language for domain specific computing applications |
CN109871284A (zh) * | 2017-12-05 | 2019-06-11 | 北京元比特科技有限责任公司 | 一种应用程序跨语言运行时环境执行的虚拟化技术及方法 |
CN108829438A (zh) * | 2018-07-05 | 2018-11-16 | 南京大学 | 一种基于深度学习与程序合成的c/c++程序缺陷自动修复方法 |
Non-Patent Citations (2)
Title |
---|
XI VICTORIA LIN等: "Program Synthesis from Natural Language Using Recurrent Neural Networks", 《HTTPS://DADA.CS.WASHINGTON.EDU/RESEARCH/TR/2017/03/UW-CSE-17-03-01.PDF》 * |
周鹏等: "可微分抽象机混合编程系统", 《软件学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Drath et al. | AutomationML-the glue for seamless automation engineering | |
USRE33706E (en) | Table driven translator | |
ES2804506T3 (es) | Compartición de objetos de primera clase a través de múltiples lenguajes de programación interpretados | |
US20070083551A1 (en) | Extensible mechanism for object composition | |
US8464230B2 (en) | Methods and systems to implement non-ABI conforming features across unseen interfaces | |
CN111191789B (zh) | 模型优化部署系统、芯片、电子设备及介质 | |
CN108874372A (zh) | 一种基于Scala的区块链合约实现方法及系统 | |
US20160246622A1 (en) | Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages | |
US5452453A (en) | Rule based production system adapted for complex procedural flow | |
CN106737676A (zh) | 一种基于脚本可二次开发的工业机器人编程系统 | |
CN106991096A (zh) | 动态页面渲染方法及装置 | |
CN111638870B (zh) | 一种基于react和redux的前端开发基础平台 | |
CN103942081A (zh) | Plc梯形图il指令表生成方法 | |
CN113379070A (zh) | 一种深度学习框架转换方法、系统、存储介质及设备 | |
CN113031932A (zh) | 项目开发方法、装置、电子设备及存储介质 | |
CN110287001A (zh) | 程序合成虚拟机 | |
CN107577454A (zh) | 一种基于python的应用程序多线程运行优化方法 | |
CN116301826A (zh) | Caa开发中调用软件命令进行数据批量处理的方法 | |
CN117078569A (zh) | 神经网络模型推理框架的处理方法和装置、电子设备 | |
CN107622063B (zh) | 一种避免白页的页面切换方法和装置 | |
CN115344248A (zh) | 一种rpa开发字段编辑多样化方法 | |
Dantas et al. | Towards aspect-oriented programming for context-aware systems: A comparative study | |
CN109062556A (zh) | 一种多返回值的函数编程系统 | |
CN109117124A (zh) | 一种多返回值的函数编程方法 | |
CN114020278A (zh) | 数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190927 |