Zum Inhalt springen
hanse-computing.de
  • Moin
  • Über uns
  • Leistungen
  • Projekte
  • Neuigkeiten
  • Wissen
    • Netzwerktechniken
    • Systemadministration
    • Hardware-Spezifikationen
    • KI & Automatisierung
    • Glossar
      • Fachbegriffe
      • Programmiersprachen-Befehle
    • Datenbanken
    • IT-Grundlagen
    • Python: Grundlagen
    • Python: Datenstrukturen
    • Python: Dateien & IO
    • Python: Web & Frameworks
    • Python: Fehler & Debugging
    • Webentwicklung
    • Linux & Betriebssysteme
    • IT-Sicherheit
    • Cloud & Container
    • Tools & Software
    • Netzwerk: TCP/IP
    • Netzwerk: DNS & Dienste
    • Netzwerk: Sicherheit
    • Netzwerk: Tools
    • KI: Grundlagen
    • KI: Praxis
    • KI: LLM & Agenten
    • Hardware: Server
    • Hardware: Netzwerkgeräte
    • Hardware: Peripherie
    • Wiki-Startseite
    • Letzte Änderungen
    • Kategorie-Browser
    • Zufallsartikel
  • Infrastruktur
  • AI Easy Start
  • Test-Drive
  • Kontakt
  • Impressum
  • Datenschutz

Sprache auswählen

  • Deutsch (Deutschland)
  • English (United Kingdom)
  1. Aktuelle Seite:  
  2. Startseite
  3. Wissen
  4. Glossar
  5. Programmiersprachen-Befehle

VDM-Befehle: Schnellreferenz für die Vienna Development Method

VDM (Vienna Development Method) ist eine der etabliertesten modellorientierten formalen Methoden; ihre Wurzeln liegen in der Programmiersprachen-Semantik-Forschung des IBM-Labors Wien in den 1970er-Jahren. Spezifikationen werden in der formalen Sprache VDM-SL geschrieben, deren Semantik in einem ISO-Standard mathematisch festgelegt ist; VDM++ ergänzt objektorientierte Konzepte (Klassen, Vererbung, Threads), VDM-RT erweitert um Echtzeit-Aspekte.

Die Werkzeuge

Das zentrale Open-Source-Werkzeug ist das Overture Tool; sein Kommandozeilen-Kern heißt VDMJ und ist in Java geschrieben. VDMJ unterstützt alle drei Dialekte und kann per vdmj-Kommando gestartet werden, das die VDM-Dateien parst und typisiert.

vdmj -e '1+2'                    # Ausdruck auswerten
vdmj -i Spez.vdmsl               # interaktiv (REPL)
vdmj -p Spez.vdmsl               # parsen ohne ausfuehren
vdmj -t Spez.vdmsl               # typisieren

VDM-SL im Kern

  • Datenmodell: Mengen, Sequenzen, Abbildungen (Maps), Tupel, Records — Typen wie set of nat oder seq of char.
  • Explizite vs. implizite Spezifikation: explizit mit f(x) == x+1 (ausführbar), implizit über Vor- und Nachbedingungen pre/post.
  • Zustand: state-Blöcke mit inv-Invarianten; Operationen mit ext-Klauseln (rd/wr) auf Zustandsvariablen.
  • Logik: forall/exists-Quantoren, =>, not, and/or, if-then-else, cases.

VDM-Modelle werden primär zur Analyse entwickelt, nicht als Endimplementierung — man validiert sie im Interpreter, testet Invarianten und generiert daraus Code.

Verwandte formale Methoden: Isabelle, TLA+, Alloy sowie PVS und Frama-C.

PVS-Befehle: Schnellreferenz für das Prototype Verification System

PVS (Prototype Verification System) ist ein Spezifikations- und Verifikationssystem mit integriertem interaktivem Theorembeweiser, entwickelt am SRI International; es basiert auf typisierter Higher-Order-Logik und wird besonders bei der NASA (Langley) für Hardware- und Protokoll-Verifikation eingesetzt. Eine Spezifikation besteht aus Theorien in .pvs-Dateien.

Arbeiten mit Theorien

pvs                    # Emacs-Oberflaeche starten
M-x typecheck          # Theorie typisieren (C-c C-t)
M-x prove              # Formel im Beweiser bearbeiten (C-c C-p)
M-x typecheck-prove    # Typecheck + Beweis in einem Schritt (tcp)

Eine Theorie definiert Typen, Konstanten und Axiome; Lemmata und Theoreme werden mit THEOREM bzw. LEMMA deklariert und mit Taktiken bewiesen.

Beweisführung im Prover

  • prove-it: Komplettbeweis aller offenen Beweisziele („autopilot“).
  • grind: Standard-Mischung aus Vereinfachen, Suchen und Auto-Beweis — der wichtigste Allround-Befehl.
  • simplify: Formel propositional vereinfachen.
  • (skolem!)/flatten: Quantoren instanziieren bzw. Konjunktionen/Implikationen auflösen.
  • (assert): Entscheidbare Teile (Arithmetik, Gleichheit) automatisch schließen.
  • quit: Beweissitzung verlassen; Beweise landen als .prf-Dateien neben der Theorie.

PVS ist eng verwandt mit anderen Formale-Verifikations-Werkzeugen wie Coq, Lean und Isabelle; mit VDM teilt es die Idee der formalen Spezifikation vor der Implementierung.

Gosu-Befehle: Schnellreferenz für gosuc und die Gosu-Sprache

Gosu ist eine statisch typisierte, objektorientierte Sprache für die Java Virtual Machine (JVM). Sie entstand 2002 intern bei Guidewire Software für Versicherungsanwendungen und wurde 2010 als Open Source veröffentlicht. Gosu kombiniert Java-, C#- und ECMAScript-Ideen und ist vor allem im Versicherungsumfeld (P&C) verbreitet.

Dateien und Werkzeuge

  • .gs – Gosu-Quelldatei; eine Klasse pro Datei, Name der Datei = Name der Klasse
  • .gst – Gosu-Template-Datei (HTML-artige Templates mit Gosu-Ausdrücken)
  • gosuc – Gosu-Compiler (Kommandozeile, kompiliert .gs nach Java-Bytecode)
  • gosu – Interpreter/REPL für schnelle Experimente

Syntax-Grundlagen

package example
uses java.util.List

class Hallo {
  function gruesse(name : String) : String {
    var text : String = "Hallo " + name
    return text
  }
}
  • uses – Import-Deklaration (statt import)
  • var – lokale Variable, var x = 5 mit Typinferenz
  • function f(p : Typ) : Rueckgabe – Methoden-Definition
  • String-Templates: "Hallo ${name}" als First-Class-Sprachfeature

Praxis-Tipps

  • Gosu bietet auch funktionale Elemente (Lambdas, Block-Expressions) und erweiterbare Typen (Enhancements) für bestehende Java-Klassen
  • Dr. Dobb's Journal nominierte Gosu 2011 zur „Language of the Month“

Verwandte JVM-Sprachen: Java-Befehle, Kotlin-Befehle, Groovy-Befehle, C#-Befehle. Weitere JVM-Nachbarn: Xtend-Befehle und X10-Befehle.

Xtend-Befehle: Schnellreferenz für die Java-Transpilierung

Xtend ist eine statisch typisierte Programmiersprache aus dem Eclipse-Umfeld (Xtext-Projekt), die zu lesbarem Java-Quellcode kompiliert. Sie begann als „Xtend2“ und wurde mit Eclipse Juno (Juni 2012) ein eigenständiges Projekt. Xtend erweitert Java um moderne Sprachfeatures, ohne die JVM-Kompatibilität zu verlieren.

Kompilierung

  • Quelldateien: .xtend, eine Klasse pro Datei
  • Der Compiler erzeugt Java-Quellcode im Ordner xtend-gen, der dann normal von javac weiterverarbeitet wird
  • Eclipse: Xtend-Plugin (Eclipse Update Site, Editor + Compiler integriert)
  • Maven: xtend-maven-plugin mit Goal xtend:compile (bzw. xtend:testCompile)
  • Gradle: Plugin org.xtext.xtend, Abhängigkeit org.eclipse.xtend:org.eclipse.xtend.lib

Syntax-Highlights

class Hallo {
  def String gruesse(String name) {
    val text = "Hallo " + name
    return text
  }
}
  • def – Methoden-Definition (kompiliert zu Java-Methoden)
  • val – unveränderliche Variable, var – veränderliche Variable; Typinferenz inklusive
  • Lambdas: list.map[ it.length ] mit implizitem it
  • Extension Methods: "hallo".toFirstUpper erweitert geschlossene Typen ohne Vererbung
  • Active Annotations: Annotationen nehmen zur Übersetzungszeit am Kompilierungsprozess teil (Boilerplate-Erzeugung, z. B. für Visitor- oder Observer-Muster)
  • Template-Expressions: mehrzeilige Strings mit «ausdruck»-Interpolation

Praxis-Tipps

  • Da Xtend nach Java übersetzt wird, bleiben Debugging (mit Debug-Informationen) und Bibliotheksnutzung unkompliziert
  • Kein separater Standalone-Compiler: Aufbau über IDE, Maven oder Gradle

Verwandte JVM-Sprachen: Java-Befehle, Kotlin-Befehle, Groovy-Befehle, Scala-Befehle. Weitere JVM-Nachbarn: Gosu-Befehle und X10-Befehle.

X10-Befehle: Schnellreferenz für x10c, runx10 und das PGAS-Modell

X10 ist eine statisch typisierte, objektorientierte Sprache für paralleles und verteiltes Rechnen, entwickelt von IBM am Thomas J. Watson Research Center im DARPA-Projekt PERCS (High Productivity Computing Systems). X10 erweitert einen sequenziellen Sprachkern um places (Orte), activities (Aktivitäten), clocks (Uhren) und verteilte Arrays – das sogenannte APGAS-Modell (Asynchronous Partitioned Global Address Space).

Werkzeuge

  • x10c – Compiler mit Java-Backend (erzeugt Java/Bytecode)
  • x10c++ – Compiler mit C++-Backend (für native, leistungsfähige Ausführung)
  • runx10 – Startprogramm: verteilt die Ausführung über mehrere places, z. B. runx10 -n 4 Programm (4 places)

Parallelitäts-Konstrukte

finish {
  for (p in Place.places()) {
    async at (p) Console.OUT.println("Hallo von place " + p.id);
  }
}
  • async – startet eine neue Aktivität (feinkörnig nebenläufig)
  • finish – wartet, bis alle inneren Aktivitäten beendet sind
  • at (p) – führt Code auf einem bestimmten place aus; async (p) S ist syntaktischer Zucker für at (p) async S
  • atomic – atomare Blöcke für gemeinsame Variablen
  • ateach – startet Aktivitäten über alle places einer Verteilung
  • Kommunikation über Places (partitionierter globaler Adressraum) statt expliziter Message Passing

Praxis-Tipps

  • Kompilieren: x10c++ -o Programm -O Programm.x10, dann runx10 -n 4 Programm
  • Für die Datenparallelität gibt es mehrdimensionale verteilte Arrays (Array[T] mit Dist) und Clock-Synchronisation

Verwandte Sprachen: Java-Befehle (X10-Syntax), C/C++-Befehle (C++-Backend), Go-Befehle (Nebenläufigkeit), Xtend-Befehle und Gosu-Befehle. Konzepte: Multikern-Prozessor und Nebenläufigkeit.

  1. PostgreSQL-Befehle: Schnellreferenz für psql, pg_dump und die Server-Tools
  2. MariaDB-Befehle: Schnellreferenz für Client, Dump und Administration
  3. Cassandra-Befehle: Schnellreferenz für cqlsh, nodetool und die Cluster-Tools
  4. Redis-Befehle: Schnellreferenz für redis-cli

Seite 23 von 46

  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
hanse-computing.de

hanse-computing.de – KI-gestützte Dienstleistungen aus Lübeck.

hanse-computing.de
IT-Dienstleistungen aus der Hansestadt
Über uns · Projekte · Neuigkeiten · Affiliate
Impressum · Datenschutz
© 2026 hanse-computing.de
© 2026 hanse-computing Impressum Datenschutz