89 research outputs found

    Konzepte der persistenten Programmiersprache PLEX

    Get PDF
    Zu einem objektorientierten Datenbanksystem (OODBMS) gehört eine Programmiersprache zur Methoden-Implementierung und Anwendungsentwicklung. Existierende objektorientierte Programmiersprachen sind dafür nicht geeignet, da sie zum einen Persistenz, zum anderen das Datenmodell des Datenbanksystems nicht berücksichtigen. Neben diesen Datenbank-spezifischen Anforderungen haben auch existierende objektorientierte Programmiersprachen noch einige Schwachpunkte, die bei einer Neu-Konzeption vermieden werden können. Für das OODBMS OSCAR wird im Moment die Programmiersprache PLEX konzipiert, aus der Menge der Konzepte sollen hier zwei vorgestellt werden: Migratoren und Signatur-Varianz

    Design of modern numerical libraries on the examle of SG++

    Get PDF
    SG++ ist eine in C++ geschriebene Numerikbibliothek, die umfangreiche Anwendungsmöglichkeiten bietet. Basierend auf dünnen Gittern können mit SG++ Probleme in der Finanzmathematik und im Data-Mining, als auch partielle Differenzialgleichungen gelöst werden. Dabei steht die Effizienz der Berechnungen im Vordergrund. Diese Arbeit befasst sich jedoch mit der effizienten Verwendung und der Softwarequalität der Bibliothek. Es wird definiert, was eine gute Programmierschnittstelle ausmacht und welche Techniken und Konzepte zur Umsetzung verwendet werden können. Anschließend wird ein Refactoring der Bibliothek SG++ durchgeführt, damit es den aufgestellten Richtlinien entspricht und es wird erklärt, welche Vorteile die umgestaltete Bibliothek von Benutzersicht bietet. Laufzeittests verdeutlichen, welche Auswirkungen die Änderungen auf die Performance haben. Zusätzlich wird die Unterstützung weiterer Schnittstellen für andere Sprachen untersucht. Hier wird speziell auf Python und Java eingegangen und der zusätzliche Rechenaufwand gemessen, den die beiden Sprachen beim Aufrufen von C++-Funktionen benötigen

    Entwurf und Implementierung effizienter Objektsysteme für funktionale und imperative Programmiersprachen am Beispiel von Lisp

    Get PDF
    Bisherige Objektsysteme funktionaler und imperativer Programmiersprachen weisen eine Lücke auf. Aus der funktionalen Tradition wurde das ausdrucksstärkste Objektsystem CLOS entwickelt, das insbesondere durch sein Metaobjektprotokoll hervorsticht, dessen Performanz aber zu wünschen übrig läßt. Auf der anderen Seite zeichnet sich C++ als besonders effizient aus, unterstützt aber zentrale Konzepte objektorientierter Programmierung wie Spezialisieren und Generalisieren von Objektklassen nur unzureichend, was abgeschwächt auch für Java gilt. In dieser Arbeit wird am Beispiel von Lisp gezeigt, wie man effiziente Objektsysteme unter Berücksichtigung des Verursacherprinzips so entwirft und implementiert, daß einfache Konstrukte keinen Overhead durch die Präsenz aufwendiger Konzepte, wie des Metaobjektprotokolls oder des Redefinierens von Klassen, mittragen müssen. Entgegen bisherigen Annahmen wird hier erstmals nachgewiesen, daß diese Konzepte auch ohne Quellcodeinterpretation bzw. -kompilation zur Laufzeit realisiert und somit auch in traditionellen, compiler-orientierten Programmiersprachen, wie Ada, Pascal, Eiffel, C++ und natürlich Java, unterstützt werden können.Up to now a gap is evident in object systems of functional and procedural programming languages. The most expressive object system developed in the family of functional languages is CLOS with its outstanding metaobject protocol. Its performance, however, does not meet the users' needs. In the family of procedural languages the most efficient object system developed is C++. But its support of central concepts of object-oriented programming, such as specialization and generalization of object classes, is not sufficient. This also applies in some degree for Java. Using Lisp as an example this thesis shows how efficient object systems can be designed and implemented so that simple constructs have no overhead because of the presence of complex concepts such as the metaobject protocol or the redefinition of classes. In contrast to former assumptions, this thesis proofs for the first time that the above mentioned concepts can be realized without embedding an interpreter or an incremental compiler in the run-time environment. Therefore, they can also be supported in traditional compileroriented programming languages such as Ada, Pascal, Eiffel, C++, and Java

    Ein System zur Definition und Ausführung von Protokollen für Multi-Agentsysteme

    Get PDF
    Mit der hier entwickelten Protokollsprache können Multiagenten-Protokolle klar und eindeutig spezifiziert werden. Durch die automatische Code-Generierung aus einer Protokoll-Spezifikation entfällt der fehleranfällige Arbeitsschritt der Implementierung des festgelegten Protokoll-Ablaufs. Das Protokoll-Ausführungs-Systems übernimmt die Steuerung des Ablaufs, erkennt Fehler (z.B. falsche Nachrichten) und überwacht Timeout-Fristen. Ein Programmierer muss nach der Festlegung eines Protokolls lediglich den Code für die anwendungsabhängigen Abläufe (Anwendungs-Prozeduren) und die Agentenumgebung (Zugriff auf andere Agenten, Zustellen der Nachrichten) zu Verfügung stellen. Durch die Trennung von Protokoll und Anwendung können so einmal entworfene Protokolle für unterschiedliche Anwendungen verwendet werden, ohne den eigentlichen Protokoll-code zu verändern. Durch dieses System ergibt sich für das Deutsche Forschungszentrum für Künstliche Intelligenz die Möglichkeit, neue Protokolle schneller zu entwickeln und einzusetzen

    Grundlagen für die formale Spezifikation modularer zustandsbasierter Systeme

    Get PDF
    Diese Arbeit stellt Konzepte vor, die im Kontext zustands- oder objektbasierter Systeme die gemeinsame Behandlung von Implementierungssprachen und Spezifikationssprachen gestatten. Sie befaßt sich zum einen mit der formalen Definition einer Programmiersprache und zum anderen mit dem Entwurf einer Spezifikationssprache, die auf die Programmiersprache ausgerichtet ist. Abhängigkeiten zwischen diesen beiden Aspekten werden herausgearbeitet. Die Definition beider Sprachen erfolgt auf einem eigenständigen Berechnungsmodell, einer formal definierten abstrakten Maschine, zur Modellierung des Verhaltens von Objekten. Erweiterungen des Berechnungsmodells, die Rekursion, Verschachtelung von Programmeinheiten oder Typfragen betreffen, werden vorgestellt. Zur Spezifikation zustandsbasierter Systeme wird dynamische Logik, eine Erweiterung einer Prädikatenlogik erster Stufe, die Zustände explizit macht, eingesetzt. Mit Hilfe der dynamischen Logik kann das Verhalten von Objekten abstrakt beschrieben werden. Ein Beweissystem für die Logik wird definiert, mit dem auch die Verifikation einer Implementierung bezüglich einer Spezifikation möglich ist. Hierzu wird ein Korrektheitsbegriff definiert, der durch das Beweissystem operationalisiert wird. Zur Beschreibung von modularen Software-Systemen werden formale Parametrisierungs- und Schnittstellenkonzepte erarbeitet. Eine Reihe von Relationen wird definiert, die es ermöglichen, verschiedene Beziehungen zwischen Systemkomponenten zu modellieren. Horizontale und vertikale Entwicklung wird betrachtet

    Java Seminarbeiträge

    Get PDF
    Zusammenstellung der Beitraege des Java-Seminars, das im Sommersemester 1996 in Form eines Kompakt-Seminars am Institut fuer Programmstrukturen und Datenorganisation durchgefuehrt wurde. Es werden Grundlagen und Spracheigenschaften von Java behandelt, einschliesslich Threads und Synchronisierung. Ferner werden die verfuegbaren Klassenbibliotheken vorgestellt. Einen weiteren Schwerpunkt des Seminars bilden Bytecode, Just-In-Time-Uebersetzung und das Sicherheitskonzept von Java. Randthemen wie die Kombination von Java und CORBA, die angekuendigte Implementierung von Java in Hardware und die Vorstellung von EspressoGrinder, eines am IPD entwickelten Java Uebersetzers, runden das Seminar ab

    Java in eingebetteten Systemen

    Get PDF
    Moderne, objektorientierte Sprachen spielen bei der Entwicklung von Software für eingebettete Systeme bislang kaum eine Rolle. Die Gründe hierfür sind vielfältig, meist wird jedoch die mangelnde Effizienz und der größere Speicherbedarf hervorgehoben. Obwohl Java viele Eigenschaften hat, die sehr für einen Einsatz in eingebetteten Systemen sprechen, so hängt doch gerade Java vielfach immer noch das Vorurteil an, in Systemen mit beschränkter Rechenleistung und Speicher zu viele Ressourcen zu benötigen. Diese Arbeit soll dazu beitragen, diese Vorurteile abzutragen. Sie stellt insbesondere Techniken vor, die den Speicherbedarf einer JVM so gering wie möglich halten und diese effizient mit der zur Verfügung stehenden Rechenleistung umgehen lassen. Viele der dargestellten Verfahren und Algorithmen wurden in der Kertasarie VM implementiert, einer virtuellen Maschine, die speziell für den Einsatz in eingebetteten Systemen konzipiert wurde. Durch die weit verbreitete Vernetzung eingebetteter Systeme über das Internet stellt sich in vielen Fällen zudem das Problem einer modernen, abstrakten und effizienten Form der Kommunikation. Aus diesem Grund liegt der zweite Schwerpunkt dieser Arbeit auf dem Vergleich von objektorientierten Middleware-Architekturen, insbesondere von Java-RMI. Auch auf diesem Gebiet wird eine eigene, speziell an eingebettete Systeme angepasste RMI-Variante vorgestellt.Modern, object oriented languages do not play an important role when developing software for embedded systems. There are many reasons for it, most often an inadequate performance and a greater memory demand are mentioned. In spite of the fact that Java has many features suitable for embedded systems, Java often faces the prejudice to consume too much resources in systems with limited processing power and memory. This work is a contribution to diminish this prejudices. It presents techniques to limit the memory demands of a Java Virtual Machine and to effectively cope with limited computing power. Many of the presented methods and algorithms are implemented in the Kertasarie VM, a JVM designed to run in embedded systems.Due to the fact of increasing network capabilities embedded systems often face the problem of a modern, abstract and efficient communication. Therefore the second emphasis of this work is put on the comparison of object oriented middleware architectures, especially Java-RMI. An own implementation for embedded systems is also presented
    corecore