HaXe
|
|
|
|---|---|
| Paradigma | moniparadigma, olio, prototyyppipohjainen |
| Tyypitys | vahva, dynaaminen |
| Yleinen suoritusmalli | käännettävä |
| Muistinhallinta | roskienkeruu |
| Julkaistu | 2005 |
| Kehittäjä | Nicolas Canasse |
| Vaikutteet | Actionscript, OCaml |
| Verkkosivu | haxe.org |
HaXe (äännetään [heks]) on useassa ympäristössä toimiva ohjelmointikieli, jonka kääntäjä voi tuottaa useita yleisessä käytössä olevia ohjelmointikieliä. Sen mahdollisia kohteita ovat mm. seuraavat:
- Flash-sovellukset
- Asiakaspuolen websovellukset
- Apachen CGI-sovellukset
- Omillaan toimivat työpöytäsovellukset.
Sisällysluettelo
Historia[muokkaa | muokkaa wikitekstiä]
HaXen kehitys alkoi 22. lokakuuta 2005. Versio 1.0 julkaistiin 17. huhtikuuta 2006. Uusin versio 2.07 on julkaistu 30. tammikuuta 2011.
Käännöskohteet[muokkaa | muokkaa wikitekstiä]
HaXe-kielisiä ohjelmia voi kääntää useissa eri virtuaalikoneissa suoritettaviksi kieliksi, sekä natiivikoodiksi käännettäviksi kieliksi kuten C++. Versio 2.07 tukee seuraavia käännöskohteita:
- Flash 6-8
- Flash 9-10
- Neko-virtuaalikone
- PHP
- Actionscript 3
- JavaScript
- C++
Kääntäminen C#- ja Java-kielille on vielä kehitteillä.
Kielen ominaisuudet[muokkaa | muokkaa wikitekstiä]
HaXe muistuttaa Actionscript- ja Javascript-kieliä, mutta sisältää muitankin ominaisuuksia. Se on olio-ohjelmointikieli, jossa on poikkeuksia. Sen tyyppimalla on vahva tyypitys, joka kuitenkin mahdollistaa dynaamisten tyyppien käytön. Kielessä on hyvä tuki geneerisyydelle, reflektiolle ja funktionaaliselle ohjelmoinille.
Enumeroidut tyypit ovat merkittävässä asemassa haXe-kielessä. Niillä voi olla parametrejä ja ne voivat olla rekursiivisia, joten ne muistuttavat esim. Haskell- ja ML-kielten algebrallisia tietotyyppejä.
enum Color {
red;
green;
blue;
rgb: ( r : Int, g : Int, b : Int );
}
class Colors {
static function toInt ( c : Color ) : Int {
return switch ( c ) {
case red: 0xFF0000;
case green: 0x00FF00;
case blue: 0x0000FF;
case rgb(r, g, b): (r << 16) | (g << 8) | b;
}
}
static function validCalls() {
var redint = toInt(Color.red);
var rgbint = toInt(Color.rgb(100,100,100));
}
}
(muokattu haXe-oppaan pohjalta)