IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

jLang : extension du ECMAScript


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 14
    Par défaut jLang : extension du ECMAScript
    Bonjour,
    Pour répondre à mes besoins, j'ai étendu la syntaxe du Javascript pour ajouter
    • la syntaxe de base orientée objet
    • les namespaces
    • la réécriture des opérateurs
    • l'inlining de fonction


    J'en ai profité pour créer un site internet (en anglais) pour partager ce programme :

    http://www.jlang.org/

    Je viens de le mettre en ligne il y a quelques jours. Que penses-vous de ces ajouts faits au langage ?

    Voici un exemple de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace Library.Example {  
     
        private class Displayer {  
     
            public inline function sayHello() {  
                alert( 'Hello world' );  
            }  
        }  
     
        private var d = new Displayer();  
        d.sayHello();  
    }

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par Spirit 203 Voir le message
    Bonjour,
    Pour répondre à mes besoins, j'ai étendu la syntaxe du Javascript pour ajouter
    • la syntaxe de base orientée objet
    • les namespaces
    • la réécriture des opérateurs
    • l'inlining de fonction


    J'en ai profité pour créer un site internet (en anglais) pour partager ce programme :

    http://www.jlang.org/

    Je viens de le mettre en ligne il y a quelques jours. Que penses-vous de ces ajouts faits au langage ?

    Voici un exemple de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace Library.Example {  
     
        private class Displayer {  
     
            public inline function sayHello() {  
                alert( 'Hello world' );  
            }  
        }  
     
        private var d = new Displayer();  
        d.sayHello();  
    }
    Ben c'est un langage qui est une simple surcouche au JS, et après quand on doit interagir avec le DOM on écrit ça comment ?

  3. #3
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 14
    Par défaut
    Justement, créer les specs d'une surcouche du langage javascript est trivial. En revanche, créer un transformateur l'est moins. Je ne m'amuse pas à dire "voici un nouveau langage, faites le transformateur". La justification de l'existence du site est que je met à la disposition de la communauté un transformateur de cette surcouche vers le javascript.

    On peut donc écrire un script avec cette surcouche, appliquer la transformation, et exécuter le résultat dans un navigateur.

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    je n'ai pas tout compris concernant l'implémentation direct au seins d'une page html :-/

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace Library.Example {  
     
        private class Displayer {  
     
            public inline function sayHello() {  
                alert( 'Hello world' );  
            }  
        }  
     
        private var d = new Displayer();  
        d.sayHello();  
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jlangc -o test.js test.jl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function b ()  
    {  
    }  
     
    b.prototype.sayHello = function sayHello () {  
        alert("Hello world");  
    };  
    alert("Hello world");
    Voilà le genre de chose qu'ici j'appelais "une satisfaction intellectuelle encombrante".

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 14
    Par défaut
    Je reconnais que l'ajout de la syntaxe orientée objet n'était pas nécessaire (et d'ailleurs, ne m'a quasiment rien coûté en temps - justes quelques heures -), mais il y a d'autres fonctionnalités que je ne pense pas pouvoir qualifier de "satisfaction intellectuelle encombrante" :

    http://www.jlang.org/Compatibility

  7. #7
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Class = function (extend, body) {
       theClass = function () {
     
       if ((typeof(body) == 'undefined') && (typeof(extend) == 'object')) {
          for (property in extend) {
           this[property] = extend[property];
          }
       } else if (typeof(body) == 'object') {
          if(typeof(extend) == 'function') {
             this.superclass = extend;
             this.prototype = extend;
             this.superclass();
             delete this.superclass;
          }
          for (property in body) {
           this[property] = body[property];
          }
       } 
     
       if (typeof this.initilize == 'function')
          this.initilize();
       };
       return theClass;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    classA = Class ({
      name: 'truc',
      alert: function () {
        alert(this.name);
      },
      initilize: function () {
        alert('init classA object');
      }
    });
    classB = Class (classA, {//class  classB inherit classA...
      prenom: 'chose',
      alert: function () {
        alert(this.name + ' ' + this.prenom);
      },
      initilize: function () {
        alert('init classB object');
      }
    });
    var A = new classA();
    var B = new classB();
     
    A.alert();
    B.alert();
    il y a plein de façon de faire de l'héritage et de la définition de classe en JavaScript
    la programmation à objet à base de classe n'est pas obligatoirement meilleure que celle à base de prototype. et il est souvent bien plus simple d'apprendre le langage que de passer par un traducteur qui de toute façon aura des limite et ne permettra pas d'écrire aussi facilement que dans le langage d'origine.

    ton jl se veux proche de C++ ou java mais il est obligatoirement différent et t'impose des limites quant à ton outils jlanc
    tu as donc les limite de java comme par exemple l'impossibilité de crée des objet sans classe et les limite de ton outil certain subtilité de java ne pouvant être traduite en js

    mais c'est toujours amusant de jouer avec ce genre de chose.
    ça donne parfois des proches étonnantes
    pour les pro de Objective-C (Langage C objet dynamique et compilé) il y a
    Objective-J
    Objective-J est un fichier js de 200k
    la version publique en fait 24k

    A+JYT

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Quel SGBD correspond aux fichiers à extension .DAT
    Par jcpitaud dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/04/2006, 20h11
  3. [TP]rendre une unité avec l'extension tpu
    Par mmm dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 28/10/2003, 20h09
  4. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28
  5. Algo de tri, extension
    Par Mouse dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/02/2003, 00h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo