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 !

Présentation de YNot, un langage de script Java
Pouvant accéder à toute l'API Java SE, créé par un jeune développeur

Le , par equesada

21PARTAGES

0  0 
Présentation de YNot, un langage de script Java
Pouvant accéder à toute l'API Java SE, créé par un jeune développeur

Je travaille sur un projet personnel depuis maintenant 2 ans (sur mon temps libre). Il s'agit d'un nouveau langage que j'ai appelé "Ynot" (se prononçant "why not".

J'ai 26 ans et je suis passionné par le développement (j'ai commencé la programmation à l'âge de 12 ans en Pascal... le premier niveau d'un Pacman très très mal codé...)
Sinon je suis développeur J2SE/J2EE depuis 6 ans (je fais un peu d'android, C++, C#, PHP, ...)

Naissance:

J'ai dans mon entourage un ami qui m'a toujours étonné par ses connaissances (divers et variées) et par sa faculté à apprendre. Un jour, je me mis en tête de lui faire découvrir le merveilleux monde de la programmation (où l'imagination est la seule limite à respecter). On commença donc à parcourir les différents éléments (boucle, condition, recursivité, ...) de l'algorithmie. Puis on aborda le principe de la "réutilisabilité" = en gros de ne pas refaire la roue à chaque foi. Je lui pris comme exemple un lecteur MP3. En tant que grand partisan de Java, j'ouvris Google pour trouver une libraire (.jar) capable de lire des mp3. Rapidement on trouva ce que l'on cherchait et en regardant la documentation on compris comment l'utiliser. C'est lorsque j'ouvris Eclipse que je le perdis (définitivement). Le fait de gérer des projets, d'importer des jar, de devoir compiler, de devoir packager en .jar notre programme (pour avoir une version standalone) le découragea. C'est à ce moment que je me suis dit: N'y a-t-il pas un langage de script simple permettant de faire du Java et d'utiliser des .jar facilement ? La réponse fût "non". Le projet "Ynot" était né...

Version actuelle

Le développement a duré 2 ans car entre la première version qui marchouillait et la version actuelle tout a changé. Surtout qu'entre temps j'ai lu "Coder Proprement" de Robert C. Martin. Du coup, j'ai repris tout mon code (c'est fou comme ce livre vous change votre façon de coder). J'estime que la release actuelle est assez stable pour l'utiliser (même si c'est une beta). J'ai maintenant besoin de gens qui l'utilisent pour avoir leurs retours et améliorer le projet... merci au gens qui tenteront l'aventure.

Description

Le mieux étant d'aller directement voir le site http://www.ynotscript.com.
Une vidéo montre en live la réalisation d'un "helloworld" à la sauce Ynot.
Vous y trouverez aussi la syntaxe détaillée ainsi que quelques tutos.

En quelques mots:
- C'est un language de script (donc plus besoin de compilation)
- La syntaxe est très simple (entre du PHP et du Pascal)
- Le projet est libre (licence GPLv3)
- L'Interpréteur est en Java.
- Les scripts ynot peuvent accéder à toute l'API Java SE (swing, sound...)
- Il suffit de mettre des jar à côté du script pour être capable de les utiliser.
- Pour installer le projet il suffit de le dézipper
- Pour lancer un script il suffit de faire clic droit, ouvrir avec et choisir le .sh ou .bat du projet ynot.

Je serais déjà très content si des gens prennent la peine de visiter le site et encore plus s'ils prennent le temps de l'essayer.

Merci d'avance à tous ces gens.

PS: Dans la section "Project Definition" tout le projet (son fonctionnement) est expliqué. Ce dont je suis le + fiert est le principe "Request-Definition-Command"... mais n'allez pas vous perdre directement dans cette section.

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

Avatar de
https://www.developpez.com
Le 05/01/2011 à 16:43
Salut,

Le projet semble intéressant, je l'ai téléchargé, testé et ai aussi téléchargé les sources qui m'intéressent vraiment
J'ai une question cependant : as-tu regardé les langages de script existants qui tournent sur la jvm ? notamment les plus connus : jython, jruby et groovy.

Une chose aussi que j'ai remarqué au premier abord : la syntaxe fait un usage intensif des chaînes de caractères ce qui la rend un peu lourde. Au premier coup d'oeil ça permet d'avoir un parser ultra simple et très peu de mot clef vu que tout est une requête (arrête moi si je me trompe), donc techniquement et conceptuellement c'est une bonne unification des choses.
Après à voir si l'utilisateur aime ça
En tout cas bravo et je vais me plonger un peu dedans, à voir aussi si l'utilisation des dictionnaires est assez flexible.
0  0 
Avatar de equesada
Membre régulier https://www.developpez.com
Le 05/01/2011 à 18:40
Citation Envoyé par George7 Voir le message
Le projet semble intéressant, je l'ai téléchargé, testé et ai aussi téléchargé les sources qui m'intéressent vraiment
Je te salue bien bas pour avoir pris la peine de tester

Citation Envoyé par George7 Voir le message
J'ai une question cependant : as-tu regardé les langages de script existants qui tournent sur la jvm ? notamment les plus connus : jython, jruby et groovy.
Oui j'avais regardé. Groovy est celui qui se rapprochait le plus de ce que je souhaitai. Le truc c'est que je n'avais pas trouvé comment utiliser des jar externes facilement. Ensuite je voulais pouvoir prendre la main sur le language lui-même. Histoire que si quelque chose manque on puisse ajouter la fonctionalité soit-même (+ d'autres fonctionnalités cités plus bas).

Citation Envoyé par George7 Voir le message
vu que tout est une requête (arrête moi si je me trompe)
Tu as tout compris

Citation Envoyé par George7 Voir le message
En tout cas bravo et je vais me plonger un peu dedans, à voir aussi si l'utilisation des dictionnaires est assez flexible.
Si tu as le moindre problème n'hésite pas...

Par contre la doc est pas encore complète. Je souhaite cleaner encore le code (à coup de checkstyle, findbugs et sonarsource) avant de générer et mettre en ligne la Javadoc. De même que la documentation pour créer des mini parseur n'est pas encore rempli...

PS: le projet est découper de façon à ce qu'on puisse refaire une partie sans impacter les autres. Par exemple on peut envisager de lire les requêtes depuis une base de données ou encore un webService. J'ai utilisé le principe Request-Definition-Command pour faire un interpreteur de script mais on peut aussi l'utiliser pour faire un serveur FTP, un serveur web, un chat, .... tout ce qui traite des requêtes qui donnent lieu à des actions.

Je présente YNOT comme un language de script pour ne pas perdre les gens... mais en fait c'est un peu + que ça
0  0 
Avatar de Alain Defrance
Expert confirmé https://www.developpez.com
Le 06/01/2011 à 21:22
Salut,

Tout d'abord bravo c'est toujours cool d'arriver à releaser ce genre de projet

Ensuite, c'est cool aussi de voir un ancien de l'ECML (non j'y suis pas mais je connais j'ai des amis là bas).

Pour finir, je ne veux pas détruire tout ce que t'as fait mais ... pourquoi avoir créer un langage pour tirer des dépendances ? Tu ne pense pas qu'une simple libraire qui utilise des annotations et APT permettrai de faire cela ? Maven le fais déjà à coup de descripteur.

J'ai pas vu grand chose mais j'ai eu l'impréssion à voir la doc de voir du php tourner dans une JVM
0  0 
Avatar de equesada
Membre régulier https://www.developpez.com
Le 06/01/2011 à 22:14
Citation Envoyé par Alain Defrance Voir le message

Tout d'abord bravo c'est toujours cool d'arriver à releaser ce genre de projet
Merci et il y a tant d'améliorations que je souhaite encore faire

Citation Envoyé par Alain Defrance Voir le message

Ensuite, c'est cool aussi de voir un ancien de l'ECML (non j'y suis pas mais je connais j'ai des amis là bas).
L'ECML est une petite famille... qui sait je les connais peut-être

Citation Envoyé par Alain Defrance Voir le message

Pour finir, je ne veux pas détruire tout ce que t'as fait mais ... pourquoi avoir créer un langage pour tirer des dépendances ? Tu ne pense pas qu'une simple libraire qui utilise des annotations et APT permettrai de faire cela ? Maven le fais déjà à coup de descripteur.
Tu ne détruis rien ne t'en fais pas. Plus j'en parle et j'échange sur Ynot et mieux le projet pourra évoluer vers quelque chose de mieux.
Pour ma part dans un vrai projet Java/J2EE j'utilise effectivement MAVEN + HUDSON + SONARSOURCE + ARTIFACTORY.
Ynot ne se prête pas (encore) à des projets énormes mais à de petit programmes, script backoffice, mini serveur, ... d'ailleurs je n'ai nativement pas mis la possibilié d'inclure des script à l'intérieur des scripts, car chaque script doit etre fait pour marcher en solo... l'idée c'est de développer vite en réutilisant les libraries des autres.

Citation Envoyé par Alain Defrance Voir le message

J'ai pas vu grand chose mais j'ai eu l'impréssion à voir la doc de voir du php tourner dans une JVM
Lol oui on pourrait le voir comme ça. Maintenant essayes de lire des mp3 en PHP, de faire du textToSpeech ou encore de manipuler une Kinect (oui le tuto arrivera bientôt) en seulement quelques lignes de code... voilà la différence
0  0 
Avatar de Alain Defrance
Expert confirmé https://www.developpez.com
Le 07/01/2011 à 11:15
Ok c'est cool je regarderai
0  0 
Avatar de sebastien.moratinos
Membre régulier https://www.developpez.com
Le 07/01/2011 à 23:35
N'ayant jamais eut l'utilité d'un langage de script comme Groovy, je ne peux pas comparer, ni donner d'avis technique.

Mais dans un premier temps, je trouve ça très ludique.
Donc je fais joujou avec, et la doc est cool.

Je suis souvent limité en bash, et j'ai la flemme de faire du jolie java pour un besoin minime... finalement ça va surement me servir.
Simple et Cool, c'est un bon début
0  0 
Avatar de equesada
Membre régulier https://www.developpez.com
Le 08/01/2011 à 13:26
Citation Envoyé par sebastien.moratinos Voir le message
Je suis souvent limité en bash, et j'ai la flemme de faire du jolie java pour un besoin minime... finalement ça va surement me servir.
C'est un très bon résumé de la situation ça.... plutôt que faire de long monologue de pourquoi utiliser Ynot, j'utiliserai maintenant cette phrase
0  0 
Avatar de sebastien.moratinos
Membre régulier https://www.developpez.com
Le 08/01/2011 à 15:13
Hier soir test de Ynot, donc ce matin test de Groovy.

Premières impressions...

Facilité de mise en oeuvre du premier programme :

Ynot (+) : 1 Download + 1 variable d'environnement + 1 fichier texte + Clique droit "Ouvrir avec Ynot"

Groovy (-) : 1 Download + 1 variable d'environnement + 1 fichier texte + 1 classe java (+ 1 bat ou sh optionnel)

//j'oublie la console Groovy qui était une bonne chose au premier abord mais qui ne ressemble en rien à la facilité de Ynot.
//C'est tout bête un Main qui lance le script groovy, mais c'est déjà de trop !

Apprentissage syntaxe :

Ynot (-) : ne ressemble pas à du java, pas d'auto-complétion actuellement

Groovy (+) : réellement du java, auto-complétion grâce au plugin IDE

La suite
Passage Java vers Groovy... bof
J'ai décidé de ne pas aller plus loin avec Groovy, la mise en oeuvre ne me plait pas. Le gain en productivité par rapport au java ne m'a pas convaincu, d'un côté mon expérience en java de l'autre apprendre une nouvelle syntaxe, proche du java mais une nouvelle syntaxe.

Passage Java vers Ynot... on va essayer
Par contre, je vais approfondir un peu plus Ynot. Un fichier texte avec clique droit -> Go, ça me plait comme approche.
Je vais devoir apprendre les quelques mots clefs Ynot mais après je me ferai un dictionnaire suivant le besoin.
Celà ressemble à du "bricolage" (ce n'est pas péjoratif) d'admin système et ça ressemble bien à ma vision d'un langage de script.
Si l'utilisation des librairies externes est aussi bien que tu le dis, je vais surement regarder le principe Request-Definition-Command et les sources.
0  0 
Avatar de equesada
Membre régulier https://www.developpez.com
Le 08/01/2011 à 16:57
Déjà je te remercie d'avoir pris le temps de tester Ynot et de faire ce comparatif

Pour l'IDE avec auto-completion j'y ai pensé ça serait vraiment cool (et bien sûr il serait codé en ynot )

Le composant Shell déroule les commandes de ligne en ligne (appelé "Step" et toutes les variables sont rassemblées dans un VariableManager. Pourquoi je parle de toute cela... car je l'ai désigné en gardant à l'esprit que je souhaitais faire un editeur ynot mais avec une sorte de debuggeur pas à pas...

Je suis le premier utilisateur de Ynot et ce que je peux critiqué (hé oui dans la vie il faut savoir s'auto-critiquer) :

- la gestion des erreurs qui n'est pas encore assez simple. En gros quand un truc pète (erreur de syntaxe, methode inexistante, ...) et bien ça peut générer de longues lignes d'exception... perturbant au premier abord.
- la gestion des exceptions -> actuellement pas de gestion de try/catch
- autre truc génant c'est qu'en faisant "open with" si le script pète une exception et bien il se ferme dessuite... du coup on a pas le temps de la voir... du coup obligé d'ouvrir un terminal pour lancer en ligne de commande pour voir l'erreur.

Voilà, le projet Ynot n'est pas parfait (même si en 2 ans il a beaucoup progressé).
En tout ça c'est un projet "honnête", je ne veux pas cacher les défauts mais au contraire les montrer du doigt, et grâce à vous les débusquer au plus tôt et les corriger pour améliorer le langage.

Vous l'avez compris y a plein de nouvelles choses à faire (améliorer/finir la doc, faire un exemple avec kinect, faire + de tutos, cleaner le code et générer la javadoc, ...) et des choses à améliorer ET bien sûr continuer à prospecter pour faire découvrir ce projet aux autres personnes.

Bien sur comme je fais ça sur mon temps libre, il faut donc faire des priorités (et ça sera selon les retours des utilisateurs qui dicteront l'importance des choses à faire).

Merci en tout ça de ce retour qui est vraiment très constructif
0  0 
Avatar de Alain Defrance
Expert confirmé https://www.developpez.com
Le 11/01/2011 à 9:31
Salut,

As tu prévu quelque chose en terme d'ORM ? Je peux utiliser JPA ?
Est-ce que ton language est annotable ?
Est-ce qu'il y a une compilation ?

Alain.
0  0