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

1

Pa...
Introduction
➢

Langage de programmation de haut niveau

➢

Génération de code dans 7 langages différents

➢

➢

➢

Réalis...
Sommaire
➔

Types de base et avancés

➔

Les fonctions en Haxe

➔

La compilation

➔

Les directives de compilation

➔

Le...
1 code : 7 langages ?

PHP

C#

Java

C++

JS

Flash

➢

Code réutilisable

➢

Un seul langage à maîtriser

➢

Neko

Dével...
Le langage
➢

Langage orienté objet typé mais flexible

➢

Proche de l'Action Script

➢

Fonctions anonymes

➢

Itérateurs...
Les types
Void : Enum
➢ Float : Classe
➢ Int : Classe (hérite de Float)
➢ Bool : Enum (true, false)
➢ String : Classe
➢

➢...
Utilisation
➢

➢

Déclaration d'une variable avec var
Spécification possible (mais non
obligatoire) du type d'une variable...
Types avancés (1)
➢

class : Déclaration d'une classe
➢
➢
➢
➢

Héritage de classe avec le mot clé extends
Implémentation d...
Types avancés (2)

➢

typedef : Structure de donnée
➢

Définit une structure de donnée typée

And so on...
9
20 février 20...
Les fonctions (1)
Typage obligatoire ; Surcharge impossible
➢ Paramètres facultatifs précédés par un “?”. Les
variables so...
Les fonctions (2)
➢

➢

Enregistrer une fonction dans une variable
Toutes les variables déclarées avant sont
accessibles (...
Les fonctions (3)
➢

Fonctions en paramètres de fonctions
➢

Seuls les types des paramètres dans l'ordre sont à préciser,
...
Compilation (1)
➢

Génération de code optimisée et rapide
➢

➢

Seuls les outils utilisés sont compilés

Simple quelque so...
Compilation (2)
➢

Configurable TRÈS facilement grâce à un
fichier “.hxml”
➢

Compilation : haxe fichier.hxml

14
20 févri...
Directives (1)
➢

Compilation conditionnelle (selon la cible)

15
20 février 2014
Directives (2)

16
20 février 2014
Macros
➢

Code exécuté à la compilation

➢

Un puissant outil à ne pas négliger

➢

Ne peut pas utiliser du code spécifiqu...
Tests (1)
➢

Tests (basiques) intégrés dans Haxe

➢

Héritage de classe haxe.unit.TestCase

➢

3 méthodes de test :
➢
➢
➢
...
Tests (2)
➢

Ajouter les tests dans un “TestRunner”

➢

Possibilité d'exécuter les tests à la compilation
Exemple simple :...
Tests (3)

Classe de test

20
20 février 2014
Tests (4)

Fichier de compilation
Main des tests

Résultat des tests (avec beaucoup de surprise, ils sont passés !)

➢

Fr...
Librairies Haxe
➢

Un seul outil : haxelib
➢
➢
➢

➢

haxelib install <librairie>
haxelib update <librairie>
...

Quelques ...
Utiliser du code existant
➢

➢

Méthode plus ou moins
différente selon les plateformes

Le cas des fonctions hors classe,
...
Utiliser du code existant

Code Haxe faisant l'appel à la fonction javascript

Après compilation, insérer le code natif (j...
Utiliser du code existant
➢

Le cas des classes,
à travers un petit exemple....

Classe javascript simple à utiliser

25
2...
Utiliser du code existant
➢

Déclaration d'une classe externe

Résultat dans la console :
26
20 février 2014
Exemple concret: nodejs
➢

Classe http.Server

Documentation de http.Server

27
20 février 2014
Exemple concret: nodejs

28

Classe externe http.Server

20 février 2014
Exemple concret: nodejs

Exemple d'utilisation
➢

En voir plus ? https://github.com/clemos/node-api
29
20 février 2014
Inconvénients d'Haxe
➢

Une documentation très mauvaise

➢

Une petite communauté
➢
➢
➢
➢

➢

➢

Librairies maintenues par...
Avantages d'Haxe
➢

Une compilation très rapide

➢

Réutilisabilité du code accrue

➢

Communauté très active

➢

Langage ...
Conseil final

Ne JAMAIS coder
dans le code
généré !
S'il vous plaît...

32
20 février 2014
Bibliographie
Le site officiel : http://haxe.org/
&

33
20 février 2014
Merci pour votre écoute
(https://github.com/JeUXdiCode/2014Fevrier20)

34
Prochain SlideShare
Chargement dans…5
×

[French] Discover haxe

1 059 vues

Publié le

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

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 059
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
11
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

[French] Discover haxe

  1. 1. “Un langage pour les coder tous” JeUXDiCode 20 février 2013 La Rochelle https://github.com/JeUXdiCode/2014Fevrier20 1 Par Axel Anceau
  2. 2. 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 2 20 février 2014
  3. 3. 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 3 20 février 2014
  4. 4. 1 code : 7 langages ? PHP C# Java C++ JS Flash ➢ Code réutilisable ➢ Un seul langage à maîtriser ➢ Neko Développeurs contents 4 20 février 2014
  5. 5. 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 5 20 février 2014
  6. 6. 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 6 20 février 2014
  7. 7. Utilisation ➢ ➢ Déclaration d'une variable avec var Spécification possible (mais non obligatoire) du type d'une variable 7 20 février 2014
  8. 8. 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 8 20 février 2014
  9. 9. Types avancés (2) ➢ typedef : Structure de donnée ➢ Définit une structure de donnée typée And so on... 9 20 février 2014
  10. 10. 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” ➢ 10 20 février 2014
  11. 11. Les fonctions (2) ➢ ➢ Enregistrer une fonction dans une variable Toutes les variables déclarées avant sont accessibles (y compris variables de classe) 11 20 février 2014
  12. 12. 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 : 12 20 février 2014
  13. 13. 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 13 20 février 2014
  14. 14. Compilation (2) ➢ Configurable TRÈS facilement grâce à un fichier “.hxml” ➢ Compilation : haxe fichier.hxml 14 20 février 2014
  15. 15. Directives (1) ➢ Compilation conditionnelle (selon la cible) 15 20 février 2014
  16. 16. Directives (2) 16 20 février 2014
  17. 17. 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 !) 17 20 février 2014
  18. 18. 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 18 20 février 2014
  19. 19. Tests (2) ➢ Ajouter les tests dans un “TestRunner” ➢ Possibilité d'exécuter les tests à la compilation Exemple simple : Classe testée Arborescence 19 20 février 2014
  20. 20. Tests (3) Classe de test 20 20 février 2014
  21. 21. Tests (4) Fichier de compilation Main des tests Résultat des tests (avec beaucoup de surprise, ils sont passés !) ➢ Framework plus poussé : Munit 21 20 février 2014
  22. 22. Librairies Haxe ➢ Un seul outil : haxelib ➢ ➢ ➢ ➢ haxelib install <librairie> haxelib update <librairie> ... Quelques noms... Flambe 22 20 février 2014
  23. 23. Utiliser du code existant ➢ ➢ Méthode plus ou moins différente selon les plateformes Le cas des fonctions hors classe, à travers un petit exemple JS.... Fonction javascript concaténant 2 variables 23 20 février 2014
  24. 24. 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 : 24 20 février 2014
  25. 25. Utiliser du code existant ➢ Le cas des classes, à travers un petit exemple.... Classe javascript simple à utiliser 25 20 février 2014
  26. 26. Utiliser du code existant ➢ Déclaration d'une classe externe Résultat dans la console : 26 20 février 2014
  27. 27. Exemple concret: nodejs ➢ Classe http.Server Documentation de http.Server 27 20 février 2014
  28. 28. Exemple concret: nodejs 28 Classe externe http.Server 20 février 2014
  29. 29. Exemple concret: nodejs Exemple d'utilisation ➢ En voir plus ? https://github.com/clemos/node-api 29 20 février 2014
  30. 30. 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 30 20 février 2014
  31. 31. 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 ! 31 20 février 2014
  32. 32. Conseil final Ne JAMAIS coder dans le code généré ! S'il vous plaît... 32 20 février 2014
  33. 33. Bibliographie Le site officiel : http://haxe.org/ & 33 20 février 2014
  34. 34. Merci pour votre écoute (https://github.com/JeUXdiCode/2014Fevrier20) 34

×