• [^] # Re: Surprise

    Posté par . En réponse au journal Lisaac: sorti de la 0.39beta. Évalué à 7.

    Personne a tord, personne a raison.
    D'un point de vue purement theorique, oui, tu peux compiler ton code javascript vers un code machine qui va faire ce que tu veux.
    Va bien falloir si tu veux le faire tourner sur un processeur de toutes facons.

    Apres, si JavaScript (et pas un langage derive de JavaScript, du javascript quoi), est compilable en code natif, donne moi le code natif (archi de ton choix), du bout de code suivant:

    var x=5;
    eval("var z=5");
    eval("x+=z");
    alert(x);

    Et encore, je suis gentil, les parametres d'eval sont des constantes, ton compilo js pourrait etre assez malin pour derouler le contenu d'eval (mais bon courage pour implementer ca de facon semantiquement correct, genre redeclaration de variable qui doit generer une erreur runtime et non a la compilation et tout ce genre de joyeusete).
    Rajoute les closures par dessus toutes ces joyeusete, tu vas t'amuser.

    Mon petit doigt me dit que tu vas devoir embarquer un bout de code natif tellement gros qu'on pourra aisement qualifier ton binaire de VM compilant un code inexecutable tel quel, et donc le placer dans la categorie des langages non compile nativement.
    Apres, tu peux te limiter a subset du langage, comme Mono le fait si j'en crois le site web. Ca ne supporte d'ailleurs pas les generics, c'est ballot quand meme, ca fait un peu retour a java 1.4.

    Reste apres le pignolage pour savoir ce que compiler veut dire, par opposition a compiler nativement, qui qu'est arrive le premier et qui qu'a la plus grosse, je ne m'aventurerais pas sur cette pente savonneuse. Sauf pour la plus grosse, c'est moi bien evidemment.
    Personellement, dans le contexte, j'ai compris ce qu'il voulait dire, mais c'est surement aussi parce que je connais deja lisaac et que je sais qu'en vrai, ca genere du C derriere, donc j'ai naturellement fait l'association compiler = compiler nativement.

    Toujours est il que certain langages sont par nature tres dynamiques et leur execution de facon semantiquement correcte ne peut se faire qu'en compilant a la volee leur code.
    JavaScript en fait partie.
    D'aucuns considerent qu'une compilation a la volee en prerequis exlue d'emblee pour le qualificatif "compilation native", et quelque part, c'est dur de leur donner tord.

    Apres, ca veut pas dire que le code compile, c'est du code de tatoue, de dur, de vrai, avec des couilles grosses comme des pasteques et que le bytecode c'est pour les tapettes ne pouvant se passer de leur flexi felix.

    Allez, pti bisou la?