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

Frege-Befehle: Schnellreferenz für reine funktionale Programmierung auf der JVM

Frege ist eine rein funktionale, nicht-strikte Programmiersprache für die JVM — im Geiste ein „Haskell für die JVM“. Entwickelt wurde sie von Ingo Wechsung, benannt nach dem deutschen Mathematiker, Logiker und Philosophen Gottlob Frege (1848–1925). Frege-Programme werden zu Java-Quellcode kompiliert und laufen dann wie normale Java-Anwendungen auf der virtuellen Maschine.

Besonderheiten

  • Rein funktional: Funktionen ohne Seiteneffekte, Ausnahmen und Ein-/Ausgabe laufen über Monaden (IO-Typ), genau wie in Haskell.
  • Nicht-strikte (lazy) Auswertung, Typklassen, Pattern Matching und Typinferenz — vertraute Haskell-Syntax.
  • Der Compiler ist selbst in Frege geschrieben und generiert Java-Quellcode, der anschließend von javac übersetzt wird — eine Seltenheit unter den JVM-Sprachen.
  • Nahtloser Aufruf von Java-Bibliotheken aus Frege-Code heraus.

Wichtige Befehle

java -jar fregec.jar -d bin -target 1.8 Hello.fr   # kompilieren
java -Xss1m -cp bin:fregec.jar Hello                # ausfuehren
java -jar frege.jar                                  # REPL starten

Die Option -d setzt das Ausgabeverzeichnis, -target die Java-Version. Im REPL helfen Kommandos wie :load, :type und :quit beim Experimentieren.

Einordnung

Frege ist eine von mehreren Sprachen, die neben Java auf der JVM laufen — funktionale Vertreter sind außerdem Clojure und Scala. Wer rein funktional mit statischer Typisierung arbeiten will, findet in Frege eine konsequente Alternative. Eng verwandt sind die JVM-Sprachen Ceylon und Fantom.

Ceylon-Befehle: Schnellreferenz für die statisch typisierte JVM-Sprache von Red Hat

Ceylon war eine objektorientierte, stark statisch typisierte Programmiersprache mit Fokus auf Unveränderlichkeit (Immutability), entwickelt von Gavin King — dem Erfinder von Hibernate — bei Red Hat. Sie wurde 2011 auf der QCon-Konferenz angekündigt und am 12. November 2013 in Version 1.0.0 veröffentlicht. Ceylon lief auf der JVM und konnte zusätzlich nach JavaScript kompiliert werden.

Besonderheiten

  • Ausdrucksstarkes Typsystem mit Union- und Intersection-Typen, Typ-Aliasen und fluenter, gut lesbarer Syntax.
  • Betonung von Unveränderlichkeit: viele Strukturen sind standardmäßig immutable, ähnlich wie bei Kotlin.
  • Eigenes Modulsystem mit Modul-Repositories und der Descriptor-Datei module.ceylon.
  • Als Eclipse-Projekt („Eclipse Ceylon“) gehostet; das Basismodul ceylon.language wird automatisch importiert.

Wichtige Befehle

ceylon compile Hello.ceylon           # kompilieren (JVM)
ceylon run hello                       # Programm ausfuehren
ceylon compile-js Hello.ceylon         # JavaScript-Backend
ceylon doc hello                       # Dokumentation erzeugen
ceylon import com.example:module/1.0   # Modul aus Repository holen

Weitere Subcommands der ceylon-CLI sind unter anderem copy (Module zwischen Repositories kopieren) und config (Konfigurationsdateien verwalten).

Einordnung

Die letzte Version 1.3.3 erschien am 21. August 2017; danach stellte Red Hat die Entwicklung ein — Java selbst hatte sich mit schnelleren Release-Zyklen wieder geöffnet. Ceylon reiht sich in die JVM-Sprachfamilie neben Java, Kotlin, Groovy und Scala ein. Mit Frege teilt sie das JVM-Ziel, mit Fantom die Mehrziel-Unterstützung.

Fantom-Befehle: Schnellreferenz für die portable objektorientierte Sprache

Fantom (ursprünglich „Fan“) ist eine allgemeine objektorientierte Programmiersprache von Brian Frank und Andy Frank, die auf mehreren Laufzeitumgebungen läuft: der JVM, dem .NET-Common-Language-Runtime und JavaScript. Ihr erklärtes Ziel ist eine einheitliche Standard-API — derselbe Quellcode soll auf allen Zielplattformen funktionieren.

Besonderheiten

  • Statische und dynamische Typprüfung kombiniert; 64-Bit-Integer als Standard.
  • Pods als Modul-Format: bündeln Code, Ressourcen und Dokumentation.
  • Eingebautes Actor-Framework für nebenläufige Anwendungen.
  • Eigene GUI-Toolkits: FWT (Desktop) und WebFWT (Browser) nutzen dieselbe API auf allen Backends.

Wichtige Befehle

fan Hello.fan          # Skript oder Pod starten
fansh                   # interaktive Fantom-Shell
fant                    # Test-Runner ausfuehren
fan -pod build.fan      # Pod bauen (build-Skript)

Die fan-CLI startet Programme und Skripte, fansh ist die interaktive REPL-ähnliche Shell, fant führt Tests aus. Build-Skripte (typisch build.fan) erzeugen aus einem Quellbaum fertige Pods.

Einordnung

Fantom ist eine der wenigen Sprachen, die denselben Code auf JVM und .NET ausführen — ein Gegenentwurf zur reinen JVM-Welt von Java, Kotlin, Ceylon und Frege. Auf der .NET-Seite konkurriert es mit C#.

Thrift-Befehle: Apache Thrift IDL und Compiler kompakt erklärt

Apache Thrift ist ein von Facebook entwickeltes (2007) und 2008 als Open Source veröffentlichtes Cross-Language-RPC- und Serialisierungs-Framework. Über eine IDL-Datei (.thrift) definiert man Datentypen und Services; der Compiler thrift erzeugt daraus typsicheren Client- und Server-Code für viele Sprachen.

Die Thrift-IDL

Die IDL kennt struct, enum, union, exception, const und service. Felder tragen Nummern und optionale Defaults:

struct Person {
  1: string name,
  2: i32 id,
  3: optional string email
}

service PersonStore {
  Person get(1: i32 id),
  void put(1: Person p)
}

Basistypen sind bool, byte, i16, i32, i64, double, string, binary sowie Container (list, set, map).

Der thrift-Compiler

Der Compiler erzeugt mit --gen Code für die Zielsprache; -r verarbeitet Includes rekursiv, --out setzt das Ausgabeverzeichnis:

# Java-Code in gen-java erzeugen
thrift -r --gen java tutorial.thrift

# Python-Code in ein eigenes Verzeichnis
thrift -r --out generated --gen py calci.thrift

Unterstützte Sprach-Engines umfassen u.a. java, py, cpp, go, js, ruby, php, perl, csharp und swift. Ohne Angabe legt der Compiler Ordner wie gen-java oder gen-py im aktuellen Verzeichnis an.

Transporte, Protokolle, Server

Thrift ist bewusst geschichtet: Transport (z.B. TSocket, TServerSocket, TFramedTransport), Protocol (Kodierung: TBinaryProtocol — kompakt binär, TCompactProtocol — noch dichter, TJSONProtocol — debug-freundlich) und Server (TSimpleServer für einfache Fälle, TThreadPoolServer, TNonblockingServer).

Verwandte Grundlagen: Protobuf-Befehle (Serialisierung ohne RPC-Schicht) und FlatBuffers (Zero-Copy-Alternative). Typsichere Generierung gibt es auch bei Java und C/C++; textuelle Formate behandelt YAML/TOML/JSON-Befehle.

FlatBuffers-Befehle: flatc und Zero-Copy-Serialisierung kompakt erklärt

FlatBuffers ist eine von Google entwickelte, effiziente Cross-Platform-Serialisierungsbibliothek (ursprünglich 2014 für die Spieleentwicklung von Wouter van Oortmerssen, Apache License 2.0). Ihr besonderes Merkmal: Serialisierte Daten lassen sich direkt aus dem Speicher lesen, ohne sie vorher zu parsen oder zu entpacken (Zero-Copy).

Schema: die .fbs-Datei

Strukturen werden in .fbs-Schemata definiert. Zentrale Konstrukte sind table (optional erweiterbar, Felder mit Defaults), struct (feste Größe, inline eingebettet), enum und union:

namespace MyGame.Sample;

table Monster {
  name: string;
  hp: short = 100;
  pos: Vec3;
  inventory: [ubyte];
}

struct Vec3 { x: float; y: float; z: float; }

root_type Monster;

flatc: der Compiler

Der FlatBuffers-Compiler flatc wird per CMake gebaut und erzeugt aus dem Schema Code für die Zielsprache:

# C++-Code erzeugen (inkl. Mutator-Methoden)
flatc --cpp --gen-mutable monster.fbs

# Python und Rust parallel
flatc --python --rust monster.fbs

Verfügbare Sprach-Engines: --cpp, --csharp, --go, --java, --kotlin, --javascript, --typescript, --python, --rust, --swift, --php, --lua und mehr. Mit dem Flag --proto kann flatc sogar .proto-Dateien (Protocol Buffers) in .fbs-Schemata konvertieren; --size-prefixed erzeugt Längen-präfixierte Puffer.

Lesen ohne Parsen

Der generierte Zugriffscode greift per Offset-Tabelle direkt auf die Felder im Puffer zu — es wird nichts alloziert oder umkopiert, was Latenz und Speicherdruck minimiert. Daher eignet sich FlatBuffers besonders für Spiele, Mobile-Anwendungen und Performance-kritische Pfade. Änderungen am Schema bleiben dank table und Feldnummern abwärtskompatibel.

Verwandte Grundlagen: Protobuf-Befehle und Thrift (klassische Serialisierungs-Frameworks), Rust-Befehle und C/C++-Befehle für den Einsatz in systemnahen Umgebungen.

  1. Protobuf-Befehle: Protocol Buffers mit protoc kompakt erklärt
  2. SPIN: Model Checker für Promela-Modelle
  3. Z-Notation: Formale Spezifikation mit Mengenlehre
  4. Promela: Modellierungssprache für den Model Checker SPIN

Seite 25 von 46

  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
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