Cobra ist eine imperative, hochsprachliche, objektorientierte Programmiersprache, die Charles Esterbrook entworfen hat. Die erste Version erschien 2006, die öffentliche Veröffentlichung unter der MIT-Lizenz folgte 2008. Cobra läuft auf .NET und Mono und kombiniert Python-artige Einrückung mit statischer Typisierung, Design-by-Contract und eingebauten Unit-Tests.
Compiler und erste Schritte
Der Cobra-Compiler übersetzt Quellcode in C# und kompiliert diesen dann mit dem .NET-Compiler weiter. Ein Hallo-Welt-Programm:
class Hallo
def main
print 'Hallo, Cobra!'
Cobra nutzt Einrückung statt Klammern, verlangt aber Typangaben für Parameter und Rückgabetypen.
Kernkonzepte
- Design-by-Contract: Aus Eiffel übernommen — Methoden deklarieren Vorbedingungen (
require), Nachbedingungen (ensure) und Klasseninvarianten (invariant), die zur Laufzeit geprüft werden. - Statische und dynamische Typisierung: Standardmäßig statisch, einzelne Variablen können mit
dynamiczur Laufzeit aufgelöst werden. - Eingebaute Unit-Tests: Testfälle stehen direkt im Quellcode —
test-Blöcke innerhalb von Klassen werden beim Kompilieren ausgeführt. - Nil-Tracking: Der Compiler verfolgt zur Compile-Zeit, ob Variablen nil (null) sein können, und verhindert so viele NullReference-Fehler.
- Einfluss von Objective-C: Benannte Parameter und Methoden-Signaturen erinnern an Objective-C-Stil.
Praxis-Tipps
- Die Contract-Prüfung macht Cobra interessant für sicherheitskritische Anwendungen, bei denen Zusicherungen dokumentiert und erzwungen werden sollen.
- Das Projekt ist seit etwa 2015 inaktiv; die Website cobra-language.com ist offline, der Quellcode aber weiterhin verfügbar.
- Für Python-Entwickler ist die Einrückung vertraut; die Typannotationen ähneln C#.
Verwandte Grundlagen: Python-Befehle, C#-Befehle, Eiffel-Befehle, Compiler sowie die .NET-Alternativsprachen Boo-Befehle und Nemerle-Befehle.