一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种程序代码生成方法及系统与流程

2022-04-30 14:32:19 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种程序代码生成方法及系统。


背景技术:

2.在软件开发过程中,常常会对一个变量,根据相应的语义进行随机处理,以实现某些特定的目的。一般而言,为了实现这样一个随机处理,开发者需要先构建一个处理流程,附带相应的语义,理解语义,从而根据该语义来编写相应的代码,在编写完成后再对程序进行检查和测试。
3.对于编写多个不同语义对应的程序而言,开发者需要分别理解不同语义的含义,编写不同的代码。现有方案适用于总体随机处理需求小、各个项目差异很大、开发时间充足充分的情况。对于新型互联网和消费者系统,对于每一个独立的随机处理的程序,开发人员不得不完整地梳理每一个流程,从头开始编写代码,一套完整的开发流程需要经过:理解语义、编写代码和测试代码等复杂流程。尽管这种方式能十分精准地考虑到语义中的每一个细节,但其中存在大量重复的工作,严重降低了代码编写效率,并且基于人工的代码编写过程,出错率也较高。
4.因此,现在亟需一种程序代码生成方法及系统来解决上述问题。


技术实现要素:

5.针对现有技术存在的问题,本发明提供一种程序代码生成方法及系统。
6.本发明提供一种程序代码生成方法,包括:
7.获取预设数量的程序代码处理单元,其中,每个程序代码处理单元中设置有对应功能的子程序代码;
8.基于数据类型,将所述子程序代码进行拼接,得到目标程序代码。
9.根据本发明提供的一种程序代码生成方法,在所述获取预设数量的程序代码处理单元之前,所述方法还包括:
10.对多种样本全局语义进行解析,确定每种样本全局语义中的各个数据输入输出过程,并根据每个数据输入输出过程,生成对应的样本语义信息,其中,所述样本语义信息中包含有数据的输入类型信息和输出类型信息;
11.根据所述样本语义信息,匹配对应的子程序代码;
12.基于随机算法,生成随机参数;
13.根据所述子程序代码、所述样本语义信息和所述随机参数,构建程序代码处理单元。
14.根据本发明提供的一种程序代码生成方法,所述基于数据类型,将所述子程序代码进行拼接,得到目标程序代码,包括:
15.步骤s1,根据当前程序代码处理单元的输出类型信息,从多个对应的预拼接程序代码处理单元中,确定下一个程序代码处理单元;
16.步骤s2,将当前程序代码处理单元的语义信息和下一个程序代码处理单元的语义信息进行拼接;将当前程序代码处理单元的子程序代码和下一个程序代码处理单元的子程序代码进行拼接;
17.步骤s3,将下一个程序代码处理单元作为当前程序代码处理单元,重复执行步骤s1至步骤s3,直至所述预设数量的程序代码处理单元完成拼接,得到目标程序代码以及对应的目标语义信息。
18.根据本发明提供的一种程序代码生成方法,所述根据当前程序代码处理单元的输出类型信息,从多个对应的预拼接程序代码处理单元中,确定下一个程序代码处理单元,包括:
19.根据所述输出类型信息,确定多个对应的预拼接程序代码处理单元;
20.获取当前程序代码处理单元的输出范围数据,并根据所述输出范围数据,确定每个预拼接程序代码处理单元的数据处理结果范围;
21.将所述数据处理结果范围小于预设数据范围阈值的预拼接程序代码处理单元,作为下一个程序代码处理单元。
22.根据本发明提供的一种程序代码生成方法,所述根据所述样本语义信息,匹配对应的子程序代码,包括:
23.根据所述样本语义信息和预设代码语法,匹配对应的子程序代码。
24.本发明还提供一种程序代码生成系统,包括:
25.程序代码获取模块,用于获取预设数量的程序代码处理单元,其中,每个程序代码处理单元中设置有对应功能的子程序代码;
26.程序代码拼接模块,用于基于数据类型,将所述子程序代码进行拼接,得到目标程序代码。
27.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述程序代码生成方法的步骤。
28.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述程序代码生成方法的步骤。
29.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述程序代码生成方法的步骤。
30.本发明提供的一种程序代码生成方法及系统,通过预先构建的多种程序代码处理单元,根据待开发实现的程序的输入输出数据的类型,将程序代码处理单元中的子程序代码进行自动拼接,从而完成目标程序代码的构建,提高了代码编写的效率,降低了代码编写过程的出错几率。
附图说明
31.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1为本发明提供的程序代码生成方法的流程示意图;
33.图2为本发明提供的目标程序代码拼接过程的示意图;
34.图3为本发明提供的基于程序代码处理单元的程序代码和语义拼接过程的示意图;
35.图4为本发明提供的程序代码生成系统的结构示意图;
36.图5为本发明提供的电子设备的结构示意图。
具体实施方式
37.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.图1为本发明提供的程序代码生成方法的流程示意图,如图1所示,本发明提供了一种程序代码生成方法,包括:
39.步骤101,获取预设数量的程序代码处理单元,其中,每个程序代码处理单元中设置有对应功能的子程序代码;
40.步骤102,基于数据类型,将所述子程序代码进行拼接,得到目标程序代码。
41.在本发明中,程序代码处理单元可以理解为一个接收特定类型输入数据和产生特定类型输出数据的一个处理单元,每个程序代码处理单元通过以下步骤构建得到:首先对预先得到的样本全局语义进行拆解;然后,通过拆解后的单个语义(单个语义对应代码中数据处理的一次输入和输出的过程)匹配对应的子程序代码,从而使得一个程序代码处理单元的属性中包含有该子程序代码,并根据这些得到程序代码处理单元,构建一个程序代码处理单元数据库。在后期子程序代码拼接过程中,通过每个程序代码处理单元之间的数据输入输出类型,从该数据中选取相应的子程序代码进行拼接,同时,将每个程序代码处理单元之间的语义也进行拼接,构成一个完整描述目标程序代码的语义。
42.图2为本发明提供的目标程序代码拼接过程的示意图,可参考图2所示,在本发明中,将一个完整的程序处理输入的过程拆解成多个部分来考虑,每一个部分对应一个程序代码处理单元,这种程序代码处理单元具有类似“乐高(lego)”模型的拼接功能,通过前期的语义拆解,在确定一定数量所需的这种“乐高”架构的程序代码处理单元后,将这些程序代码处理单元中的子程序代码进行拼接(子程序代码之间基于预设的调用方法实现拼接),相应地,将对应的语义进行拼接(语义之间基于预设的过渡语句实现拼接)。另外,为了方便理解,本发明将拼接后的语义定义为管道语义,即两两之间的语义类似一个管道结构,描述了数据从输入到输出的各个过程;同样地,将拼接后的代码定义为管道代码,即两两之间的代码类似管道结构,完成数据输入输出处理的过程。本发明采用程序代码处理单元,自动生成目标程序代码和对应的目标语义信息,从而提高生成程序代码的效率,节省工程成本,减少了代码编写过程的出错几率。
43.本发明提供的程序代码生成方法,通过预先构建的多种程序代码处理单元,根据待开发实现的程序的输入输出数据的类型,将程序代码处理单元中的子程序代码进行自动拼接,从而完成目标程序代码的构建,提高了代码编写的效率,降低了代码编写过程的出错
几率。
44.在上述实施例的基础上,在所述获取预设数量的程序代码处理单元之前,所述方法还包括:
45.对多种样本全局语义进行解析,确定每种样本全局语义中各个数据输入输出过程,并根据每个数据输入输出过程,生成对应的样本语义信息,其中,所述样本语义信息中包含有数据的输入类型信息和输出类型信息;
46.根据所述样本语义信息,匹配对应的子程序代码;
47.基于随机算法,生成随机参数;
48.根据所述子程序代码、所述语义信息和所述随机参数,构建得到程序代码处理单元。
49.在本发明中,程序代码处理单元在构建过程中,基于不同的属性定义,可构建得到多种不同类型的程序代码处理单元。不同类型的程序代码处理单元,也明确了其中的语义和对应程序的生成过程,其中,同一类型的程序代码处理单元以下特征是相同的:
50.1、可接收的输入数据的数据类型,例如,数字类型、字符串类型、列表数据类型和字典类型等。
51.2、经程序代码处理单元中对应程序代码处理后,得到的输出数据的数据类型,其中,输出数据的数据类型可参考输入数据的数据类型。
52.3、随机参数的生成方法,一个程序代码处理单元对应一个随机参数,这个随机参数决定了这个程序代码处理单元,跟其同类型程序代码处理单元的功能之间不同之处。对于不同的随机参数,同一类型的程序代码处理单元,可以变成多个功能不同的程序代码处理单元,对相同的输入产生不同的结果。具体地,某个类型的程序代码处理单元的处理逻辑,为一个算数运算符(如“ ”、“*”和“/”等,分别对应相加、相乘和除),根据既定的随机算法,随机选择一个参数(该参数不作具体限定,随机产生,如2,运算类型为相加,使得输入变量加2),从而确定了程序代码处理单元中的随机参数。
53.4、处理输入得到输出的子程序代码,是程序代码处理单元参数的函数,即每个子程序代码会随着程序代码处理单元参数的变化而变化,对于每一个程序代码处理单元参数,都对应有唯一的子程序代码。
54.5、描述处理输入过程的文字表述(即单个语义),也是程序代码处理单元参数的函数,每个语义会随着这个程序代码处理单元参数的变化而变化,每个程序代码处理单元参数也会对应唯一的语义信息,这些都是在前期设置好的,在拼接过程中,直接对相应的语义信息进行拼接,而不需要人工进行额外的语义构建。
55.本发明将描述完整的处理输入输出过程的样本全局语义,拆解成多个步骤的组合,每个步骤随着其参数变化表述和处理方法,不同步骤通过其自身的输入输出类型紧密结合在一起。每个步骤随着参数变化和步骤先后顺序的随机性,保证了拼接结果的充分多元化,而输入输出类型的控制,保证了多个拼接的步骤仍然可以成为一个完整的目标程序代码而不会出现代码编写错误。需要说明的是,样本全局语义可以通过一个语义样本库获取得到,该语义样本库中已保存有多种完整描述整个程序的样本全局语义,本发明从该语义样本库中选取样本全局语义进行拆解分析,从而构建多种程序代码处理单元。
56.在上述实施例的基础上,所述基于数据类型,将所述子程序代码进行拼接,得到目
标程序代码,包括:
57.步骤s1,根据当前程序代码处理单元的输出类型信息,从多个对应的预拼接程序代码处理单元中,确定下一个程序代码处理单元;
58.步骤s2,将当前程序代码处理单元的语义信息和下一个程序代码处理单元的语义信息进行拼接;将当前程序代码处理单元的子程序代码和下一个程序代码处理单元的子程序代码进行拼接;
59.步骤s3,将下一个程序代码处理单元作为当前程序代码处理单元,重复执行步骤s1至步骤s3,直至所述预设数量的程序代码处理单元完成拼接,得到目标程序代码以及对应的目标语义信息。
60.在本发明中,在前一个程序代码处理单元(即当前的程序代码处理单元)对输入数据进行处理之后(基于程序代码处理单元中的子程序代码实现),根据当前的程序代码处理单元输出数据的数据类型,确定下一个程序代码处理单元的输入数据类型。在本发明中,需要控制程序代码处理单元之间传递的数据的范围,因此,在确定当前程序代码处理单元的输出类型信息之后,首先根据该输出类型信息,获取多个待拼接程序代码处理单元,这些待拼接程序代码处理单元的输入类型信息和该输出类型信息相匹配;进一步地,根据当前程序代码处理单元和每个待拼接程序代码处理单元之间产生的数据处理结果,选取相应的预拼接程序代码处理单元作为下一个程序代码处理单元。在确定下一个程序代码处理单元之后,两个程序代码处理单元各自对应的子程序代码进行拼接,同时,将各自对应的语义也进行拼接,由于之前已预先确定了所需的程序代码处理单元的总数量,因此,在所有程序代码处理单元之间的子程序代码以及语义完成拼接之后,得到目标程序代码和目标语义信息。
61.在上述实施例的基础上,所述根据当前程序代码处理单元的输出类型信息,从多个对应的预拼接程序代码处理单元中,确定下一个程序代码处理单元,包括:
62.根据所述输出类型信息,确定多个对应的预拼接程序代码处理单元;
63.获取当前程序代码处理单元的输出范围数据,并根据所述输出范围数据,确定每个预拼接程序代码处理单元的数据处理结果范围;
64.将所述数据处理结果范围小于预设数据范围阈值的预拼接程序代码处理单元,作为下一个程序代码处理单元。
65.在数据类型满足的情况下,前一个程序代码处理单元的输出,可能会导致后一个程序代码处理单元发生异常,即由于前一个输出的数据超过一定范围,导致后续程序代码处理单元无法正常处理,因此,需要控制不同的程序代码处理单元之间传递的数据的范围;同时,从最开始的随机化输入开始,经过多个带着随机参数的程序代码处理单元的处理,也需要保证一直顺利处理而不出现异常。
66.基于上述情况,本发明通过控制好初始随机输入(例如,限定输入变量的赋值)和程序代码处理单元的随机参数范围,对程序代码处理单元的具体处理过程增加修饰处理的部分,使得对于每一种不同的数据类型,被任意一个程序代码处理单元处理后,结果总是能收敛到一个既定的范围内。例如,前一个程序代码处理单元的输出数据的值为1000,为了保证在后续的程序代码处理单元处理过程中,输出数据的值不超过10000(预先定义的一个范围值),将前一个程序代码处理单元的值,与每个预拼接程序代码处理单元的随机参数之间进行相应运算,例如,某个预拼接程序代码处理单元的随机参数为乘5,另一个预拼接程序
代码处理单元的随机参数为加5,则可将后一个预拼接程序代码处理单元作为下一个程序代码处理单元。需要说明的是,当多个预拼接程序代码处理单元与当前程序代码处理单元的输出数据之间的数据处理结果,都小于预设数据范围阈值时,可选取最小数据处理结果对应的预拼接程序代码处理单元。
67.在上述实施例的基础上,所述根据所述样本语义信息,匹配对应的子程序代码,包括:
68.根据所述样本语义信息和预设代码语法,匹配对应的子程序代码。
69.在本发明中,程序代码处理单元可基于不同的预设代码语法构建,使得后续生成的目标程序代码可以是多种不同语法的代码结构。
70.图3为本发明提供的基于程序代码处理单元的程序代码和语义拼接过程的示意图,可参考图3所示,首先确定一个完整的程序流程需要多少个数量的程序代码处理单元;然后,从预先构建的程序代码处理单元库选取对应的程序代码处理单元,进而根据选取的程序代码处理单元,生成对应的随机参数,将其变成一个具体的待使用的程序代码处理单元,抽取其描述处理输入得到输出过程的文字表述作为语义的一部分,抽取其处理输入的程序代码作为整体代码的一部分;进一步地,根据上一个程序代码处理单元的输出数据类型,在程序代码处理单元库中筛选出可接受该类型输入的程序代码处理单元集合,并从该集合中随机抽取程序代码处理单元,完成上一个程序代码处理单元和当前程序代码处理单元的语义拼接和程序代码拼接,直到处理足够数量的程序代码处理单元为止,最终得到目标程序代码以及对应的目标语义。
71.本发明通过预先编写少量的子程序代码,可以自动生成大量由处理输入输出的程序代码处理单元组成的目标代码程序;每个目标代码程序都可以是独一无二的,一般情况下不太能存在重复的可能(基于程序代码处理单元之间不同的组合,可以产生多种组合方式)。
72.下面对本发明提供的程序代码生成系统进行描述,下文描述的程序代码生成系统与上文描述的程序代码生成方法可相互对应参照。
73.图4为本发明提供的程序代码生成系统的结构示意图,如图4所示,本发明提供了一种程序代码生成系统,包括程序代码获取模块401和程序代码拼接模块402,其中,程序代码获取模块401用于获取预设数量的程序代码处理单元,其中,每个程序代码处理单元中设置有对应功能的子程序代码;程序代码拼接模块402用于基于数据类型,将所述子程序代码进行拼接,得到目标程序代码。
74.本发明提供的程序代码生成系统,通过预先构建的多种程序代码处理单元,根据待开发实现的程序的输入输出数据的类型,将程序代码处理单元中的子程序代码进行自动拼接,从而完成目标程序代码的构建,提高了代码编写的效率,降低了代码编写过程的出错几率。
75.本发明提供的系统是用于执行上述各方法实施例的,具体流程和详细内容请参照上述实施例,此处不再赘述。
76.图5为本发明提供的电子设备的结构示意图,如图5所示,该电子设备可以包括:处理器(processor)501、通信接口(communicationsinterface)502、存储器(memory)503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通
信。处理器501可以调用存储器503中的逻辑指令,以执行程序代码生成方法,该方法包括:获取预设数量的程序代码处理单元,其中,每个程序代码处理单元中设置有对应功能的子程序代码;基于数据类型,将所述子程序代码进行拼接,得到目标程序代码。
77.此外,上述的存储器503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
78.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的程序代码生成方法,该方法包括:获取预设数量的程序代码处理单元,其中,每个程序代码处理单元中设置有对应功能的子程序代码;基于数据类型,将所述子程序代码进行拼接,得到目标程序代码。
79.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的程序代码生成方法,该方法包括:获取预设数量的程序代码处理单元,其中,每个程序代码处理单元中设置有对应功能的子程序代码;基于数据类型,将所述子程序代码进行拼接,得到目标程序代码。
80.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
81.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
82.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献