Boo (Programmiersprache)
Boo | |
---|---|
Datei:Boo.png | |
Basisdaten | |
Paradigmen: | Objektorientierte Sprache |
Erscheinungsjahr: | 2003 |
Designer: | Rodrigo B. De Oliveira |
Entwickler: | Rodrigo Barreto de Oliveira |
Aktuelle Version: | 0.8.2 (20. Mai. 2008) |
Wichtige Implementierungen: | auyu6 |
Beeinflusst von: | Python |
Betriebssystem: | Windows, Linux, Mac OS X, u.v.m. |
Lizenz: | MIT / BSD |
boo.codehaus.org |
Boo ist eine seit 2003 von Rodrigo Barreto de Oliveira entwickelte Programmiersprache für die Microsoft CLR, die aber auch mit Mono verwendet werden kann. Die klare und einfache Syntax lehnt sich stark an die von Python an.
Boo ist statisch typisiert, wobei dem Programmierer das explizite Binden von Variablen an Typen durch Typinferenz und Generische Typen großteils erspart wird. Daneben wird auch das langsamere, von Ruby übernommene Duck Typing, also dynamische Typisierung geboten. Dadurch ist sie auf der explizit für statisch typisierte Sprachen ausgelegten CLR recht schnell, ohne auf die Flexibilität einer Skriptsprache verzichten zu müssen.
Von Python erbt die Sprache Generatoren. Sie unterstützt relativ viele eingebaute Literale beispielsweise für Listen, Hashes und Reguläre Ausdrücke. Hinzukommen für eine OO-Sprache moderne, aus der Funktionalen Programmierung übernommene Features wie first-class Funktionen, echte Closures und Currying. Was die Sprache von anderen Sprachen in der Java- und .NET-Welt abhebt, ist, dass sie syntaktische Makros bietet, die ähnlich bequem einzusetzen sind wie in Dylan.
Boo ist freie Software mit eigener Lizenz, die der MIT-/BSD-Lizenz stark ähnelt.
Code-Beispiele
print "Hallo Welt!"
Funktionen
Funktion zum Generieren der Fibonacci-Zahlen:
def fib(): a as long, b as long = 0, 1 while true: yield b a, b = b, a + b
Windows-Form
Einfaches Windows-Form-Beispiel mit Klassen, Closures und Events:
import System.Windows.Forms import System.Drawing class MyForm(Form): def constructor(): 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)
plusX = { a as int | return { b as int | return a + b }} print plusX(3)(4)
Bedeutung: „plusX ist eine Funktion, die die Integer-Variable a als Parameter hat und die eine andere Funktion zurückgibt, die die Integer-Variable b als Parameter hat und a+b zurückgibt.“
Siehe auch
- IronPython – Python für .NET