Jazyk Genie

Před pár dny jsem se tady rozplýval nad jazykem Vala. Sice ještě není úplně vyladěn, ale myslím že bude hrát významnou roli zejména na linuxovém desktopu, a to nejen v prostředí Gnome, ale na Linuxu celkově. Syntaxe vychází z jazyků C# a Java. Někdo má ovšem raději Python, jiný zase Javu nebo C# nezkousne.

A právě pro tyto účely je zde nový jazyk Genie. Svojí syntaxí a jednoduchostí připomíná Python, Boo nebo D. Očekávejte tedy snadno naučitelnou syntaxi, čistý zápis bez přebytečných závorek (ano odsazování ve stylu Pythonu) a stoprocentní komatibilitu s Valou. A kde že Genie seženete? Pokud máte nainstalovaný kompilotár Vala, máte automaticky i Genie. Je to jen jiná syntaxe pro úplně to samé. Klasická ukázka:

[indent=2]
init
print "Hello World"

Kompilace pak:

$ valac hello.gs
$ ./hello

Snadné, že? Ale proč vlastně nepoužít rovnou Python? Inu Geni je podobně jako Vala kompilovaný jazyk. Vytvořená Hello World binárka má pár kilobajtů. Jako byste ji napsali v jazyce C. Žádný runtime. Žádný garbage collector.

Genie si ovšem zachovává všechny výhody, jako má Vala. Například odvozování typů.
var i = 3

var
a = "happy"
b = "sad"
c = "ambivalent"

for var I = 1 to 10
print "looping"

Líbí se vám ve Vale kontrola na null? Genie ji má taky.

def fn_allow_nulls (string? param) : string?
return param

Genie má podobně jako Vala ukazatele, takže paměť můžete spravovat i sami. Někdy je to holt potřeba - když například použijete knihovnu z jazyka C, která vyžaduje práci s ukazateli.

Práce s objekty je snadná.

class Foo : Object

prop a : int

init
print "foo is intitialized"

final
print "foo is being destroyed"

/* only class properties may be set in creation methods */
construct (b : int)
a = b

/* only class properties may be set in creation methods */
construct with_bar (bar : int)
a = bar

Genie umí rozhraní, vlastnosti (properties), signály, delegáty, stukruty, výčty, výjimky. Genie má vše. Můžete jej používat už dnes.

Těším se, až se překladač jazyka Vala dostane do verze 1.0 a stabilizuje se API/ABI. Odhaduji, že se Vala/Genie začnou raketově rozšiřovat.
02 June 2010 | genie | vala
twitter.com linkedin.com
google.com/+ facebook.com
flickr.com youtube.com