| Boo | |
|---|---|
| Basisdaten | |
| Paradigmen: | Objektorientierte Sprache |
| Erscheinungsjahr: | 2003 |
| Designer: | Rodrigo B. De Oliveira |
| Entwickler: | Rodrigo B. De Oliveira |
| Aktuelle Version | 0.9.7 (25. März 2013) |
| Typisierung: | statisch (siehe Text) |
| Beeinflusst von: | Python, C# |
| Beeinflusste: | Genie,Vala |
| Betriebssystem: | Windows,Linux,macOS, u.v.m. |
| Lizenz: | MIT /BSD[1] |
| https://boo-language.github.io/ | |
Boo ist eine seit 2003 von Rodrigo Barreto de Oliveira entwickelteProgrammiersprache für die MicrosoftCLR, die aber auch mitMono verwendet werden kann. Die Syntax lehnt sich stark an die vonPython an.[2] Seit 2013 hat es keine neuen Versionen gegeben, das Projekt wird nicht mehr gepflegt.
Boo iststatisch typisiert, wobei dem Programmierer die explizite Angabe von Typen von Variablen durchTypinferenz undgenerische Typen großteils erspart wird. Daneben wird auch das langsamere, vonRuby übernommeneDuck-Typing, alsodynamische Typisierung geboten.[2] Dadurch ist sie auf der explizit für statisch typisierte Sprachen ausgelegten CLR recht schnell, ohne auf die Flexibilität einerSkriptsprache verzichten zu müssen.
Von Python erbt die SpracheGeneratoren. Sie unterstützt relativ viele eingebaute Literale beispielsweise fürListen, Hashes undreguläre Ausdrücke. Hinzu kommen für eine OO-Sprache moderne, aus derFunktionalen Programmierung übernommene Features wieFirst-Class-Funktionen und echteClosures.[2] Was die Sprache von anderen Sprachen in derJava- und.NET-Welt unterscheidet, ist, dass sie syntaktischeMakros bietet, die ähnlich bequem einzusetzen sind wie inDylan.[3]
Boo istfreie Software mit eigener Lizenz, die derMIT- und derBSD-Lizenz stark ähnelt.[1]
EinHallo-Welt-Programm zur Ausgabe einerZeichenkette:
print"Hallo Welt!"
Funktion zum Generieren derFibonacci-Zahlen:
deffib():aaslong,baslong=0,1whiletrue:yieldba,b=b,a+b
EinfachesWindows-Forms-Beispiel mitKlassen,Closures undEvents:
importSystem.Windows.FormsimportSystem.DrawingclassMyForm(Form):defconstructor():b=Button(Text:"Click Me")b.Location=Point(100,50)b.Click+=do():MessageBox.Show("you clicked the button!")self.Controls.Add(b)f=MyForm()Application.Run(f)