[french] discover haxe
DESCRIPTION
Haxe presentation from JeUXDiCode (La Rochelle) 20th February 2014TRANSCRIPT
![Page 1: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/1.jpg)
1
“Un langage pour les coder tous”
JeUXDiCode 20 février 2013La Rochelle
Par Axel Anceau
https://github.com/JeUXdiCode/2014Fevrier20
![Page 2: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/2.jpg)
2
20 février 2014
Introduction
➢ Langage de programmation de haut niveau
➢ Génération de code dans 7 langages différents
➢ Réalisation française (Cocorico) par Nicolas Cannasse
➢ Multiplateforme
➢ Répandu dans l'univers des développeurs de jeux indépendants
![Page 3: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/3.jpg)
3
20 février 2014
Sommaire
➔ Types de base et avancés
➔ Les fonctions en Haxe
➔ La compilation
➔ Les directives de compilation
➔ Les macros
➔ Tests unitaires
➔ Librairies haxe
➔ Librairies externes
➔ Un exemple : NodeJS
➔ Avantages & inconvénients de Haxe
![Page 4: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/4.jpg)
4
20 février 2014
1 code : 7 langages ?
PHP C# Java C++ JS Flash Neko
➢ Code réutilisable
➢ Un seul langage à maîtriser
➢ Développeurs contents
![Page 5: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/5.jpg)
5
20 février 2014
Le langage
➢ Langage orienté objet typé mais flexible
➢ Proche de l'Action Script
➢ Fonctions anonymes
➢ Itérateurs omniprésents .. good bye for(;;)
➢ Condition = Booléen
![Page 6: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/6.jpg)
6
20 février 2014
Les types
➢ Void : Enum ➢ Float : Classe➢ Int : Classe (hérite de Float)➢ Bool : Enum (true, false)➢ String : Classe
➢ Dynamic : Classe➢ Peut contenir un peu tout et n'importe quoi, mais on ne peut
pas faire tout et n'importe quoi avec !
➢ untyped : Mot clé➢ Aucune vérification n'est faite à la compilation, on peut faire
tout et n'importe quoi. À utiliser avec précaution
![Page 7: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/7.jpg)
7
20 février 2014
Utilisation
➢ Déclaration d'une variable avec var
➢ Spécification possible (mais non obligatoire) du type d'une variable
![Page 8: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/8.jpg)
8
20 février 2014
Types avancés (1)
➢ class : Déclaration d'une classe➢ Héritage de classe avec le mot clé extends➢ Implémentation d'interface(s) avec implements➢ Un seul et unique constructeur par classe (fonction new())➢ Un “initializer” (fonction __init()__) appelé avant l'intialisation
d'un quelconque attribut static
![Page 9: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/9.jpg)
9
20 février 2014
Types avancés (2)
➢ typedef : Structure de donnée ➢ Définit une structure de donnée typée
And so on...
![Page 10: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/10.jpg)
10
20 février 2014
Les fonctions (1)
➢ Typage obligatoire ; Surcharge impossible➢ Paramètres facultatifs précédés par un “?”. Les
variables sont remplies dans “l'ordre de leur type”
![Page 11: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/11.jpg)
11
20 février 2014
Les fonctions (2)
➢ Enregistrer une fonction dans une variable
➢ Toutes les variables déclarées avant sont accessibles (y compris variables de classe)
![Page 12: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/12.jpg)
12
20 février 2014
Les fonctions (3)
➢ Fonctions en paramètres de fonctions➢ Seuls les types des paramètres dans l'ordre sont à préciser,
(y compris les facultatifs), séparés par des “->” et se terminant par le type de retour de la fonction
Exemple avec la fonction de l'exemple précédent :
![Page 13: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/13.jpg)
13
20 février 2014
Compilation (1)
➢ Génération de code optimisée et rapide➢ Seuls les outils utilisés sont compilés
➢ Simple quelque soit le langage cible
![Page 14: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/14.jpg)
14
20 février 2014
Compilation (2)
➢ Configurable TRÈS facilement grâce à un fichier “.hxml”➢ Compilation : haxe fichier.hxml
![Page 15: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/15.jpg)
15
20 février 2014
Directives (1)
➢ Compilation conditionnelle (selon la cible)
![Page 16: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/16.jpg)
16
20 février 2014
Directives (2)
![Page 17: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/17.jpg)
17
20 février 2014
Macros
➢ Code exécuté à la compilation
➢ Un puissant outil à ne pas négliger
➢ Ne peut pas utiliser du code spécifique à une cible (on a pas encore commencé la compilation rappelez vous !)
![Page 18: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/18.jpg)
18
20 février 2014
Tests (1)
➢ Tests (basiques) intégrés dans Haxe
➢ Héritage de classe haxe.unit.TestCase
➢ 3 méthodes de test :➢ assertEquals(a, b)➢ assertTrue(a)➢ assertFalse(a)
➢ 2 méthodes de configuration➢ setup() appelée à l'instanciation➢ tearDown() appelée à la fin de tous les tests de classe
![Page 19: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/19.jpg)
19
20 février 2014
Tests (2)
➢ Ajouter les tests dans un “TestRunner”
➢ Possibilité d'exécuter les tests à la compilation
Exemple simple :
Arborescence
Classe testée
![Page 20: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/20.jpg)
20
20 février 2014
Tests (3)
Classe de test
![Page 21: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/21.jpg)
21
20 février 2014
Tests (4)
Main des tests
Fichier de compilation
Résultat des tests (avec beaucoup de surprise, ils sont passés !)
➢ Framework plus poussé : Munit
![Page 22: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/22.jpg)
22
20 février 2014
Librairies Haxe
➢ Un seul outil : haxelib➢ haxelib install <librairie>➢ haxelib update <librairie>➢ ...
➢ Quelques noms...
Flambe
![Page 23: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/23.jpg)
23
20 février 2014
Utiliser du code existant
➢ Le cas des fonctions hors classe, à travers un petit exemple JS....
Fonction javascript concaténant 2 variables
➢ Méthode plus ou moins différente selon les plateformes
![Page 24: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/24.jpg)
24
20 février 2014
Utiliser du code existant
Code Haxe faisant l'appel à la fonction javascript
Après compilation, insérer le code natif (javascript.js puis le code généré (haxe.js)
Résultat dans la console du navigateur :
![Page 25: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/25.jpg)
25
20 février 2014
Utiliser du code existant
➢ Le cas des classes, à travers un petit exemple....
Classe javascript simple à utiliser
![Page 26: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/26.jpg)
26
20 février 2014
Utiliser du code existant
➢ Déclaration d'une classe externe
Résultat dans la console :
![Page 27: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/27.jpg)
27
20 février 2014
Exemple concret: nodejs
➢ Classe http.Server
Documentation de http.Server
![Page 28: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/28.jpg)
28
20 février 2014
Exemple concret: nodejs
Classe externe http.Server
![Page 29: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/29.jpg)
29
20 février 2014
Exemple concret: nodejs
Exemple d'utilisation
➢ En voir plus ? https://github.com/clemos/node-api
![Page 30: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/30.jpg)
30
20 février 2014
Inconvénients d'Haxe
➢ Une documentation très mauvaise
➢ Une petite communauté➢ Librairies maintenues par 1 ou 2 pers. En moyenne➢ Peu de tutoriels➢ Peu de librairies à jour➢ Avancée rapide difficile → cercle vicieux
➢ Proche de l'ActionScript (qui n'est pas dans le coeur de tous les développeurs)
➢ Aucun IDE spécialisé dans Haxe.➢ Aucun debugger
![Page 31: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/31.jpg)
31
20 février 2014
Avantages d'Haxe
➢ Une compilation très rapide
➢ Réutilisabilité du code accrue
➢ Communauté très active
➢ Langage souple malgré son typage
➢ Les macros <3
➢ Une syntaxe commune pour toute les cibles !
![Page 32: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/32.jpg)
32
20 février 2014
Conseil final
Ne JAMAIS coder dans le code
généré !S'il vous plaît...
![Page 34: [French] Discover haxe](https://reader034.vdocuments.pub/reader034/viewer/2022042602/559b661b1a28ab363c8b471b/html5/thumbnails/34.jpg)
34
Merci pour votre écoute
(https://github.com/JeUXdiCode/2014Fevrier20)