Figyelmet érdemlő modern nyelvek, II. rész: Ceylon, Go, Dart
Folytatjuk korábban megkezdett sorozatunkat, melyben kevésbé ismert, de egyre népszerűbb nyelveket mutatunk be. Mai hármasunk a Ceylon, a Go, és a Dart.
Ceylon
A Ceylont az a Gavin King alkotta meg, aki a Hibernate atyja is egyben, így nem meglepő, hogy a Ceylon alapvetően egy Java-ra épülő statikus, erősen típusos nyelv. A fejlesztés során mindvégig szem előtt tartották a Java erősségeit, és gyengeségeit, valamint azt, hogy egy olyan nyelvet szeretnének alkotni, mellyel hatékonyabban, és könnyebben lehet majd strukturált adatokkal dolgozni, ezzel megszüntetve a Java XML-től való "függőségét". Így néz ki például a Ceylonban egy hierarchikus struktúra deklarálása, és értékadása:
Html page = Html {
Head {
title="Hello";
};
Body {
P {
css = "greeting";
"Hello, World!"
};
};
}
Nagy hangsúlyt fektettek még arra is, hogy javítsanak a Java "bőbeszédűségén" (miközben megtartják a könnyen olvashatóságát), a szintaktika pedig az elődnél jobban támogassa a deklaratív, és a metaprogramozást, illetve a különböző keretrendszerek használatát.
A Ceylon Java bájtkódra fordul, így könnyedén futtatható JVM-mel, és elérhető hozzá egy - az Eclipsen alapuló - IDE is. Az érdeklődők a hivatalos honlapon megtalálnak minden infót.
Go (vagy Golang)
A Google által fejlesztett Go nyelv megalkotói Robert Griesemer, Rob Pike, és Ken Thompson voltak. Szintaktikájában a C-hez áll a legközelebb, de felfedezhetőek benne a Python nyomai is. Alapvetően objektumorientált, de nem úgy, ahogy azt egy a Java-hoz, vagy C#-hoz szokott fejlesztő gondolná (erről itt találtok egy remek írást). A Go kialakításakor az volt a fő cél, hogy egy olyan konkurens nyelvet hozzanak létre, mely alkalmazások, és rendszerek programozására egyaránt alkalmas, nem véletlen, hogy a Google-nél is előszeretettel alkalmazzák saját projektekben.
A Go további, gyakran emlegetett előnyei:
- nagyon gyorsan fordul
- támogatja a konkurens programozást
- rendelkezik garbage collectorral
Egy kis ízelítő a Go szintaktikájából, a Fibonacci-sorozat első 5 tagjával:
package main
import "fmt"
// fib returns a function that returns
// successive Fibonacci numbers.
func fib() func() int {
a, b := 0, 1
return func() int {
a, b = b, a+b
return a
}
}
func main() {
f := fib()
// Function calls are evaluated left-to-right.
fmt.Println(f(), f(), f(), f(), f())
}
További információt, és egy online fordítót(!) a Go hivatalos honlapján találtok.
Dart
A 2011-ben bejelentett, és szintén a Google által fejlesztett Dart nem kevesebbett tűzött ki céljául, mint hogy idővel leváltja a JavaScriptet a böngészőkben. A nyelv maga leginkább a JavaScriptnek, és a Java-nak a keverékére hasonlít, természetesen igyekeztek a fejlesztők mindkét nyelvből a hasznos dolgokat átemelni, így ígéretük szerint a Dart jóval gyorsabb, és jobban skálázható, mint a JS. A Dart opcionálisan típusos, tehát megtehetjük azt, hogy a fejlesztés korai szakaszában a JavaScriptben megszokott módon írjuk a kódot, és csak később egészítjük ki a megfelelő típusmegszorításokkal:
// Ez egy típusok nélküli függvény
recalculate(origin, offset, estimate) {
// ...
}
// Ez pedig már a típusos verziója, egy opcionális paraméterrel
num recalculate(Point origin, num offset, {bool estimate: false}) {
// ...
}
Természetesen a Dart további hasznos funkciókkal is rendelkezik, ilyen például a setterek, és a getterek elhagyhatósága, vagy a kaszkádolt metódushívás. Aki többet szeretne tudni, az keresse fel a dartlang.org-ot.