• # qques questions sur Lissac et... Ruby, Java, Caml...

    Posté par (site web personnel) . En réponse à la dépêche 23 mars: Conférence au LORIA sur Lisaac, un nouveau langage. Évalué à 3.

    Désolé, j'ai pas encore lu les 189 posts précédents, ce qui ne m'empêche pas de poser les questions que voici qui ne me semblent pas avoir été posées :

    (1) A première vue, du point de vue la syntaxe et du fait que tout à l'air objet pour Ruby et Lissac, Lissac me fait penser à Ruby

    Est-ce que qqu'un a comparé ces deux langages ?

    (2) les optimisations mises en oeuvre pour la compilation de Lissac pourraient-elles être mises en oeuvre pour d'autres langages comme Java ?

    Par exemple, un certain nombre d'optimisations sont en cours d'élaboration pour détecter si tel ou tel objet a un scope qui peut lui permettre d'être allouer dans la pile au lieu d'être alloué dans le tas. Voir http://www-128.ibm.com/developerworks/java/library/j-jtp1018(...)

    Serait-il possible de mettre en oeuvre les optimisations de Lissac pour d'autres langages ?

    (3) Ruby connait un grand enthousiasme en ce moment via (a) le framework Ruby On Rails pour la programmation web et (b) comme candidat pour fabriquer facilement des DSL (via la métaprogrammation ?).

    Si Lissac, via la compilation, enfonce Ruby (dont le coté dynamique a l'air d'avoir un cout), et supporte des fonctionnalités analogues à celles de Ruby, Lissac pourrait aussi être positionné sur les mêmes créneaux (a) et (b).

    Cela a-t-il été envisagé ?

    (4) Lissac supporte-il le polymorphisme à la Caml ?

    par exemple, en Caml, on peut écrire une fonction telle que (j'écris de mémoire) :

    let rec size list = match list with
    [] -> 0
    | head::tail -> (size tail) + 1

    et cette fonction est typé comme ['a] -> int : elle peut opérer sur des listes de n'importe quoi.

    Je trouve qu'avec l'inférence de type cela donne un fort avantage par rapport à Java. En Java, sans inférence de type, en utilisant des types paramétrés, on peut arriver à écrire qque chose comme :

    public SortedMap<ArrayList<MBeanServerInvocationHandler>> getFoo() {
    SortedMap<ArrayList<MBeanServerInvocationHandler>> foo =
    new SortedMap<ArrayList<MBeanServerInvocationHandler>>();
    foo.doSomething();
    return foo;
    }

    Beurk, quelle horreur.

    Voir http://www.cabochon.com/~stevey/sokoban/docs/article-java.ht(...) pour une critique de Java.

    (5) en Caml, on peut aussi faire du pattern matching, une sorte de switch, comme en C, mais amélioré car pouvant porter sur des types de données qui ne sont pas limités au type 'int'.

    Est-ce possible via Lissac ?

    Merci de vos éclaircissements.

    Dominique
    http://www.jroller.com/page/dmdevito