Développer des sites en Lisp devient possible grâce à "Javathcript"
Une machine virtuelle intéressante ou simple exploit de Geek ?

Le , par tarikbenmerar, Chroniqueur Actualités
Simple exploit de geek à saluer ou une machine virtuelle prometteuse ?

Javathcript est un outil qui permet de faire tourner dans ses pages web des scripts écrits dans une variante du langage de programmation Lisp.

Aucune configuration ni aucun plug-in ne sont requis pour que ça marche. Il suffit d'inclure un fichier Javathcript.js dans ses pages, et toutes les balises script ayant le type="text/Lisp" seront interprétés. De même qu'il est permis de charger des fichiers sources Lisp externes, pour les balises à attribut src. Vous pouvez aussi évaluer une chaîne Lisp à partir de JavaScript de la manière suivante : Javathcript.eval(chaineLisp).

Un script Lisp_script.lsp externe peut être utilisé de cette façon :
Code HTML : Sélectionner tout
1
2
<script type="text/javascript" src="Javathcript.js"></script> 
<script type="text/Lisp" src="Lisp/prelude.lsp"></script>

Ainsi, déclencher une boîte de dialogue avec un message : « Hello » suivi d'un nom récupéré à partir d'un champ de texte peut être simplement réalisé avec le programme Lisp suivant :
Code LISP : Sélectionner tout
1
2
3
4
5
6
7
8
<script type="text/Lisp"> 
 (let* 
   (       (button (getElement "btn")) 
     (nameField (getElement "name")) 
     (clickHandler (lambda () (alert (concat "Hello " (get nameField "value")))))    ) 
   (set button "onclick" (export clickHandler)) 
 ) 
</script>

Toutefois, cette implémentation ne jouit d'aucune optimisation de récursion terminale, et ne permet pas d'écrire des macros. Ce qui lui enlève, de l'avis de certains, tout intérêt en dehors de la syntaxe minimaliste et la représentation visuelle de l'arbre syntaxique abstrait.

Notons qu'il ne s'agit pas de l'implémentation exacte d'une variante existante de Lisp, mais avec une bonne connaissance du langage, ce serait très aisé de se familiariser avec la syntaxe d'après la description du projet.

Pour l'anecdote, LISP fut inventé par John McCarthy en 1958, alors qu'il était chercheur au MIT. Il avait présenté le langage dans un célèbre article de recherche publié dans la revue CACM en 1960.

Lisp est un langage très répandu dans la communauté de l’Intelligence artificielle. Il est fameux pour son utilisation excessive des parenthèses, que beaucoup de développeurs lui reprochent.

Javathcript est disponible sur GitHUB

Source : tout savoir sur le site du projet

Et vous ?

Que pensez-vous de cette implémentation ?
Peut-elle avoir des applications pratiques ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de GR3lh442kR GR3lh442kR - Membre confirmé https://www.developpez.com
le 03/08/2012 à 13:56
Dans le lien que tu donnes tout les fichiers semblent dater d'il y a deux ans, c'est nouveau ?
Avatar de Idelways Idelways - Expert éminent sénior https://www.developpez.com
le 03/08/2012 à 14:25
Salut bebaijhi,

L'outil n'est pas nouveau, mais il est passé sous silence jusqu'à il y a quelques jours où on l'a découvert et partagé sur les Digg-likes.

Cordialement,
Idelways.
Avatar de grunk grunk - Modérateur https://www.developpez.com
le 03/08/2012 à 14:54
On peut éventuellement saluer la performance d'écriture du parser mais j'irais pas beaucoup plus loin.

Les solutions qui permettent de détourner les langages de leur utilisations principale ne me plaise généralement pas.

Pourquoi s'embeter avec un parser lisp alors qu'on peux faire du PHP/JAVA/RUBY/.NET/ JS....
C'est un peu comme vouloir écrire un client lourd en php avec GTK , c'est juste inutile et sans intérêt.
Avatar de gilwath gilwath - Membre confirmé https://www.developpez.com
le 03/08/2012 à 16:09
Surtout qu'il existe un dialecte de List pour la jvm : clojure avec ce qu'il faut de framework pour développer des applications web (par exemple : http://webnoir.org/). Et il existe aussi une version se compilant en js : clojurescript.
Avatar de Freem Freem - Membre émérite https://www.developpez.com
le 04/08/2012 à 17:06
Je ne connaît Lisp que de nom, mais il me semble que justement l'un des intérêts de ce langage est bel et bien basé sur la récursion.
Implémenter un truc qui permet d'utiliser un langage dérivé d'un autre, mais avec celui-ci privé de son point fort me paraît... bof.

J'aurai bien dis: "Donc, exploit de geek à saluer , félicitations pour le parser, et je comprend bien l'intérêt en terme de curiosité d'avoir créé ça. Seulement, ça ne me semble servir à rien."
Mais après avoir jeté un oeil très rapide aux sources, j'ai trouvé dans un fichier (https://github.com/kybernetikos/Java...ource/BPWJs.js) une indication tout à fait intéressante:
" Significant portions of this code were ported by kybernetikos from Java code."
Autrement dit... il ne s'agit que d'une transcription en JS d'un code JAVA déjà écrit trouvé dans un bouquin.
Finalement... J'ai du mal a considérer comme un exploit le fait de reprendre du code (certes, traduit) mais je trouve très bien de la part de l'intéressé qu'il n'ai pas menti sur la réelle part de travail qu'il a fourni.

D'ailleurs, je pense que si le projets est mort (dernier commit de plus de 2 ans) c'est qu'il y a une raison. L'auteur à lui-même abandonné son idée, et fermé son site. Il ne reste que le dépôt github... du coup on ne peux même pas connaître ses motivations.
Avatar de redacteurweb redacteurweb - Nouveau Candidat au Club https://www.developpez.com
le 04/08/2012 à 17:46
salut

moi aussi je ne connaissais pas cet outil moi je voudrais est ce qu'il est fiable.
Avatar de I_believe_in_code I_believe_in_code - Membre éprouvé https://www.developpez.com
le 05/08/2012 à 12:37
Lisp est un langage multiparadigme (procédural, objet, impératif, fonctionnel, symbolique, fonctionnel objet , etc).

Ses parenthèses ne gênent que ceux qui les regardent. Un programmeur Lisp ne regarde jamais les parenthèses quand il lit du code. Il comprend la structure du code en regardant uniquement son indentation (d'ailleurs celle de l'exemple de code donné plus haut n'est pas correcte).

Common Lisp est un langage très adapté pour faire du développement rapide d'applications qui n'ont pas spécialement besoin de l'être (rapides).

(On peut certes obtenir du code compilé très rapide avec Lisp, mais cela demande une discipline extrême ainsi que de renoncer à une partie de la souplesse du langage)

C'est aussi à ma connaissance le seul langage dont les macros sont assez puissantes pour qu'on puisse les utiliser pour étendre ou modifier la syntaxe même du langage.

Si Emacs est si génial c'est parce que ce n'est pas un simple "éditeur de texte", mais plutôt un interprète de lisp (avec son propre dialecte de lisp d'ailleurs) spécialisé dans l'édition de texte.

J'ai beaucoup codé en Lisp pendant environ sept ans, j'adore ce langage à titre personnel, et je devrai m'en resservir dans le futur.

Malgré tout cela j'avoue ne pas voir a priori ce qu'une page web comportant du code écrit en Lisp pourrait avoir de plus qu'une page web ordinaire.
Avatar de sperca sperca - Membre régulier https://www.developpez.com
le 05/08/2012 à 13:59
Pour ceux qui sont intéressés par la programmation fonctionnelle pour développer un site web en utilisant un langage du monde lispien (plutôt Scheme que Lisp d'ailleurs), vous pouvez regarder du côté de Hop.

En passant, c'est un langage multi-tiers.
Avatar de sybil sybil - Inactif https://www.developpez.com
le 06/08/2012 à 15:00
ça devient complétement débile tout ça.
Avatar de MiaowZedong MiaowZedong - Membre émérite https://www.developpez.com
le 06/08/2012 à 15:34
On peut déjà developper des sites en LISP: c'est tout à fait possible de l'utiliser côté serveur (oui, je sais, ce n'est plus à la mode).

Sinon, implémenter une machine virtuelle LISP simplifiée en Javascript...je plussoie fortement I believe in code: malgré les avantages de ce language, je ne vois pas trop l'intérêt.
Offres d'emploi IT
Ingénieur intégration, validation, qualification du système de drone H/F
Safran - Ile de France - Éragny (95610)
Ingénieur conception en électronique de puissance H/F
Safran - Ile de France - Moissy-Cramayel (77550)
Ingénieur développement fpga (traitement vidéo) H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil