DE102016202484A1 - Method, apparatus and system for generating a compilation - Google Patents
Method, apparatus and system for generating a compilation Download PDFInfo
- Publication number
- DE102016202484A1 DE102016202484A1 DE102016202484.1A DE102016202484A DE102016202484A1 DE 102016202484 A1 DE102016202484 A1 DE 102016202484A1 DE 102016202484 A DE102016202484 A DE 102016202484A DE 102016202484 A1 DE102016202484 A1 DE 102016202484A1
- Authority
- DE
- Germany
- Prior art keywords
- class
- subclass
- public
- file
- internal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Abstract
Die bisher bekannte Trennung von Implementierung und Schnittstelle beim Programmieren führt zu ineffizienter Speichernutzung, unnötigen Übersetzungsschritten und Netzwerkbelastungen. Erfindungsgemäß wird das Problem gelöst durch ein Verfahren zur Erzeugung eines Kompilats (30) in einer Entwicklungsumgebung (60) mit: – einer Benutzerklasse (61) mit zumindest einer Definition umfassend eine Definition zumindest eines Klassenmembers der Benutzerklasse (61); – einer Teilklasse (62), wobei die Teilklasse (62) zumindest einen internen Klassenmember (63) und zumindest einen öffentlichen Klassenmember (64) aufweist; und – zumindest einer öffentlichen Datei (41, 51, 51‘), die eine Deklaration von zumindest einem öffentlichen Klassenmember (66) der Teilklasse (62) enthält, wobei die öffentliche Datei (41, 51, 51‘) keine Deklaration von dem internen Klassenmember (63) der Teilklasse (61) enthält, wobei das Verfahren die Schritte aufweist: – Einbinden des öffentlichen Klassenmembers (66) der Teilklasse (62) und/oder einer Referenz auf eine Objektinstanz der Teilklasse (62) in der Definition der Benutzerklasse (61); – Erzeugen eines Kompilats (67) von der Benutzerklasse (61) unter Bezugnahme der Definition der Benutzerklasse (61) und der öffentlichen Datei (41, 51, 51‘).The previously known separation of implementation and interface in programming leads to inefficient memory usage, unnecessary translation steps and network loads. According to the invention, the problem is solved by a method for creating a compilation (30) in a development environment (60) comprising: - a user class (61) having at least one definition comprising a definition of at least one class member of the user class (61); A subclass (62), the subclass (62) having at least one internal class member (63) and at least one public class member (64); and at least one public file (41, 51, 51 ') containing a declaration of at least one public class member (66) of the subclass (62), wherein the public file (41, 51, 51') is not a declaration of the internal Class member (63) of the subclass (61), the method comprising the steps of: - incorporating the public class member (66) of the subclass (62) and / or a reference to an object instance of the subclass (62) in the definition of the user class ( 61); - generating a compilation (67) from the user class (61) with reference to the definition of the user class (61) and the public file (41, 51, 51 ').
Description
Die Erfindung betrifft ein Verfahren zur Erzeugung eines Kompilats, eine entsprechende Vorrichtung und ein System. The invention relates to a method for generating a compilation, a corresponding device and a system.
Moderne Programmiersprachen, insbesondere objektorientierte Programmiersprachen, sehen eine Vielzahl von Abstraktionsmechanismen vor, um die logischen und funktionellen Bestandteile eines Programms zu trennen. Solch eine Trennung von Programmteilen ist aus verschiedenen Gründen wünschenswert. So ist zum einen eine erhöhte Übersichtlichkeit über die einzelnen Programmkomponenten gewährleistet, da die Quellcodedateien nur logisch zusammengehörende Komponenten aufweisen. Zum anderen wird es möglich, dass bei der Durchführung von Änderungen nicht unnötig große Dateien anderen Entwicklern zur Verfügung gestellt werden müssen. Letzteres kann sonst zu unnötigem Kompilieren von Quellcode führen. Modern programming languages, especially object-oriented programming languages, provide a variety of abstraction mechanisms to separate the logical and functional components of a program. Such a separation of program parts is desirable for various reasons. On the one hand, an increased clarity over the individual program components is ensured since the source code files have only logically associated components. On the other hand, it is possible that when making changes, unnecessarily large files need not be made available to other developers. The latter can otherwise lead to unnecessary compilation of source code.
So ist es in der Programmiersprache C++ üblich, die Deklaration von Klassenmembern (z.B. Methoden oder Eigenschaften) einer Klasse in sogenannte Headerdateien auszulagern. Der Begriff Deklaration („Declaration“) wird im Folgenden verwendet, wie er im Entwurf des C++
Ein Design wie oben beschrieben, ist in
Objektorientierte Programmiersprachen wie C++ unterscheiden zwischen „private“ und „public“ Klassenmembern. Im Folgenden werden die Begriffe „private“ und „public“ Klassenmember so verstanden, wie sie im C++ Entwurf N4567 im Abschnitt 11 definiert sind. „Private“ Klassenmember können dabei nur durch die Klasse bzw. Klassenmember der Klasse verwendet werden, in der die „private“ Klassenmember definiert sind. Die „public“ Klassenmember können hingegen auch von außerhalb der Klasse verwendet werden. Object-oriented programming languages such as C ++ distinguish between "private" and "public" class members. In the following, the terms "private" and "public" class members are understood as defined in
Nach Stand der Technik ist es nicht möglich „private“ und „public“ Klassenmember einer Klasse zu trennen, d.h. diese müssen alle in der gleichen Headerdatei deklariert sein. Informationen über die „private“ Klassenmember sind jedoch nur für die Programmierer notwendig, die einen Konstruktor-Aufruf oder einen Kopiervorgang ausführen müssen. Dabei muss der Compiler Informationen über die Größe der Klasse zur Verfügung haben. Alle anderen Klassen, die nur Referenzen auf Klasseninstanzen der Klasse verwenden oder „public“ Methoden der Klasse, mit Ausnahme von Konstruktoren, aufrufen, benötigen keine Informationen über die als „private“ deklarierten Klassenmember. Trotzdem sind Informationen über die „private“ Klassenmember wegen des „#include“ Mechanismus und der vorgenannten unmöglichen Trennung immer vorhanden. Klassen, die nur Referenzen auf eine und/oder auf eine Vielzahl an Klasseninstanzen der Klasse verwenden oder „public“ Methoden der Klasse, mit Ausnahme von Konstruktoren, aufrufen, werden im Folgenden als „Benutzerklasse“ bezeichnet. According to the prior art, it is not possible to separate "private" and "public" class members of a class, i. they must all be declared in the same header file. However, information about the "private" class members is only necessary for programmers who need to perform a constructor call or copy operation. The compiler needs to have information about the size of the class. All other classes that use only references to class instances of the class or that call "public" methods of the class, with the exception of constructors, do not need information about the class members declared as "private". Nevertheless, information about the "private" class members is always present because of the "#include" mechanism and the aforementioned impossible separation. Classes that use only references to one and / or a plurality of class instances of the class, or that call public methods of the class, with the exception of constructors, are hereafter referred to as "user class."
Der beschriebene Mechanismus hat den großen Nachteil, dass bei Änderungen an nicht verwendeten Klassenmembern alle Benutzerklassen trotzdem neu übersetzt werden müssen. Dieses Problem kann die Übersetzungszeit deutlich verlängern. Der Effekt tritt insbesondere auf, wenn die Deklaration der Klassenmember noch zusätzlich die Verarbeitung von weiteren „#include“ Anweisungen und somit Informationen aus anderen Headerdateien benötigt. Insgesammt führen die beschriebenen Effekte zu einem verlängerten Entwicklungszyklus und erhöhten Entwicklungskosten, zum Beispiel, weil Testläufe nicht in einer wünschenswerten Frequenz durchgeführt werden können. The mechanism described has the great disadvantage that when changing to unused class members all user classes still need to be recompiled. This problem can significantly increase the translation time. In particular, the effect occurs when the declaration of the class members additionally requires the processing of further "#include" statements and thus information from other header files. Taken together, the described effects lead to a prolonged development cycle and increased development costs, for example because test runs can not be performed at a desirable frequency.
Im Stand der Technik werden diese Probleme nur teilweise gelöst. Einen möglichen Ansatz zur Trennung der Deklaration von der Implementierung von Klassenmembern stellt das Entwurfsmuster „Handle/Body“
Mit dem beschriebenen Ansatz wird also eine komplette Abstraktion der Schnittstelle von ihrer Implementierung erreicht. Nachteilig an dem gezeigten Ansatz ist, dass jede Instanz der „Handle“-Klasse
- – zusätzlicher Speicherverbrauch, wegen des Speicherplatzes für den
Zeiger 15 , und - – zusätzliche CPU Belastung, wegen der Dereferenzierung des
Zeigers 15 zur Laufzeit.
- - Additional memory consumption, because of the memory space for the
pointer 15 , and - - additional CPU load, due to the dereferencing of the
pointer 15 at runtime.
Einen anderen möglichen Ansatz bietet lediglich Polymorphismus
Diese zusätzlichen Kosten könnten insbesondere in Embedded Systemen bedeutungsvoll sein, weil ein zusätzlicher Speicherverbrauch und eine zusätzliche CPU Belastung ein teureres Steuergerät erforderlich machen können. Dieses verursacht ein teureres Endprodukt. These additional costs could be significant, especially in embedded systems, because additional memory consumption and CPU overhead may require a more expensive controller. This causes a more expensive end product.
Ausgehend von dem beschriebenen Stand der Technik stellt sich die Aufgabe, eine Vorrichtung, ein Verfahren und ein System bereitzustellen, welches die genannten Nachteile adressiert. Dabei soll insbesondere der Speicherverbrauch gesenkt werden, und die Übersetzungszeit reduziert werden. Insbesondere soll ein Verfahren bereitgestellt werden, welches die Kompilierzeit und/oder die Prä-Prozessorverarbeitung und/oder die Linkerverarbeitung verkürzt. Starting from the described prior art, the object is to provide a device, a method and a system which addresses the disadvantages mentioned. In particular, the memory consumption is to be reduced, and the translation time can be reduced. In particular, a method is to be provided which shortens the compilation time and / or the preprocessing processing and / or the linker processing.
Diese Aufgabe wird gelöst durch ein Verfahren gemäß Anspruch 1, eine Vorrichtung gemäß Anspruch 8 und ein System gemäß Anspruch 12. This object is achieved by a method according to
Insbesondere wird die Aufgabe durch ein Verfahren zur Erzeugung eines Kompilats in einer Entwicklungsumgebung gelöst, wobei die Entwicklungsumgebung eine Benutzerklasse mit zumindest einer Definition aufweist, umfassend eine Definition zumindest eines Klassenmembers der Benutzerklasse. Ferner weist die Entwicklungsumgebung eine Teilklasse auf, wobei die Teilklasse zumindest einen internen Klassenmember und zumindest einen öffentlichen Klassenmember aufweist. Darüber hinaus ist zumindest eine öffentliche Datei vorgesehen, die eine Deklaration von zumindest einem öffentlichen Klassenmember der Teilklasse enthält, wobei die öffentliche Datei keine Deklaration von dem internen Klassenmember der Teilklasse enthält. In particular, the object is achieved by a method for generating a compilation in a development environment, the development environment having a user class with at least one definition comprising a definition of at least one class member of the user class. Furthermore, the development environment has a subclass, wherein the subclass has at least one internal class member and at least one public class member. In addition, at least one public file is provided that contains a declaration from at least one public class member of the subclass, where the public file does not contain a declaration from the subclass's internal class member.
Das Verfahren weist die folgenden Schritte auf:
- – Einbinden des öffentlichen Klassenmembers der Teilklasse und/oder einer Referenz auf eine Objektinstanz der Teilklasse in der Definition der Benutzerklasse; und
- – Erzeugen eines Kompilats von der Benutzerklasse unter Bezugnahme der Definition der Benutzerklasse und der öffentlichen Datei.
- - Including the public class member of the subclass and / or a reference to an object instance of the subclass in the definition of the user class; and
- Generating a compilation from the user class with reference to the definition of the user class and the public file.
Die Entwicklungsumgebung umfasst somit zwei Klassen, wobei die Benutzerklasse Methoden enthalten kann, die eine Objektinstanz der Teilklasse referenziert. Eine Klasse kann als ein Bauplan bzw. ein abstraktes Modell für eine Reihe von ähnlichen Objektinstanzen in einer objektorientierten Programmiersprache verstanden werden. Zum Beispiel kann in einer Methode der Benutzerklasse die Adresse einer Objektinstanz der Teilklasse als Parameter übergeben werden. Innerhalb der Methode kann dann auf die öffentlichen Klassenmember der Teilklasse, die in der öffentlichen Datei deklariert sind, zugegriffen werden. Die öffentliche Datei wirkt also als eine Art öffentliche Schnittstelle zwischen der Benutzerklasse und der Teilklasse. Dabei ist der Begriff öffentliche Datei nicht einschränkend gemeint. Öffentlich beschreibt, dass die Datei zum Austausch zwischen Programmierern bzw. Programmteilen gedacht ist. Eine Datei kann ein Bestand zusammengehörender Daten sein, der auf einem Speichermedium gespeichert sein kann. Öffentlich Klassenmember können demnach Klassenmember einer Klasse sein, die zusammen eine öffentliche Schnittstelle bilden. Der Name „Teilklasse“ ist nicht einschränkend zu verstehen, sondern bedeutet lediglich, dass die Teilklasse über eine öffentliche Schnittstelle, insbesondere in Form einer öffentlichen Datei, verfügt. The development environment thus includes two classes, where the user class may include methods that reference an object instance of the subclass. A class can be understood as a blueprint or an abstract model for a number of similar object instances in an object-oriented programming language. For example, in a user class method, the address of an object instance of the subclass can be passed as a parameter. Within the method, the public class members of the subclass declared in the public file can then be accessed. The public file thus acts as a kind of public interface between the user class and the subclass. The term public file is not meant to be limiting. Publicly describes that the file is intended for exchange between programmers or program parts. A file may be a collection of related data that may be stored on a storage medium. Public class members can therefore be class members of a class that together form a public interface. The name "Subclass" is not meant to be limiting, but merely means that the subclass has a public interface, particularly in the form of a public file.
Die öffentliche Datei umfasst jedoch nicht die Deklaration von internen Klassenmembern der Teilklasse. Es wird also eine Schnittstelle für die Benutzerklasse bereitgestellt, die eine wirkliche Trennung von internen und öffentlichen Klassenmembern der Teilklasse erlaubt. Es ist zu beachten, dass hier eine neue Abstraktionsebene eingeführt wird, die sich von den klassischen Klassenmember-Zugriffsmechanismen („public“, „private“, „protected“) unterscheidet. Der Begriff „intern“ ist dabei nicht als einschränkend anzusehen. „Intern“ kann zumindest alle Klassenmember umfassen, die entweder als „private“ deklariert sind und/oder bei deren Zugriff sämtliche Informationen über eine Klasse benötigt werden, wie z.B. beim Aufruf eines Klassenkonstruktors. Um die Größe des Rückgabewertes (also einer Klasseninstanz) des Klassenkonstruktors zu berechnen, ist es nämlich erforderlich, die Größe der Klasseninstanz bestimmen zu können. Interne Klassenmember können also als „public“ sowie als „private“ deklarierte Klassenmember sein. However, the public file does not include the declaration of internal class members of the subclass. Thus, an interface is provided for the user class that allows a true separation of internal and public class members of the subclass. It should be noted that here a new level of abstraction is introduced, which differs from the classic class member access mechanisms ("public", "private", "protected"). The term "internal" is not to be considered as limiting. "Internal" may include at least all class members that are either declared as "private" and / or whose access requires all the information about a class, such as: when calling a class constructor. In fact, to calculate the size of the return value (that is, a class instance) of the class constructor, it is necessary to be able to determine the size of the class instance. Internal class members can therefore be declared public as well as private class members.
Ein Kompilat kann eine Einheit von Instruktionen sein, die in einer Zielsprache codiert sind, beispielsweise Maschinencode, der durch einen Prozessor ausgeführt werden kann. Es sind aber auch weitere Zielsprachen möglich, wie z.B. Java Bytecode oder die .Net Zwischensprache CIL (Common Intermediate Language). A compilation may be a unit of instructions encoded in a target language, such as machine code, that may be executed by a processor. But there are also other target languages possible, such. Java bytecode or the .Net intermediate language CIL (Common Intermediate Language).
Insbesondere kann ein Kompilat als eine Datei auf einem Speichermedium gespeichert sein. In particular, a compilation may be stored as a file on a storage medium.
In einer weiteren Ausführungsform der Erfindung kann das Verfahren das Erzeugen eines zweiten Kompilats der Teilklasse unter Bezugnahme der öffentlichen Datei und einer Deklaration des internen Klassenmembers umfassen, wobei das erste Kompilat zumindest teilweise auf einer ersten Recheneinheit und das zweite Kompilat zumindest teilweise auf einer zweiten Recheneinheit erzeugt wird. In a further embodiment of the invention, the method may comprise generating a second compilation of the subclass with reference to the public file and a declaration of the internal class member, wherein the first compilation is generated at least partially on a first arithmetic unit and the second compilation at least partially on a second arithmetic unit becomes.
Es ist möglich, ein Kompilat der Teilklasse unter Bezugnahme der öffentlichen Datei und eines internen Klassenmembers zu erzeugen. Es werden also zum Kompilieren der Teilklasse mehr Informationen benötigt als zum Kompilieren der Benutzerklasse. Daraus folgt, dass wenn die Kompilate auf unterschiedlichen Recheneinheiten erzeugt werden, auf den Recheneinheiten unterschiedliche Dateien benötigt werden. Zum Beispiel können auf der ersten Recheneinheit nur die Benutzerklasse und die öffentliche Datei vorhanden sein, und auf der zweiten Recheneinheit die Teilklasse, die öffentliche Datei und die Deklaration des internen Klassenmembers. Kommt es im Folgenden zu Änderungen an der öffentlichen Datei auf der zweiten Recheneinheit, so muss zum Kompilieren der Benutzerklasse nur die öffentliche Datei der ersten Recheneinheit zur Verfügung gestellt werden. Die Notwendigkeit von übermäßigem Dateiaustausch zwischen den Recheneinheiten wird also reduziert. Insbesondere, wenn der interne Klassenmember geändert wird, ist gar kein Dateiaustausch notwendig. It is possible to create a compile of the subclass by referring to the public file and an internal class member. More information is needed to compile the subclass than compiling the user class. It follows that if the compilations are generated on different arithmetic units, different files are needed on the arithmetic units. For example, only the user class and the public file may be present on the first arithmetic unit and the subclass, the public file and the declaration of the internal class member on the second arithmetic unit. If changes to the public file on the second arithmetic unit occur in the following, only the public file of the first arithmetic unit must be made available for compiling the user class. The need for excessive file exchange between the arithmetic units is thus reduced. In particular, when the internal class member is changed, no file exchange is necessary.
In einer weiteren Ausführungsform kann das Verfahren ein Erzeugen eines ausführbaren Programms durch einen Linker umfassen, der dazu ausgebildet ist, das erste Kompilat und das zweite Kompilat zu verbinden. In another embodiment, the method may include generating an executable program by a linker configured to connect the first compilation and the second compilation.
Ein Linker kann dazu verwendet werden, die einzelnen Kompilate zu einem ausführbaren Programm zusammenzuführen. Dabei kann eine Namensauflösung durchgeführt werden, die unter anderem dazu führt, dass jeder Methodenaufruf und jede Variablenverwendung einer richtigen Speicheradresse zugeordnet werden. Es findet eine Umwandlung von symbolischen Speicheradressen zu richtigen Speicheradressen statt. A linker can be used to merge the individual compilations into one executable program. This can be done a name resolution, which among other things, that each method call and each variable usage are assigned to a correct memory address. There is a conversion of symbolic memory addresses to correct memory addresses.
In einer Ausführungsform kann das Verfahren ferner eine Zuordnung einer internen Datei zu der Teilklasse umfassen, wobei in der internen Datei die öffentliche Datei als Deklarationsort für öffentliche Klassenmember der Teilklasse spezifiziert ist und der Schritt der Erzeugung des zweiten Kompilats weiter ein Zuordnen des Deklarationsorts des öffentlichen Klassenmembers zu einer Implementierung der Teilklasse unter Verwendung der internen Datei umfasst. In one embodiment, the method may further comprise associating an internal file with the subclass, wherein in the internal file the public file is specified as a subclass public class member declaring location, and the step of generating the second compilation further comprises associating the public class member declaring location to an implementation of the subclass using the internal file.
Es kann also eine interne Datei der Teilklasse zugeordnet sein, wobei durch die interne Datei auf die öffentliche Datei Bezug genommen werden kann. Während der Erzeugung eines Kompilats kann also mittels der internen Datei eine Zuordnung der öffentlichen Klassenmember zu der Implementierung der öffentlichen Klassenmember hergestellt werden. Dabei kann die öffentliche Datei so ausgestaltet sein, dass in dieser keinerlei Informationen über die Implementierung bereitgestellt werden. Lediglich die interne Datei bezieht sich auf die öffentliche Datei. Es liegt also eine saubere Trennung der einzelnen Abstraktionsebenen vor. Thus, an internal file of the subclass can be assigned, whereby the internal file can refer to the public file. During the creation of a compilation, an allocation of the public class members to the implementation of the public class members can thus be established by means of the internal file. In this case, the public file can be designed in such a way that no information about the implementation is provided in it. Only the internal file refers to the public file. So there is a clean separation of the individual levels of abstraction.
In einer weiteren Ausführungsform kann die Entwicklungsumgebung eine zweite öffentliche Datei aufweisen, wobei die zweite öffentliche Datei eine Deklaration von zumindest einem zweiten öffentlichen Klassenmember der Teilklasse enthält, der sich von dem zumindest einen öffentlichen Klassenmember zumindest teilweise unterscheidet. Darüber hinaus kann die Entwicklungsumgebung eine zweite Benutzerklasse umfassen, die unter Verwendung der zweiten öffentlichen Datei eine Referenz auf eine Objektinstanz der Teilklasse verwendet. Das Verfahren kann dann weiter das Erzeugen eines dritten Kompilats von der zweiten Benutzerklasse unter Verwendung der zweiten öffentlichen Datei aufweisen. In another embodiment, the development environment may include a second public file, wherein the second public file includes a declaration of at least a second public class member of the subclass that is at least partially different from the at least one public class member. In addition, the development environment may include a second user class that uses the second public file to reference an object instance of the subclass. The method may then further include generating a third compilation from the second user class using the second public file.
Der Teilklasse können also auch mehrere öffentliche Dateien zugeordnet sein, wobei die öffentlichen Dateien unterschiedliche Deklarationen von öffentlichen Klassenmembern umfassen. Damit werden unterschiedliche öffentliche Schnittstellen der Teilklasse zur Verwendung durch Benutzerklassen angeboten, die je nach Anwendungsfall ausgewählt werden können. Zum Beispiel könnte eine erste öffentliche Datei eine erste Teilmenge von öffentlichen Klassenmembern, wie z.B. Methoden, deklarieren und die zweite öffentliche Datei könnte eine zweite Teilmenge von öffentlichen Klassenmembern deklarieren. Je nachdem, welche Methoden oder andere öffentlichen Klassenmember eine Benutzerklasse benötigt, können unterschiedliche öffentliche Dateien eingebunden werden. Dies führt weiter zu einem verbesserten Programmdesign, da eine Benutzerklasse genau solche öffentliche Klassenmember einbinden kann, die sie benötigt. Die Anzahl unnötiger Kompiliervorgänge wird also weiter reduziert, da eine Benutzerklasse nur dann neu kompiliert werden muss, wenn sich die verwendete öffentliche Datei oder die Benutzerklasse ändert. The subclass may also have multiple public files associated with it, with the public files containing different declarations of public class members. This offers different public interfaces of the subclass for use by user classes, which can be selected depending on the application. For example, a first public file could include a first subset of public class members, such as a. Declare methods, and the second public file could declare a second subset of public class members. Depending on which methods or other public class members require a user class, different public files can be included. This further leads to improved program design, as a user class can include exactly those public class members it needs. The number of unnecessary compile-time operations is thus further reduced, because a user class only has to be recompiled if the public file or user class used changes.
In einer weiteren Ausführungsform kann die interne Datei einen Bezeichner aufweisen, wobei der Bezeichner dazu verwendet werden kann, um die Deklaration des zumindest einen öffentlichen Klassenmembers der Teilklasse zuzuordnen. In another embodiment, the internal file may include an identifier, where the identifier may be used to associate the declaration of the at least one public class member with the subclass.
Es ist somit möglich, dass die interne Datei festlegt, welche Deklarationen der öffentlichen Klassenmember der Teilklasse zugeordnet werden sollen. Es können also nicht ohne weiteres zusätzliche öffentliche Dateien definiert werden, ohne die interne Datei zu verändern. Dies hat den Vorteil, dass externe Programmierer nicht ohne Zustimmung des Programmierers der internen Datei neue öffentliche Schnittstellen zur Verfügung stellen können. Dies ist vorteilhaft, da somit die Stabilität der Teilklasse durch den Programmierer der internen Datei sichergestellt werden kann. It is thus possible for the internal file to specify which declarations to associate with the public class members of the subclass. Thus, additional public files can not easily be defined without changing the internal file. This has the advantage that external programmers can not provide new public interfaces to the internal file without the consent of the programmer. This is advantageous, since thus the stability of the subclass can be ensured by the programmer of the internal file.
Die Aufgabe wird ferner durch ein computerlesbares Speichermedium gelöst, das Instruktionen aufweist, die zumindest einen Prozessor dazu veranlassen, das beschriebene Verfahren zu implementieren, wenn die Instruktion durch den bzw. die Prozessor/en ausgeführt werden. The object is further achieved by a computer-readable storage medium having instructions that cause at least one processor to implement the described method when the instruction is executed by the processor (s).
Des Weiteren wird die Aufgabe gelöst durch eine Vorrichtung zur Erzeugung eines Kompilats, Folgendes aufweisend:
- – eine Benutzerklasse;
- – eine Teilklasse, wobei die Teilklasse zumindest einen internen Klassenmember und zumindest einen öffentlichen Klassenmember aufweist; und
- – eine öffentliche Datei, die eine Deklaration von zumindest einem öffentlichen Klassenmember der Teilklasse enthält, wobei die öffentliche Datei nicht eine Deklaration von dem internen Klassenmember der Teilklasse enthält;
- – einen Compiler, der dazu ausgebildet ist, unter Verwendung der öffentlichen Datei ein Kompilat der Benutzerklasse zu erzeugen, und wobei die Benutzerklasse auf eine Referenz auf eine Objektinstanz der Teilklasse Bezug nimmt.
- A user class;
- A subclass, the subclass having at least one internal class member and at least one public class member; and
- A public file containing a declaration of at least one public class member of the subclass, the public file not containing a declaration from the subclass's internal class member;
- A compiler adapted to generate a user class compilation using the public file, and wherein the user class references a reference to an object instance of the subclass.
In einer Ausführungsform kann der Compiler dazu ausgebildet sein, unter Verwendung der öffentlichen Datei und einer Deklaration des zumindest einen internen Klassenmembers, ein zweites Kompilat der Teilklasse zu erzeugen. In one embodiment, the compiler may be configured to generate a second compilation of the subclass using the public file and a declaration of the at least one internal class member.
In einer weiteren Ausführungsform kann die Vorrichtung ferner eine interne Datei aufweisen, die der Teilklasse zugeordnet ist, wobei in der internen Datei die öffentliche Datei als ein Deklarationsort für öffentliche Klassenmember der Teilklasse spezifiziert ist. Dabei kann bzw. können der Compiler und/oder Linker weiter dazu ausgebildet sein, den Deklarationsort der öffentlichen Klassenmember einer Implementierung der Teilklasse zuzuordnen. In another embodiment, the device may further comprise an internal file associated with the subclass, wherein in the internal file the public file is specified as a subclass public class member declaration location. In this case, the compiler and / or linker can also be designed to assign the declaration location of the public class members to an implementation of the subclass.
Es ergeben sich ähnliche oder identische Vorteile, wie dies bereits in Verbindung mit dem Verfahren beschrieben wurde. There are similar or identical advantages as already described in connection with the method.
In einer weiteren Ausführungsform kann der Compiler als ein C++ Compiler ausgebildet sein. Insbesondere kann ein Compiler ein Programm sein, das Quellcode von einer Ausgangssprache, vorzugsweise C++ Instruktionen, in eine Zielsprache, vorzugsweise Maschinencode, übersetzt. In another embodiment, the compiler may be implemented as a C ++ compiler. In particular, a compiler may be a program that translates source code from a source language, preferably C ++ instructions, into a target language, preferably machine code.
Insbesondere bei der Programmiersprache C++ treten die beschriebenen Effekte hervor. C++ bietet keine echte Trennung von der Schnittstelle und Implementierung einer Klasse, da dort (in der Datei), wo die öffentlichen Klassenmember einer Klasse deklariert werden, auch die internen Klassenmember einer Klasse deklariert werden müssen. Dies ist auch der Fall, wenn die internen Klassenmember einer Klasse nicht von einer Benutzerklasse benötigt werden. Especially with the programming language C ++, the described effects emerge. C ++ does not really separate from the interface and implementation of a class, because there (in the file), where the public class members of a class are declared, the internal class members of a class must also be declared. This is also the case if the internal class members of a class are not required by a user class.
In einer weiteren Ausführungsform kann der Compiler einen Prä-Prozessor umfassen. In another embodiment, the compiler may include a pre-processor.
Wenn der Compiler auch einen Prä-Prozessor umfasst, ist es möglich, sämtliche Schritte zur Erzeugung eines Programms mit der beschriebenen Vorrichtung durchzuführen. Durch eine Trennung der Deklaration in öffentliche und interne Klassenmember wird der Prä-Prozessor ferner effizient arbeiten, da die Größe der zu verarbeitenden Dateien reduziert wird. Insbesondere bei großen Programmen führt dies zu einem erheblichen Produktivitätsgewinn. If the compiler also includes a pre-processor, it is possible to perform all the steps of creating a program with the described device. By separating the declaration into public and internal class members, the pre-processor will also work efficiently, reducing the size of the files being processed. Especially for large programs, this leads to a significant productivity gain.
Die Aufgabe wird ferner durch ein System gelöst, welches umfasst:
- – einen Erstellungsprozessrechner, Folgendes aufweisend: – ein erstes ausführbares Programm, wobei das erste ausführbare Programm durch ein erstes Kompilieren einer Benutzerklasse und einer Teilklasse in einer ersten Version unter Verwendung einer öffentlichen Datei und einer internen Datei erzeugt ist, wobei – die Teilklasse in der ersten Version zumindest einen internen Klassenmember und zumindest einen öffentlichen Klassenmember aufweist; – die Benutzerklasse zumindest eine Referenz auf eine Objektinstanz der Teilklasse in der ersten Version aufweist; – die öffentliche Datei zumindest eine Deklaration von zumindest einem öffentlichen Klassenmember der Teilklasse in der ersten Version enthält, wobei die öffentliche Datei keine Deklaration von dem internen Klassenmember der Teilklasse in der ersten Version enthält; – die interne Datei zumindest eine Deklaration von zumindest einem internen Klassenmember der Teilklasse in der ersten Version enthält; – ein Empfangsmodul, das dazu ausgebildet ist, Quellcode von einer ersten Entwicklungsumgebung zu empfangen;
- – die erste Entwicklungsumgebung, Quellcode aufweisend, wobei – der Quellcode die Teilklasse in einer zweiten Version definiert; und – die Teilklasse in der zweiten Version zumindest einen internen Klassenmember aufweist, der von dem internen Klassenmember der Teilklasse in der ersten Version verschieden ist; wobei der Erstellungsprozessrechner dazu ausgebildet ist:
- – von der ersten Entwicklungsumgebung den Quellcode zum Empfangen; und
- – ein zweites ausführbares Programm durch ein zweites Kompilieren des Quellcodes erzeugt ist, nicht durch ein zweites Kompilieren der Benutzerklasse.
- A creation process computer, comprising: a first executable program, the first executable program being created by first compiling a user class and a subclass in a first version using a public file and an internal file, wherein: the subclass in the first Version has at least one internal class member and at least one public class member; The user class has at least one reference to an object instance of the subclass in the first version; The public file contains at least a declaration of at least one public class member of the subclass in the first version, the public file containing no declaration of the sub class's internal class member in the first version; The internal file contains at least a declaration of at least one internal class member of the subclass in the first version; A receiving module adapted to receive source code from a first development environment;
- The first development environment, having source code, wherein: the source code defines the subclass in a second version; and - the subclass in the second version has at least one internal class member different from the internal class member of the subclass in the first version; wherein the creation process computer is configured to:
- From the first development environment the source code for receiving; and
- - A second executable program is created by a second compilation of the source code, not by a second compilation of the user class.
Das beschriebene System umfasst also einen Erstellungsprozessrechner („build-server“), der ein erstes ausführbares Programm aufweist, welches durch ein erstes Kompilieren auf dem Erstellungsprozessrechner erzeugt ist. Dabei umfasst das erste Kompilieren das Kompilieren einer Benutzerklasse und einer Teilklasse in einer ersten Version. Die Benutzerklasse weist zumindest eine Referenz auf eine Objektinstanz der Teilklasse auf. Die Benutzerklasse kann also die Teilklasse in der ersten Version verwenden. Dieses kann unter Verwendung einer öffentlichen Datei geschehen, die zumindest eine Deklaration von zumindest einem öffentlichen Klassenmember der Teilklasse in der ersten Version enthält. Die öffentliche Datei kann also wieder als öffentliche Schnittstelle der Teilklasse angesehen werden. Thus, the system described comprises a build process server having a first executable program created by a first compilation on the build process computer. The first compilation involves compiling a user class and a subclass in a first version. The user class has at least one reference to an object instance of the subclass. The user class can therefore use the subclass in the first version. This can be done using a public file containing at least a declaration from at least one public class member of the subclass in the first version. The public file can be viewed as a public interface of the subclass again.
Ferner ist das erste ausführbare Programm unter Verwendung einer internen Datei kompiliert. Die interne Datei umfasst dabei zumindest eine Deklaration von zumindest einem internen Klassenmember der Teilklasse in der ersten Version. Die interne Datei kann also all jene Klassenmember definieren, die nicht zur öffentlichen Schnittstelle der Teilklasse gehören. Furthermore, the first executable program is compiled using an internal file. The internal file comprises at least a declaration of at least one internal class member of the subclass in the first version. The internal file can therefore define all those class members that do not belong to the public interface of the subclass.
Kommt es in einer Entwicklungsumgebung zu Änderungen an einem internen Klassenmember der Teilklasse, so stellt das erste Ausführbare Programm nicht mehr eine aktuelle Version des Entwicklungsstandes dar. Ein Programmierer kann daher den Quellcode, der die Teilklasse in einer zweiten Version definiert an den Erstellungsprozessrechner senden. Der Erstellungsprozessrechner kann dann ein zweites, aktuelles ausführbares Programm erzeugen. In a development environment, when changes are made to an internal class member of the subclass, the first executable program is no longer an up-to-date version of the development state. A programmer may therefore designate the source code that defines the subclass in a second version send to the creation process computer. The build process computer may then generate a second, current executable program.
Wenn die Änderungen sich jedoch auf die internen Klassenmember der Teilklasse beschränken, so ist es nur notwendig den Quellcode, der die Teilklasse in der zweiten Version definiert, erneut zu kompilieren. Ein erneutes Kompilieren der Benutzerklasse entfällt. Insgesamt werden also der Prozessor und weitere Hardware Ressourcen des Erstellungsprozessrechners geschont. However, if the changes are limited to the subclass's internal class members, then it is only necessary to recompile the source code that defines the subclass in the second version. Recompiling the user class is no longer necessary. Overall, therefore, the processor and other hardware resources of the creation process computer are spared.
In einer weiteren Ausführungsform kann der Erstellungsprozessrechner dazu ausgebildet sein, Objektinstanzen der in den ausführbaren Programmen definierten Klassen zu instanziieren. In another embodiment, the creation process computer may be configured to instantiate object instances of the classes defined in the executable programs.
Der Erstellungsprozessrechner kann als eine Art Laufzeitumgebung ausgebildet sein, sodass der Erstellungsprozessrechner Objektinstanzen von Klassen zur Laufzeit erzeugt. Eine Laufzeitumgebung kann sämtliche, zur Ausführung von Programmen benötigte Softwarekomponenten umfassen. Somit wird die Funktionalität der einzelnen Klassen an einer Stelle zur Verfügung gestellt bzw. ausgeführt. The creation process computer may be designed as a kind of runtime environment, such that the build process computer generates object instances of classes at runtime. A runtime environment may include all the software components needed to execute programs. Thus, the functionality of the individual classes is made available or executed in one place.
In einer weiteren Ausführungsform kann die Entwicklungsumgebung auf einer ersten Recheneinheit ausgeführt werden und Entwicklungsprozessrechner kann auf einer zweiten Recheneinheit ausgeführt werden. Die erste Recheneinheit kann dazu ausgebildet sein, Quellcode über einen Kommunikationskanal an das Empfangsmodul des Erstellungsprozessrechners, zu senden. In a further embodiment, the development environment may be executed on a first computing unit, and development process computers may be executed on a second computing unit. The first arithmetic unit may be configured to send source code via a communication channel to the receiving module of the creation process computer.
Die oben beschriebenen technischen Effekte treten insbesondere hervor, wenn der Quellcode über einen Kommunikationskanal an den Erstellungsprozessrechner gesendet werden muss. Gerade bei umfangreichem Quellcode, wie es in der Praxis häufig vorkommt, kann dies zu erheblichen Netzauslastungen führen. Der Kommunikationskanal kann selbstverständlich jeglicher Art sein, wie z.B. eine Internetverbindung, eine WLAN-Verbindung oder auch eine Bluetooth-Verbindung. Auch eine BUS Verbindung ist möglich, wie sie z.B. im Automobilbereich eingesetzt werden. The above-described technical effects emerge in particular when the source code has to be sent to the creation process computer via a communication channel. Especially with extensive source code, as often occurs in practice, this can lead to significant network utilization. Of course, the communication channel can be of any kind, e.g. an internet connection, a wi-fi connection or even a bluetooth connection. Also a BUS connection is possible, as e.g. be used in the automotive sector.
Ferner kann eine dritte Recheneinheit mit einer zweiten Entwicklungsumgebung vorgesehen sein, die die öffentliche Datei enhält. Ferner kann eine Netzwerkverbindung zwischen der zweiten und dritten Recheneinheit mit der ersten und zweiten Entwicklungsumgebung bestehen, wobei die Entwicklungsumgebungen dazu ausgebildet sein können, öffentliche Dateien zwischen den Entwicklungsumgebungen hin und her zu senden bzw. zu empfangen. Furthermore, a third processor may be provided with a second development environment containing the public file. Further, a network connection between the second and third arithmetic unit may exist with the first and second development environments, wherein the development environments may be configured to send and receive public files between the development environments.
In einer weiteren Ausführungsform kann der Erstellungsprozessrechner weiter dazu ausgebildet sein, Test, insbesondere Integrationstests und/oder Unit-Tests und/oder Regressionstests an den ausführbaren Programmen durchzuführen. In another embodiment, the creation process computer may be further configured to perform tests, in particular integration tests and / or unit tests and / or regression tests on the executable programs.
Typischerweise werden in dem Entwicklungsprozess eines Softwareproduktes kontinuierlich Integrationstests mit den verschiedenen Komponenten bzw. Klassen durchgeführt. Dabei wird getestet, ob die verschiedenen Komponenten auch zusammen ihre spezifizierten Aufgaben zuverlässig ausführen. In vielen Anwendungsfällen müssen diese Integrationstests regelmäßig durchgeführt werden, insbesondere dann, wenn sich die Klassen verändern. Wie bereits weiter oben beschrieben, ist es bei der vorliegenden Erfindung nicht notwendig, bei einer Änderung der internen Klassenmember der Teilklasse, die Benutzerklasse neu zu kompilieren, so dass die Anzahl der notwendigen Integrationstests reduziert wird. Auch hiermit wird wieder die Prozessorauslastung des Erstellungsprozessrechners reduziert. Typically, in the development process of a software product, integration tests are continuously performed on the various components or classes. It is tested whether the various components together perform their specified tasks reliably. In many applications, these integration tests must be performed regularly, especially as the classes change. As described above, in the present invention, when the class member's internal class members change, it is not necessary to recompile the user class, so that the number of necessary integration tests is reduced. Again, this reduces the processor utilization of the build process computer.
Nachfolgend wird die Erfindung mittels mehrerer Ausführungsbeispiele beschrieben, die anhand von Abbildungen näher erläutert werden. Hierbei zeigen: The invention will be described by means of several embodiments, which are explained in more detail with reference to figures. Hereby show:
Exemplarisch ist dies im Folgenden C++ Code illustriert: As an example, this is illustrated in the following C ++ code:
Der vorstehende Code zeigt exemplarisch die Verwendung einer „Stack“-Implementierung. Der „Stack“ umfasst „private“ und „public“ Klassenmember, die in der Datei „Stack.h“ deklariert sind. Eine Benutzerklasse „UserClass“ kann auf die „public“ Klassenmember des „Stacks“ zugreifen, indem die Header Datei
Nachteilig ist, dass die Headerdatei
Um eine Trennung von Implementierung und Schnittstelle einer Klasse zu erzielen, könnten das sogenannte Handle/Body Entwurfsmuster
Beide Ansätze führen zu unnötigem zusätzlichen Speicherbedarf oder zusätzlicher CPU Belastung. Both approaches lead to unnecessary additional memory or additional CPU load.
Die Kompilationseinheiten
Ein Linker
Die öffentliche
Die Datei „StackInterface.h“ definiert die öffentliche Schnittstelle der Klasse „Stack“. Wie aus dem obigen Codebeispiel deutlich wird, sind nur „public“ Methoden deklariert. Ein Programmierer, der folglich die Datei „Stackinterface.h“ über eine „#include“-Anweisung einbindet, hat keinerlei Informationen über die „private“ Klassenmember der Klasse „Stack“. The StackInterface.h file defines the public interface of the Stack class. As you can see in the code example above, only "public" methods are declared. Thus, a programmer who incorporates the Stackinterface.h file through an #include statement has no information about the stack private class members.
Die internen Klassenmember
Wie aus dem obigen Beispiel deutlich wird, kann die interne Datei
Die Anweisung „partial StackInterface“ gibt an, dass es sich bei dem Folgenden Code um die interne Datei
Eine Benutzerklassendatei
Mit dem gezeigten partiellen Klassendesign
Sollte der Programmierer der internen Datei
Die Teilklasse
Die Benutzerklasse
Zum Kompilieren der Benutzerklasse
Das Empfangsmodul
Es ist von Vorteil, wenn die Anzahl der Kompilationsvorgänge reduziert wird. In der ersten Entwicklungsumgebung
In einem zweiten Schritt
Im nächsten Schritt
Der Compiler
BezugszeichenlisteLIST OF REFERENCE NUMBERS
- 1 1
- Headerdatei header file
- 2 2
- „private“ und „public“ Klassenmember "Private" and "public" class members
- 3 3
- Benutzerklassendatei User class file
- 4, 45, 55, 22 4, 45, 55, 22
- Implementierung / Implementierungsdatei Implementation / Implementation File
- 10 10
- Polymorphismus polymorphism
- 11 11
- Abstrakte Klasse Abstract class
- 12 12
- Implementierungsklasse implementation class
- 13 13
- Benutzerklasse der Abstrakten Klasse in Polymorphismus User class of abstract class in polymorphism
- 14 14
- Handle/Body Entwurfsmuster Handle / Body design pattern
- 15 15
- Zeiger auf Body in Handle/Body Entwurfsmuster Pointer to body in handle / body design pattern
- 16 16
- Handle Klasse in Handle/Body Entwurfsmuster Handle class in handle / body design pattern
- 17 17
- Body Klasse in Handle/Body Entwurfsmuster Body class in handle / body design pattern
- 18 18
- Benutzerklasse der Handle Klasse in Handle/Body EntwurfsmusterUser class of handle class in handle / body design pattern
- 30 30
- Prozess zur Erzeugung eines Programms Process of creating a program
- 31 31
- Prä-Prozessor Preprocessor
- 32, 94 32, 94
- Kompilationseinheit compilation unit
- 33, 65 33, 65
- Compiler compiler
- 34, 96 34, 96
- Objektcode / Kompilat Object code / Compilation
- 35 35
- Linker left
- 36, 98 36, 98
- Programm program
- 40 40
- partielles Klassendesign partial class design
- 41, 51, 51‘ 41, 51, 51 '
- öffentliche Datei/ öffentliche Schnittstelle public file / public interface
- 42, 52, 52‘ 42, 52, 52 '
- Benutzerklassendatei User class file
- 43 53 43 53
- Interne Datei / interne Schnittstelle Internal file / internal interface
- 44, 54 44, 54
- interne Klassenmember internal class members
- 45, 55 45, 55
- Implementierungsdatei implementation file
- 46 46
- öffentliche Klassenmember public class members
- 50 50
- partielles Klassendesign mit einer Vielzahl an öffentlichen Schnittstellenpartial class design with a variety of public interfaces
- 60 60
- Entwicklungsumgebung development environment
- 61 61
- Benutzerklasse user class
- 62 62
- Teilklasse subclass
- 63 63
- interner Klassenmember internal class member
- 64 64
- öffentlicher Klassenmember public class member
- 66 66
- Deklaration der öffentlichen Klassenmember Declaration of public class members
- 67 67
- Kompilat der Benutzerklasse Compilation of the user class
- 70 70
- Testumgebung test environment
- 71 71
- erste Recheneinheit first arithmetic unit
- 72 72
- erste Entwicklungsumgebung first development environment
- 73 73
- erstes Sendemodul first transmission module
- 74 74
- zweite Recheneinheit second arithmetic unit
- 75 75
- zweite Entwicklungsumgebung second development environment
- 76 76
- zweite Sendeeinrichtung second transmitting device
- 77 77
- Erstellungsprozessrechner Creation process computer
- 78 78
- Empfangsmodul receiver module
- 79 79
- Integrationsserver integration server
- 80, 80‘ 80, 80 '
- Kommunikationskanal communication channel
- 91 91
- Einbinden einer Datei Include a file
- 92 92
- Übergabe einer Objektinstanz in einer Klasse Transfer of an object instance in a class
- 93 93
- Prä-Prozessor-Ausführung Pre-processor execution
- 95 95
- Kompilieren Compile
- 97 97
- Linken left
- 99 99
- Ausführung execution
ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte Nicht-PatentliteraturCited non-patent literature
- Standards N4567 [0003] Standards N4567 [0003]
- Standards Nr. N4567 [0003] Standards No. N4567 [0003]
Claims (15)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102016202484.1A DE102016202484A1 (en) | 2016-02-18 | 2016-02-18 | Method, apparatus and system for generating a compilation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102016202484.1A DE102016202484A1 (en) | 2016-02-18 | 2016-02-18 | Method, apparatus and system for generating a compilation |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102016202484A1 true DE102016202484A1 (en) | 2017-08-24 |
Family
ID=59522630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102016202484.1A Pending DE102016202484A1 (en) | 2016-02-18 | 2016-02-18 | Method, apparatus and system for generating a compilation |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102016202484A1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613120A (en) * | 1994-10-20 | 1997-03-18 | Silicon Graphics, Inc. | System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program |
-
2016
- 2016-02-18 DE DE102016202484.1A patent/DE102016202484A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613120A (en) * | 1994-10-20 | 1997-03-18 | Silicon Graphics, Inc. | System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program |
Non-Patent Citations (2)
Title |
---|
Standards N4567 |
Standards Nr. N4567 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69924857T2 (en) | PROGRAM CODE CONVERSION | |
EP0689694B1 (en) | Process for the machine-generation of parallel processable command groups from a program for super-scalar microprocessors | |
DE102013200029A1 (en) | PROVIDING POWERFUL VERSIONS COMPILED CODES FOR A CPU IN A SYSTEM OF HETEROGENIC GUNS | |
DE112013001711T5 (en) | Optimize subroutine calls based on the architectural level of a called subroutine | |
DE102007025397B4 (en) | Multi-processor system and method of operation | |
DE102005040075A1 (en) | Dynamically connecting modules in a pre-operating system environment | |
CH633643A5 (en) | METHOD FOR BLOCK-FREE INTERLOCKED SIMULTANEOUS PROCESSING OF MULTIPLE TASKS BY MEANS OF SEVERAL PROGRAMS IN A DATA PROCESSING SYSTEM. | |
DE112012000303T5 (en) | Dynamic binary optimization | |
EP1738257B1 (en) | Method for preventing data inconsistency between accesses of different functions of an application to a global variable in a data processing installation | |
DE202012013466U1 (en) | Pre parsed headers for compilation | |
DE112011103406T5 (en) | Management of unmodified objects | |
DE112013001735T5 (en) | Optimizing the linking of instructions | |
EP1040414A1 (en) | Method for converting a system call | |
DE102018208267A1 (en) | TECHNOLOGY USING TAX RELIEF GRAPHS FOR CONVERTING CONTROL FLOW PROGRAMS IN DATA FLOW PROGRAMS | |
DE69933323T2 (en) | compiler | |
EP2965199A1 (en) | Method for checking and/or transformation of a computer program with first-class static functions | |
DE112018002316T5 (en) | CODE COVERAGE TRACKING FOR A MICROCONTROLLER PROGRAM | |
DE102018127317B3 (en) | METHOD AND DEVICES FOR COMPUTER-IMPLEMENTED GENERATION OF AN EXECUTABLE PROGRAM CODE AND FOR EXECUTING AN EXECUTABLE PROGRAM CODE | |
DE10109848B4 (en) | A programmable logic controller and programmer for generating a sequence program for a programmable logic controller | |
DE102019132485A1 (en) | Management of access restrictions within a system-on-chip | |
DE112010003774T5 (en) | COMPATIBILITY AT OBJECT LEVEL AND CLASS SCALING USING SEMANTIC VALUES | |
DE102016202484A1 (en) | Method, apparatus and system for generating a compilation | |
EP0662226B1 (en) | Method of processing an application program on a parallel-computer system | |
DE102006041002B4 (en) | Method to adapt a program to a cache, and circuitry | |
DE102018104752A1 (en) | Method for executing and translating a computer program in a computer network, in particular for controlling a microscope |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R163 | Identified publications notified | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0009450000 Ipc: G06F0009440000 |
|
R012 | Request for examination validly filed | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0009440000 Ipc: G06F0008540000 |