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

[French] Discover haxe

Jul 07, 2015

Download

Technology

Axel Anceau

Haxe presentation from JeUXDiCode (La Rochelle) 20th February 2014
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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)