Lale

Eine natürliche, ausdrucksstarke Systemsprache für technische und zuverlässige Software

Lale ist eine Open-Source-Programmiersprache für Ingenieurwesen, Wissenschaft und Mathematik. Sie macht Software leicht zu lernen, zu lesen und zu warten — ohne auf Leistung, Sicherheit und die Kontrolle einer Systemsprache zu verzichten.

Was Lale anders macht

Lesbare Syntax

Keine erzwungenen Semikolons und kein Klammerngewirr — der Code bleibt nah an der Art, wie man eine Idee ausdrückt.

Sicherheit durch physikalische Einheiten

Einheiten sind Teil des Typsystems, daher ist 5 <m> + 10 <s> ein Fehler zur Übersetzungszeit.

Mathematische Notation

Griechische Buchstaben, Indexziffern (x₁) und Hochzahlen (v²) funktionieren direkt.

1-basierte Indizierung

Arrays beginnen bei 1 — so, wie es Mathematik und Technik erwarten.

Explizite Sicherheit

Keine versteckten Typumwandlungen und keine stillschweigende Verengung — jede Umwandlung ist sichtbar.

Unicode von Grund auf

Unicode ist von der Grammatik an eingebaut, daher sind Bezeichner und Text Bürger erster Klasse.

Lale auf einen Blick

/// Calculate kinetic energy with physical units
fn kinetic_energy(m as f64 in <kg>, v as f64 in <m/s>) returns f64 in <kg⋅m²/s²>
  return 0.5 ⋅ m ⋅ v²
end fn

var mass as f64 in <kg> = 10.5
var velocity as f64 in <m/s> = 2.0

loop
  var E_k = kinetic_energy(mass, velocity)
  write "Kinetic Energy: {E_k} {#unit of E_k}"   // Kinetic Energy: 21 kg⋅m²/s²
  mass += 10 <kg>
end loop when mass > 30

Lesbare Syntax, mathematische Notation und vom Compiler geprüfte Einheiten in einem Programm — das Ziel ist es, die Bedeutung des Codes leichter erkennbar zu machen.

Blog

Motivation: Warum Lale?

Warum es Lale gibt — physikalische Korrektheit, mathematische Notation und eine einfache, intuitive Sprache.

Lale als offenes Informatik-Lehrbuch

Lales Grammatik und Dokumentation sind darauf ausgelegt, allgemeine Informatik-Konzepte zu vermitteln — nicht nur die Syntax einer Sprache.

Projektstatus

Lale wird aktiv entwickelt und nähert sich seiner ersten externen Beta. Die Sprache und der Referenz-Interpreter sind funktionsfähig, und der Compiler verwendet eine gemeinsame Zwischenrepräsentation, die sowohl Interpretation als auch native Kompilierung unterstützen soll. Es ist noch keine stabile 1.0.0-Sprache.

Lies das Benutzerhandbuch oder die Architekturdokumentation, um mehr zu erfahren.