IP Library Granted Patent US 9,047,095
Granted Patent B2
US 9,047,095 · App. 13/181,038 · Granted Jun 2, 2015

Embedding of a non-imperative programming language for data transformation operations within an imperative programming language

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,047,095
App. No.
13/181,038
Granted
Jun 2, 2015
Kind
B2
Abstract

In an embodiment, a method of computer program compilation is presented. In this method, a compiler for a first programming language is provided. In one example, the first programming language allows a data assignment to depend on a result of a previous data assignment. Source code including a first portion written in the first programming language and a second portion written in a second programming language is accessed, with the second portion representing a data transformation from a first data structure accessible in the first portion to a second data structure accessible in the first portion. In one example, the second programming language prevents a data assignment that depends on a result of a previous data assignment. The source code is compiled using the compiler to generate executable code to be executed by an engine for the first programming language, which includes an interpretation engine to interpret the second portion.

Claims (46)

1. A method executable by a processor of a computing system, the method comprising:

providing a compiler for a first programming language, the first programming language allowing a data assignment to depend on a result of a previous data assignment;

accessing in the computing system source code comprising a first portion written in the first programming language and a second portion written in a second programming language, the second programming language preventing a data assignment that depends on a result of a previous data assignment, the second portion comprising a data transformation from a first data structure accessible in the first portion to a second data structure accessible in the first portion;

compiling the source code on the computing system using the compiler to generate executable code to be executed by an engine for the first programming language, the engine for the first programming language comprising an interpretation engine to interpret the second portion during execution of the executable code;

designating each node of the first data structure referenced in the second portion as a read-only node for execution;

designating each node of the second data structure referenced in the second portion as either a read-only node or a write-only node for execution;

designating each sub-node of a read-only node of the second data structure as a read-only node for execution; and

designating each sub-node of a write-only node of the second data structure as a write-only node for execution.

2. The method of claim 1 , the interpretation engine to:

identify a first node of the first data structure as a base node for a result component of a data assignment specified in the second portion; and

identify a second node of the second data structure as a base node for a source component of the data assignment specified in the second portion.

3. The method of claim 2 , the first node and the second node being determined by a context of the data assignment within the second portion.

4. The method of claim 1 , the interpretation engine to generate an evaluation tree representing logic of the second portion.

5. The method of claim 4 , the interpretation engine to optimize the evaluation tree based on each data assignment in the second portion not depending on a result of a previous data assignment in the second portion.

6. The method of claim 5 , the optimization of the evaluation tree comprising parallelizing at least two data assignments represented in the evaluation tree.

7. The method of claim 1 , the executable code to instantiate an object of a class defined in an object-oriented library, the object comprising programming logic of the second portion.

8. The method of claim 1 , the second portion comprising a character string representing programming logic of the second portion, the second portion being recognized as a character string according to the first programming language.

9. The method of claim 1 , the second programming language comprising an explicit serialization command specifying an order of execution between a first data assignment and a second data assignment.

10. A system, comprising:

at least one processor;

a compiler, executable on the at least one processor, for a first programming language, the first programming language allowing a data assignment to depend on a result of a previous data assignment; and

a receiving module, executable on the at least one processor, to receive source code comprising a first portion written in the first programming language and a second portion written in a second programming language, the second programming language preventing a data assignment that depends on a result of a previous data assignment, the second portion comprising a data transformation from a first data structure accessible in the first portion to a second data structure accessible in the first portion;

the compiler to compile the source code to generate executable code to be executed by an engine for the first programming language, the engine for the first programming language comprising an interpretation engine configured to:

interpret the second portion during execution of the executable code;

designate each node of the first data structure referenced in the second portion as a read-only node for execution;

designate each node of the second data structure reference in the second portion as either a read-only node or a write-only node for execution;

designate each sub-node of a read-only node of the second data structure as a read-only node for execution; and

designate each sub-node of a write-only node of the second data structure as a write-only node for execution.

11. The system of claim 10 , further comprising a library module comprising code representing the interpretation engine.

12. The system of claim 11 , the executable code to instantiate an object of a class defined in the library module for the second portion.

13. The system of claim 10 , the interpretation engine to:

identify a first node of the first data structure as a base node for a result component of a data assignment specified in the second portion; and

identify a second node of the second data structure as a base node for a source component of the data assignment specified in the second portion.

14. The system of claim 13 , the first node and the second node being determined by a context of the data assignment within the second portion.

15. The system of claim 10 , the interpretation engine to generate an evaluation tree representing logic of the second portion.

16. The system of claim 15 , the interpretation engine to optimize the evaluation tree based on each data assignment in the second portion not depending on a result of a previous data assignment in the second portion.

17. The system of claim 16 , the optimization of the evaluation tree comprising parallelizing at least two data assignments represented in the evaluation tree.

18. The system of claim 10 , the second programming language comprising an explicit serialization command specifying an order of execution between a first data assignment and a second data assignment.

19. A non-transitory computer-readable storage medium comprising instructions that, when executed on at least one processor of a machine, cause the machine to perform operations comprising:

accessing in a computing system source code comprising a first portion written in a first programming language and a second portion written in a second programming language, the second portion comprising a data transformation from a first data structure accessible in the first portion to a second data structure accessible in the first portion, the first programming language allowing a data assignment to depend on a result of a previous data assignment, and the second programming language preventing a data assignment that depends on a result of a previous data assignment; and

compiling the source code on the computing system using a compiler for the first programming language to generate executable code to be executed by an engine for the first programming language, the engine for the first programming language comprising an interpretation engine to:

interpret the second portion during execution of the executable code;

designate each node of the first data structure referenced in the second portion as a read-only node for execution;

designate each node of the second data structure reference in the second portion as either a read-only node or a write-only node for execution;

designate each sub-node of a read-only node of the second data structure as a read-only node for execution; and

designate each sub-node of a write-only node of the second data structure as a write-only node for execution.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2011
From: BOHLMANN, KARSTEN; BRESCH, STEFAN; WALTER, WELF; BOEHM, THILO
To: SAP AG
Reel/Frame 026579/0283 →