[french] discover haxe

34
1 “Un langage pour les coder tous” JeUXDiCode 20 février 2013 La Rochelle Par Axel Anceau https://github.com/JeUXdiCode/2014Fevrier20

Upload: axel-anceau

Post on 07-Jul-2015

562 views

Category:

Technology


0 download

DESCRIPTION

Haxe presentation from JeUXDiCode (La Rochelle) 20th February 2014

TRANSCRIPT

Page 1: [French] Discover haxe

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15

20 février 2014

Directives (1)

➢ Compilation conditionnelle (selon la cible)

Page 16: [French] Discover haxe

16

20 février 2014

Directives (2)

Page 17: [French] Discover haxe

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

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

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

20

20 février 2014

Tests (3)

Classe de test

Page 21: [French] Discover haxe

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

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

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

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

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

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

27

20 février 2014

Exemple concret: nodejs

➢ Classe http.Server

Documentation de http.Server

Page 28: [French] Discover haxe

28

20 février 2014

Exemple concret: nodejs

Classe externe http.Server

Page 29: [French] Discover haxe

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

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

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

32

20 février 2014

Conseil final

Ne JAMAIS coder dans le code

généré !S'il vous plaît...

Page 33: [French] Discover haxe

33

20 février 2014

Bibliographie

Le site officiel : http://haxe.org/

&

Page 34: [French] Discover haxe

34

Merci pour votre écoute

(https://github.com/JeUXdiCode/2014Fevrier20)