Machine Learning Code Translation Using Generative Adversarial Networks

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The transition between different programming languages in software development is hindered by the lack of talent pools and the time-consuming process of replatforming, as companies struggle to adapt their code bases to new languages due to the expertise gap within their existing talent pools.

Innovation Solution

The use of machine learning techniques, specifically generative adversarial networks (GANs), to translate source code from a base programming language to a target language, allowing for the generation of human-readable code, even for developers unfamiliar with the base language, by training generators and discriminators to produce synthetically-naturalistic code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If companies hire new programmers trained in the target programming language, then the code base can be migrated to the target language, but hiring costs are expensive

Engineering Contradiction:
Improveprogramming language capabilityVSAvoidhiring cost
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent uses machine learning models to copy and translate source code from a base programming language to a target programming language. The generator creates synthetic code that mimics human-written code in the target language, eliminating the need to hire new programmers with specific language skills while achieving the same codebase migration goal

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent replaces the mechanical process of human learning and manual code rewriting with an automated machine learning system. The GAN-based translator automatically converts code between languages, substituting the need for human trainers or new hires with an automated translation mechanism

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Adaptability or versatility

If companies train existing employees to program in the target programming language, then the talent pool adapts to the target language, but training is expensive and time-consuming

Engineering Contradiction:
Improveprogramming language capabilityVSAvoidtraining time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent performs preliminary action by pre-training machine learning models on large datasets of source code in multiple programming languages. This advance preparation allows the system to instantly translate code without requiring time-consuming employee training, as the translation capability is already embedded in the trained model

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of copying knowledge to human brains through training, the system copies code patterns and language structures directly through machine learning. The generator learns to replicate human-written code characteristics in the target language, achieving language adaptation without human training time

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If companies replatform and migrate a code base to a new programming language, then the code base uses the target language, but the process is time-consuming and takes time away from software development

Engineering Contradiction:
Improveprogramming language compatibilityVSAvoidsoftware development speed
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent replaces the manual, time-consuming mechanical process of code migration with an automated machine learning system. The GAN-based translator performs bulk code translation across the entire codebase simultaneously, maintaining productivity by eliminating the need for manual rewriting while achieving language migration

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The system performs preliminary action by pre-processing and understanding the base language code structure through the trained generator model before translation. This advance preparation enables rapid, accurate translation of large codebases without disrupting the normal software development timeline

Inventive Principle:
Principle #10Preliminary action

4Productivity

If programmers use scripting languages like Python for quick functional software development, then software can be turned around quickly, but programmers must be expert in that specific language

Engineering Contradiction:
Improvesoftware development speedVSAvoidprogramming language expertise
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal machine learning system that handles multiple programming languages through a single generator model. The system can translate between different language pairs (e.g., Python to Java, JavaScript to C#) without requiring separate specialized tools, making the translation capability universally applicable across different scripting and compiled languages

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

Solution Approach 2:

The generator copies the functional behavior and logic from source code in one language to target code in another language while preserving the quick development advantage. By copying the computational logic rather than requiring programmers to manually rewrite it, the system maintains rapid development speed while enabling cross-language portability

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11842174B2Translating between programming languages using machine learning
Publication Date: 2023.12.12 GOOGLE LLC
  • US11842174B2 patent drawing
  • US11842174B2 patent drawing
  • US11842174B2 patent drawing

AI summary

Techniques are described herein for translating source code in one programming language to source code in another programming language using machine learning. In various implementations, one or more components of one or more generative adversarial networks, such as a generator machine learning model, may be trained to generate “synthetically-naturalistic” source code that can be used as a translation of source code in an unfamiliar language. In some implementations, a discriminator machine learning model may be employed to aid in training the generator machine learning model, e.g., by being trained to discriminate between human-generated (“genuine”) and machine-generated (“synthetic”) source code.