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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par tarikbenmerar

5PARTAGES

2  1 
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 ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de 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.
7  2 
Avatar de 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.
2  0 
Avatar de 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.
2  0 
Avatar de 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 ?
1  0 
Avatar de 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.
1  0 
Avatar de MiaowZedong
Membre extrêmement actif 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.
1  0 
Avatar de gangsoleil
Modérateur https://www.developpez.com
Le 24/04/2013 à 9:38
Citation Envoyé par tarikbenmerar Voir le message
Simple exploit de geek à saluer ou une machine virtuelle prometteuse ?
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
( Bonjour,
  (  Probablement utile dans deux (ou trois) cas,
     ( mais pas (beaucoup) plus)
     ( m(')enfin c(')est toujours interessant (techniquement))
         (d(')avoir de nouvelles possibilites)
     )
     )
  )
)
Oui, ecrire dans un bloc code n'est pas top, mais sans l'indentation, c'etait beaucoup moins drole
1  0 
Avatar de 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.
1  1 
Avatar de 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.
0  0 
Avatar de Loceka
Expert confirmé https://www.developpez.com
Le 07/08/2012 à 10:39
Citation Envoyé par I_believe_in_code Voir le message
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.
Prolog le permet aussi.
0  0