跨语言开发方法、装置及其应用制造方法及图纸

技术编号:39310517 阅读:15 留言:0更新日期:2023-11-12 15:56
本申请提出了跨语言开发方法、装置及其应用,包括以下步骤:S00、接收多语言混编代码;其中,接收多语言混编代码中以第一符号表示为通用注释,以第二符号表示为启用固定版本语言执行代码;S10、将多语言混编代码拆解执行语法树,并根据语法树按顺序依次调用语言执行层中对应的语言执行器;S20、每个语言执行器执行代码并输出结果。可以在不同的编程语言之间实现协同开发,同时保证性能,避免了跨语言调用的繁琐性和性能问题,并提供了更好的代码可读性和维护性。和维护性。和维护性。

【技术实现步骤摘要】
跨语言开发方法、装置及其应用


[0001]本申请涉及软件开发
,特别是涉及跨语言开发方法、装置及其应用。

技术介绍

[0002]随着计算机行业的发展,从最早期的FORTRAN、BASIC到C语言、再到C++、Java、Python、JavaScript再到R语言、Go,高级编程语言迅猛发展。各种高级编程语言都有擅长的领域,如Python擅长数据科学、机器学习、人工智能;Java擅长模板开发,适合大型项目开发;Go擅长网络编程、云计算、分布式系统、容器编排。各种语言互相调用繁琐,性能较低,而且跨语言调用可读性差、可维护性差。冗杂语言兼容性代码严重破坏代码的可读性。
[0003]因此,迫切需要一种跨语言开发装置能够集各语言所长同时又能保证性能。

技术实现思路

[0004]本申请实施例提供了跨语言开发方法、装置及其应用,针对目前技术跨语言调用的问题。
[0005]本专利技术核心技术主要是通过输入多语言混编代码,进行拆解执行语法树后按顺序调用语言执行器,能够返回多语言协同开发的执行结果。
[0006]第一方面,本申请提供了跨语言开发方法,所述方法包括以下步骤:
[0007]S00、接收多语言混编代码;
[0008]其中,接收多语言混编代码中以第一符号表示为通用注释,以第二符号表示为启用固定版本语言执行代码;
[0009]S10、将多语言混编代码拆解执行语法树,并根据语法树按顺序依次调用语言执行层中对应的语言执行器;
[0010]S20、每个语言执行器执行代码并输出结果。
[0011]进一步地,S10步骤中,语法树通过rpc按顺序依次调用语言执行层。
[0012]进一步地,S00~S20步骤中,采用共享内存的方式在统一进程内进行语言执行器之间的通信。
[0013]进一步地,S00~S20步骤中,以代码标识层接收多语言混编代码;以解释控制层将多语言混编代码拆解执行语法树,并根据语法树按顺序依次调用对应的语言执行层;以语言执行层进行每个语言执行器执行代码并输出结果。
[0014]进一步地,S10步骤中,还包括通过均衡负载器分配同一语言的语言执行器。
[0015]进一步地,S00~S20步骤中,以物理机作为语言执行器或语言执行器的载体,分布于语言执行层中。
[0016]第二方面,本申请提供了一种跨语言开发装置,包括:
[0017]代码表示模块,接收多语言混编代码;
[0018]其中,接收多语言混编代码中以第一符号表示为通用注释,以第二符号表示为启用固定版本语言执行代码;
[0019]解释控制模块,将多语言混编代码拆解执行语法树,并根据语法树按顺序依次调用语言执行层中对应的语言执行器;
[0020]语言执行模块,设有多个语言执行器,每个语言执行器执行代码并输出结果。
[0021]第三方面,本申请提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述的跨语言开发方法。
[0022]第四方面,本申请提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据上述的跨语言开发方法。
[0023]本专利技术的主要贡献和创新点如下:1、与现有技术相比,本申请可以在不同的编程语言之间实现协同开发,同时保证性能,避免了跨语言调用的繁琐性和性能问题,并提供了更好的代码可读性和维护性;
[0024]2、与现有技术相比,本申请语言执行层的效率,通信上采用了rpc的调用形式,语言执行器之间采用共享内存的方式。语言执行器处于统一进程中,避免了跨进程调用的开销,进程内采用共享内存的方式,避免了频繁与物理内存的交换。
[0025]本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
[0026]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0027]图1是根据本申请实施例的跨语言开发方法的流程图;
[0028]图2是根据本申请实施例的语法树调用图;
[0029]图3是根据本申请实施例的解释控制层语言执行层调度图;
[0030]图4是根据本申请实施例的多语言进程间调度图;
[0031]图5是根据本申请实施例的语言执行层分布式架构图;
[0032]图6是根据本申请实施例的执行器负载均衡图;
[0033]图7是根据本申请实施例的电子装置的硬件结构示意图。
具体实施方式
[0034]这里将详细的对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
[0035]需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
[0036]实施例一
[0037]本申请旨在提出一种跨语言开发方法,具体地,参考图1,所述方法包括以下步骤:
[0038]S00、接收多语言混编代码;
[0039]其中,在代码表示层接收多语言混编代码中以第一符号//表示为通用注释,以第二符号##表示为启用固定版本语言执行代码;
[0040]例如:
[0041]//用java获取图片的二进制流
[0042]##java==1.8.0_351
[0043]byte[]picture=getPicByteArray();
[0044]//用python进行人脸识别
[0045]##python==3.9.17
[0046]faces=cascade.detectMultiScale(picture,scaleFactor=1.1,minNeighbors=5,minSize=(30,30))
[0047]//用shell输出结果
[0048]##/bin/bash
[0049]echo faces
[0050]其中,//用java获取图片的二进制流
[0051]这行注释指示下面的代码是用Java语言来获取图片的二进制流。getPicByteArray()是一个用于获取图片二进制数据的函数,其返回一个byte[]类型的数据。
[0052]##java==1.本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.跨语言开发方法,其特征在于,包括以下步骤:S00、接收多语言混编代码;其中,所述接收多语言混编代码中以第一符号表示为通用注释,以第二符号表示为启用固定版本语言执行代码;S10、将所述多语言混编代码拆解执行语法树,并根据所述语法树按顺序依次调用语言执行层中对应的语言执行器;S20、每个语言执行器执行代码并输出结果。2.如权利要求1所述的跨语言开发方法,其特征在于,S10步骤中,所述语法树通过rpc按顺序依次调用语言执行层。3.如权利要求2所述的跨语言开发方法,其特征在于,S00~S20步骤中,采用共享内存的方式在统一进程内进行语言执行器之间的通信。4.如权利要求3所述的跨语言开发方法,其特征在于,S00~S20步骤中,以代码标识层接收多语言混编代码;以解释控制层将所述多语言混编代码拆解执行语法树,并根据所述语法树按顺序依次调用对应的语言执行层;以语言执行层进行每个语言执行器执行代码并输出结果。5.如权利要求1

4任意一项所述的跨语言开发方法,其特征在于,S10步骤中,还包...

【专利技术属性】
技术研发人员:郁强叶海斌来佳飞王增璞王勇
申请(专利权)人:城云科技中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1