语言互操作方法、装置、存储介质及程序产品与流程

文档序号:36779527发布日期:2024-01-23 11:51阅读:17来源:国知局
语言互操作方法、装置、存储介质及程序产品与流程

本技术涉及计算机编程领域,尤其涉及一种语言互操作方法、装置、存储介质及程序产品。


背景技术:

1、随着计算机技术的发展,编程语言的种类也不断增加。编程语言作为一种开发工具,通常是针对特定的领域或行业的开发需求来设计的,例如,java语言多应用于企业软件开发、安卓移动开发,大数据云计算领域等it行业;python语言常用在图形处理,科学计算,web编程,多媒体应用和引擎开发、机器学习、人工智能等领域。也就是说,每种编程语言擅长的领域不同。因此,针对不同的开发环境,需要适应性选择合适的编程语言来实现开发需求。

2、其中,一种编程语言不能满足特定环境下的开发需求时,或者相比该种编程语言,其他编程语言对于完成特定环境下开发需求中的某一部分具有优势时,可以采用该种编程语言结合其他编程语言来共同实现开发需求。为此,提出了语言互操作能力的概念。语言互操作能力表示不同编程语言作为同一系统的一部分进行互操作的能力。现有的语言互操作方法,虽然能够使得编程语言具有语言互操作能力,但其缺点也十分明显:一是开发成本和维护成本较高,二是难以进一步扩展实现多语言的互操作,三是使用编程语言实现语言互操作时需要多个步骤,操作复杂,降低开发者的体验。

3、有鉴于此,如何在为编程语言提供语言互操作能力的同时,降低语言互操作实现的成本及操作难度,提高编程语言的语言互操作能力扩展性,成为本领域的研究热点。


技术实现思路

1、有鉴于此,提出了一种语言互操作方法、装置、存储介质及程序产品,根据本技术实施例的语言互操作方法,能够在为编程语言提供语言互操作能力的同时,降低语言互操作实现的成本及操作难度,提高编程语言的语言互操作能力扩展性。

2、第一方面,本技术的实施例提供了一种语言互操作方法,所述方法包括:获取第一语言代码以及多种第二语言代码;根据所述多种第二语言代码,生成多种第二语言的互操作边界信息的统一抽象表示,所述统一抽象表示是多种第二语言的互操作边界信息的二进制代码,所述多种第二语言的互操作边界信息表示多种第二语言的构成要素中允许与第一语言互相访问或使用的构成要素;根据所述统一抽象表示,编译所述第一语言代码,得到第一语言代码的二进制代码并输出,所述第一语言代码的二进制代码在执行时使得第一语言代码中的构成要素和多种第二语言中的任一第二语言的构成要素能够互相访问或使用。

3、根据本技术实施例的语言互操作方法,通过获取多种第二语言代码,可以根据多种第二语言代码生成多种第二语言的互操作边界信息的统一抽象表示,统一抽象表示是多种第二语言的互操作边界信息的二进制代码,使得统一抽象表示可以体现多种第二语言的构成要素中允许与第一语言互相访问或使用的构成要素,根据统一抽象表示,可以编译第一语言代码,得到第一语言代码的二进制代码。第一语言代码的二进制代码在执行时,使得第一语言代码中的构成要素和多种第二语言代码中的构成要素能够互相访问或使用,即使得第一语言具有与多种第二语言的互操作能力。统一抽象表示可以由多种第二语言的互操作边界信息得到,不涉及构成要素的内部方法,不需要解析多种第二语言的全部语法,使得本技术实施例的语言互操作方法具有较低的开发成本;多种语言的构成要素的内部方法的更新不会影响到多种第二语言的互操作边界信息,因此不会对统一抽象表示带来影响,不必对统一抽象表示进行维护,使得本技术实施例的语言互操作方法具有较低的维护成本;第二语言的增加使得多种第二语言的构成要素可能增加,不会影响到原有的构成要素,进而不会影响统一抽象表示原有的内容,便于第一语言和多种第二语言的互操作能力的进一步扩展;对于开发者而言,完成第一语言代码的撰写以及启动语言互操作方法即可,减少了开发者的工作量,降低了语言互操作方法的操作难度;综上所述,根据本技术实施例的语言互操作方法,能够在为编程语言提供语言互操作能力的同时,降低语言互操作实现的成本及操作难度,提高编程语言的语言互操作能力扩展性。

4、根据第一方面,在所述语言互操作方法的第一种可能的实现方式中,根据所述多种第二语言代码,生成多种第二语言的互操作边界信息的统一抽象表示,包括:根据所述多种第二语言代码,识别所述多种第二语言的互操作边界信息;根据所述多种第二语言的互操作边界信息,生成所述统一抽象表示。

5、通过这种方式,使得统一抽象表示可以直接由互操作边界信息处理得到,避免对多种第二语言的大量语法进行分析,可以提升根据本技术实施例的语言互操作方法的效率。

6、根据第一方面的第一种可能的实现方式,在所述语言互操作方法的第二种可能的实现方式中,所述多种第二语言的互操作边界信息包括至少一个重复的构成要素和至少一个唯一的构成要素,根据所述多种第二语言的互操作边界信息,生成所述统一抽象表示,包括:根据所述多种第二语言的互操作边界信息的共性部分和特有部分生成所述统一抽象表示,其中,所述共性部分通过将所述至少一个重复的构成要素中的每一重复的构成要素作为一个构成要素得到,所述特有部分包括所述至少一个唯一的构成要素。

7、通过这种方式,可以减少统一抽象表示中构成要素的数量,使得统一抽象表示所占据的内存空间降低,并使得后续根据统一抽象表示编译第一语言代码的操作复杂度降低。

8、根据第一方面,以及以上第一方面的任意一种可能的实现方式,在所述语言互操作方法的第三种可能的实现方式中,根据所述统一抽象表示,编译所述第一语言代码,得到第一语言代码的二进制代码并输出,包括:根据所述统一抽象表示与第一语言的互操作边界信息的差异,得到对所述统一抽象表示与第一语言的语义进行处理的处理手段,所述第一语言的互操作边界信息根据所述第一语言代码确定;编译所述第一语言代码时使用所述处理手段,得到所述第一语言代码的二进制代码并输出。

9、第一语言的语义描述了计算机执行使用第一语言编写的程序时所表现的行为,例如逻辑运算、读写数据等。对统一抽象表示与第一语言的语义进行处理的处理手段,可以是对统一抽象表示与第一语言的语义进行融合的手段。例如将统一抽象表示的构成要素与第一语言的构成要素“融合”为以构成要素内存作为构成要素名称的同一构成要素。又例如为第一语言的构成要素增加标记,表示该构成要素中的参数以统一抽象表示的构成要素的实现方式来实现,从而将统一抽象表示的构成要素的语义“融合”到第一语言中。

10、通过这种方式,可以在对第一语言代码进行编译时,完成统一抽象表示与第一语言的语义的处理,使得访问或使用第二语言的构成要素的第一语言代码得以成功编译。在处理手段预先设置好的前提下,不需开发者在编译过程中再做出指示,可以进一步降低开发者的工作难度。在处理手段由开发者实时确定时,可以提升编译第一语言代码时,对所述统一抽象表示与所述第一语言的语义进行处理的灵活性。

11、根据第一方面的第三种可能的实现方式,在所述语言互操作方法的第四种可能的实现方式中,所述处理手段包括映射处理,其中,所述映射处理为针对所述第一语言代码中、与所述统一抽象表示内存相同、名称不同的构成要素,按照映射关系中对应内存的数据类型进行编译,所述映射关系指示所述统一抽象表示的构成要素、第一语言的互操作边界信息的构成要素与不同内存的数据类型的对应关系。

12、对于第一语言代码中的构成要素,在编译时仅关注其所需内存即可,不关注构成要素的名称,因此,可以预先统计第一语言代码与所述统一抽象表示的内存相同、名称不同的构成要素,并基于统计的内存相同、名称不同的构成要素的内存确定构成要素到不同内存的映射关系,使得在编译第一语言代码时基于映射关系可直接确定构成要素的内存,实现第一语言代码中与统一抽象表示内存相同、名称不同的构成要素的语义处理。

13、根据第一方面的第三种可能的实现方式或第四种可能的实现方式,在所述语言互操作方法的第五种可能的实现方式中,所述统一抽象表示的构成要素变量包括空指针、且所述第一语言的构成要素变量不包括空指针,所述处理手段包括第一运行时转换处理,其中,所述第一运行时转换处理为使用运行时转换代码确定所述运行时为空时,将当前编译的构成要素变量作为异常值抛出。

14、构成要素变量指的是构成要素的实例变量。由于编译过程中运行时是否为空与当前编译的构成要素的变量是否为空指针相关联,因此通过使用运行时转换代码确定运行时为空,可以间接确定当前编译的构成要素变量为空指针,使得变量传入第一语言代码后第一语言的安全性,在变量传入第一语言代码内部之前得以确定;通过在确定所述运行时为空时,将当前编译的构成要素变量作为异常值抛出,使得异常不会传入第一语言,从而能保证第一语言的安全性。

15、根据第一方面的第三种至第五种可能的实现方式中的任意一种可能的实现方式,在所述语言互操作方法的第六种可能的实现方式中,所述统一抽象表示的构成要素变量包括空指针、且所述第一语言的构成要素变量不包括空指针,所述处理手段包括第二运行时转换处理,其中,所述第二运行时转换处理为使用运行时转换代码确定所述运行时为空时,返回可选构成要素中的空值。

16、由于编译过程中运行时是否为空与当前编译的构成要素的变量是否为空指针相关联,因此通过使用运行时转换代码确定运行时为空,可以间接确定当前编译的构成要素变量为空指针,使得变量传入第一语言代码后第一语言的安全性,在变量传入第一语言代码内部之前得以确定;通过在确定所述运行时为空时,返回可选构成要素中的空值,使得编译第一语言代码时不会产生异常,从而能保证第一语言的安全性。

17、根据第一方面的第三种至第六种可能的实现方式中的任意一种可能的实现方式,在所述语言互操作方法的第七种可能的实现方式中,所述统一抽象表示与第一语言的互操作边界信息中,存在名称相同、语法不同的构成要素,所述处理手段包括语法差异标记处理,其中,所述语法差异标记处理为编译所述第一语言代码时,为第一语言的构成要素增加与所述统一抽象表示的构成要素对应的标记,所述标记指示第一语言代码中,所述具有标记的构成要素执行时,实现所述统一抽象表示的构成要素的语法。

18、通过这种方式,可以在编译时指示当前编译的构成要素应当使用的语法,避免因同一名称的构成要素对应第一语言和第二语言的多个语法时无法做出选择。使得能够提升本技术实施例的语言互操作方法支持的互操作能力。

19、第二方面,本技术的实施例提供了一种语言互操作装置,所述装置包括:编译器,用于:获取第一语言代码以及多种第二语言代码;根据所述多种第二语言代码,生成多种第二语言的互操作边界信息的统一抽象表示,所述统一抽象表示是多种第二语言的互操作边界信息的二进制代码,所述多种第二语言的互操作边界信息表示多种第二语言的构成要素中允许与第一语言互相访问或使用的构成要素;根据所述统一抽象表示,编译所述第一语言代码,得到第一语言代码的二进制代码并输出,所述第一语言代码的二进制代码在执行时使得第一语言代码中的构成要素和多种第二语言中的任一第二语言的构成要素能够互相访问或使用。

20、根据第二方面,在所述语言互操作装置的第一种可能的实现方式中,根据所述多种第二语言代码,生成多种第二语言的互操作边界信息的统一抽象表示,包括:根据所述多种第二语言代码,识别所述多种第二语言的互操作边界信息;根据所述多种第二语言的互操作边界信息,生成所述统一抽象表示。

21、根据第二方面的第一种可能的实现方式,在所述语言互操作装置的第二种可能的实现方式中,所述多种第二语言的互操作边界信息包括至少一个重复的构成要素和至少一个唯一的构成要素,根据所述多种第二语言的互操作边界信息,生成所述统一抽象表示,包括:根据所述多种第二语言的互操作边界信息的共性部分和特有部分生成所述统一抽象表示,其中,所述共性部分通过将所述至少一个重复的构成要素中的每一重复的构成要素作为一个构成要素得到,所述特有部分包括所述至少一个唯一的构成要素。

22、根据第二方面,以及以上第二方面的任意一种可能的实现方式,在所述语言互操作装置的第三种可能的实现方式中,根据所述统一抽象表示,编译所述第一语言代码,得到第一语言代码的二进制代码并输出,包括:根据所述统一抽象表示与第一语言的互操作边界信息的差异,得到对所述统一抽象表示与第一语言的语义进行处理的处理手段,所述第一语言的互操作边界信息根据所述第一语言代码确定;编译所述第一语言代码时使用所述处理手段,得到所述第一语言代码的二进制代码并输出。

23、根据第二方面的第三种可能的实现方式,在所述语言互操作装置的第四种可能的实现方式中,所述处理手段包括映射处理,其中,所述映射处理为针对所述第一语言代码中、与所述统一抽象表示内存相同、名称不同的构成要素,按照映射关系中对应内存的数据类型进行编译,所述映射关系指示所述统一抽象表示的构成要素、第一语言的互操作边界信息的构成要素与不同内存的数据类型的对应关系。

24、根据第二方面的第三种可能的实现方式或第四种可能的实现方式,在所述语言互操作装置的第五种可能的实现方式中,所述统一抽象表示的构成要素变量包括空指针、且所述第一语言的构成要素变量不包括空指针,所述处理手段包括第一运行时转换处理,其中,所述第一运行时转换处理为使用运行时转换代码确定所述运行时为空时,将当前编译的构成要素变量作为异常值抛出。

25、根据第二方面的第三种至第五种可能的实现方式中的任意一种可能的实现方式,在所述语言互操作装置的第六种可能的实现方式中,所述统一抽象表示的构成要素变量包括空指针、且所述第一语言的构成要素变量不包括空指针,所述处理手段包括第二运行时转换处理,其中,所述第二运行时转换处理为使用运行时转换代码确定所述运行时为空时,返回可选构成要素中的空值。

26、根据第二方面的第三种至第六种可能的实现方式中的任意一种可能的实现方式,在所述语言互操作装置的第七种可能的实现方式中,所述统一抽象表示与第一语言的互操作边界信息中,存在名称相同、语法不同的构成要素,所述处理手段包括语法差异标记处理,其中,所述语法差异标记处理为编译所述第一语言代码时,为第一语言的构成要素增加与所述统一抽象表示的构成要素对应的标记,所述标记指示第一语言代码中,所述具有标记的构成要素执行时,实现所述统一抽象表示的构成要素的语法。

27、第三方面,本技术的实施例提供了一种语言互操作装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为可以执行上述第一方面或者第一方面的多种可能的实现方式中的一种或几种的语言互操作方法。

28、第四方面,本技术实施例提供一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面或者第一方面的多种可能的实现方式中的一种或几种的语言互操作方法。

29、第五方面,本技术的实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述第一方面或者第一方面的多种可能的实现方式中的一种或几种的语言互操作方法。

30、本技术的这些和其他方面在以下(多个)实施例的描述中会更加简明易懂。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1