Core API for Sharing Language Constructs Across Scripting Languages

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Engineers face challenges in integrating and sharing code written in different scripting languages, requiring programming expertise and knowledge of underlying Java language, which is not feasible for non-developer engineers, especially when dealing with domain-specific languages for geometry manipulation and meshing.

Innovation Solution

A method and system that enable sharing of language constructs across different scripting languages by defining a language-neutral core application programming interface, using adapters to redirect calls between scripting languages, treating functions, class definitions, and other constructs as first-class objects, allowing seamless interaction without requiring expertise in other languages.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If engineers use existing data sharing methods between scripting languages, then code sharing is enabled, but programming skill and knowledge of underlying Java language are required

Engineering Contradiction:
Improvecode sharing capabilityVSAvoidoperational simplicity
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent introduces a Core API as an intermediary layer between different scripting languages (Python, Ruby, Jython, JRuby). This Core API serves as a mediator that translates calls between different scripting languages, allowing engineers to share code without needing to understand the underlying Java language or programming expertise in multiple languages. The Core API handles the complexity of language translation automatically.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If engineers write scripts in multiple scripting languages, then problem-solving flexibility is improved, but integration difficulty increases

Engineering Contradiction:
Improvelanguage flexibilityVSAvoidintegration complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The Core API provides a universal interface that works across multiple scripting languages (Python, Ruby, Jython, JRuby and domain-specific languages). It defines a common set of interfaces for language constructs like functions, classes, instances, and modules, allowing the same Core API to handle calls from any supported language without requiring separate integration logic for each language pair.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Adaptability or versatility

If engineers learn multiple scripting languages, then code compatibility is improved, but learning time and skill requirement increase

Engineering Contradiction:
Improvelanguage compatibilityVSAvoidlearning time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The Core API creates a standardized copy of language construct interfaces that can be invoked from any scripting language. Instead of requiring engineers to learn multiple languages, the Core API provides a consistent interface model that copies the same set of methods and behaviors across all language implementations, allowing engineers to write code once in one language and invoke it from another through the standardized Core API.

Inventive Principle:
Principle #26Copying

Data Source

PatentEP2587372B1Sharing of first class objects across multiple interpreted programming languages
Publication Date: 2020.04.29 THE BOEING CO
  • EP2587372B1 patent drawingFigure 1
  • EP2587372B1 patent drawingFigure 2
  • EP2587372B1 patent drawing

AI summary

Systems and methods are disclosed for enabling users to write scripting code in a first scripting language, and then use a second scripting language to call language constructs written in that first scripting language. Functions, Class Definitions, Class Instances, Modules and other language constructs are treated as first-class objects that can be shared across the different scripting languages. The techniques disclosed herein are also applicable to domain-specific languages. As part of the methodology, a respective underlying representation of each of these object types is designed as an interface and then that interface is implemented in each scripting language. In addition, code is written in each scripting language implementation to allow the latter to use the interface to represent a Function, Class, or other language construct.