mar
02
2011

par Paul
php_squad

Je viens de tomber sur: phpreboot

En regardant rapidement, ça a l’air sympathique:

  • Support de l’unicode
  • JSON literal
  • a SQL compatible syntax
  • a dynamic language with duck typing and a gradual type system

Même si mélanger plusieurs syntaxe (SQL, JSON, XML) au sein d’un même script est assez déroutant:

<html>
 <title>hello PHP.reboot</title>
 <body>
   <h1>
    {
      echo "Hello World !"
    }
   </h1>
 </body>
</html>
n = 3
a = select name from foo where id < $n
foreach(a as key: value) {
  echo "row: " + key + " name: " + value.name
}

ou encore

persons = [
 {
  "name": "Smith",
  "age": 20,
  "color": "blue"
 },
 {
  "name": "Wesson",
  "age": 17,
  "color": "red"
 }
]

foreach(persons as person) {
  echo "Name:" + person.name
  echo "Color:" + person.color
}

Même si la concaténation avec le « + » est appréciable, je ne suis pas du tout fan pour la syntaxe sans ‘$’ mais des fois on le garde…

Sauf que …

can run on top of any JEE stacks, or android, it’s a JVM language !

Et la c’est le drame … Faire un PHP Reboot au dessus de JAVA.
Quand on connait les performances de JAVA en moyenne, et sa tendance à engloutir le moindre octect de mémoire vive…

Je n’ai qu’une question : Pourquoi ? Pourquoi le faire au dessus de JAVA ?

Qui aura les compétences/motivations/courage pour faire un vrai PHP Reboot ??

  1. Amaury dit :

    Pourquoi le faire au dessus de JAVA ?

    Il faut dissocier Java (le langage) et java (la machine virtuelle). Il existe un grand nombre de langages, avec des syntaxes très différentes, proposant des compilateurs dont le résultat n'est pas un binaire natif, mais du bytecode Java.

    Il y a 2 grands avantages :
    - Ça permet d'être compatible avec toutes les plate-formes pour lesquelles il existe une JVM.
    - Ça donne accès non seulement à la bibliothèque des objets standards du Java, mais aussi à l'ensemble des sources écrites en Java.

    Mais sinon, dans une optique "PHP", je suis d'accord pour dire que ça ne sert pas à grand-chose. En plus, sincèrement, PHP reboot s'éloigne tellement du PHP (pas de dollars aux variables, pas de points-virgules, mélange de HTML/PHP/SQL/JSON) que j'ai du mal à y voir vraiment une quelconque filiation avec PHP.

    Encore que, la possibilité de créer des listes et des tableaux associatifs comme en Perl (avec leur syntaxe "JSON-like"), c'est sympa.

  2. Paul dit :

    Effectivement je parlais de la JVM.

    Pour moi la consommation mémoire des JVM actuelles sont tellement un fardeau, que je n’arrive pas à concevoir l’utilisation d’une JVM pour un langage (autre que JAVA).

    Python, est plus performant (d’après le peu de tests que j’ai pu réaliser, durant mes études) et est aussi multiplateforme.

    Mais faire un langage interprété en utilisant une VM d’un autre langage, c’est pas déjà faire un aveux des faiblesses de ce même langage ?
    Exemple pour PHPReboot, je comprends « tout ce que fait PHP Reboot est faisable en JAVA » => autant faire une bibliothèque/extension JAVA

  3. Amaury dit :

    Oui et non. Le succès grandissant de Scala tient en grande partie aux deux avantages que j’ai listé. Et accessoirement, se baser sur une VM existante permet de se concentrer sur la partie la plus facile (ou tout au moins, la moins compliquée) dans la création d’un nouveau langage.

    On voit souvent les VM comme étant intrinsèquement liées au langage qui a amené à leur création. Mais on peut aussi les voir comme une simple machine virtuelle au sens propre, pour laquelle a été défini un assembleur simplifié (le bytecode).

  4. Paul dit :

    Effectivement, vu sous cet angle…
    J’ai tellement eu de mauvaises expériences avec les JVM, que si je trouve une solution à base de JVM, je cherche si c’est vraiment la seule…

  5. Amaury dit :

    :-)
    Concrètement, je suis d’accord avec toi. Je fuis les softs écrits en Java, il y a toujours quelque chose qui cloche (variables d’environnement mal définies, consommation mémoire hallucinante, …). Je préfère de loin les « bons vieux » logiciels écrits en C et compilés par les mainteneurs de la distribution Linux que j’utilise.

    Mais concernant la démarche de création d’un langage de programmation, se baser sur un interpréteur existant n’est pas une mauvaise idée.