HaXe

Kohteesta Wikipedia
Loikkaa: valikkoon, hakuun
HaXe
Haxe logo.svg
Paradigma moniparadigma
Tyypitys vahva, dynaaminen
Yleinen suoritusmalli käännettävä
Muistinhallinta roskienkeruu
Julkaistu 2005
Kehittäjä Nicolas Canasse
Vaikutteet Actionscript, OCaml, Java
Verkkosivu haxe.org

Haxe 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.

Historia[muokkaa | muokkaa wikitekstiä]

Haxen kehitys alkoi 22.10.2005. Versio 1.0 julkaistiin 17.4.2006 ja versio 2.0 julkaistiin 28.7.2008.


Viimeisin versio 3.3.0-rc.1 on julkaistu 25.5.2016.

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 3.3.0 tukee seuraavia käännöskohteita:

  • Flash 6-8
  • Flash 9-10
  • Neko
  • PHP
  • Actionscript 3
  • Java
  • JavaScript
  • C++
  • C#
  • Python
  • Lua

Suositeltuja Ohjelmointiympäristöjä[muokkaa | muokkaa wikitekstiä]

Suosituimpia ja helppokäyttöisimpiä ohjelmointiympäristöjä ovat:

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)