Linotte 1.3

« 6 mois » est le temps qu’il a fallu pour penser, générer et peaufiner cette nouvelle version de l’Atelier Linotte.
Les versions sortent les unes après les autres et pourtant, la liste des nouveautés restent conséquentes !
Pour rappel, l’Atelier Linotte est un interprète libre (sous licence GPL V3 ) du langage Linotte.

Les évolutions ont été axées sur : la simplification de la syntaxe et la possibilité d’écrire des bibliothèques externes (greffons) dans le but d’enrichir le langage.

La première nouveauté est une simplification syntaxique de la déclaration d’un nouvel acteur. Ainsi, il est possible de remplacer la forme suivante « nb est un nombre » par celle-ci « nb :: nombre ».
De plus, on peut également remplacer le participe présent «valant» par l’opération «<-»:
« nb :: nombre

La deuxième nouveauté est le fait que l’on puisse (enfin) utiliser les opérations suivantes :
!=, ==, <=, >=, <, >

On obtient ainsi une syntaxe plus concise lors de l’écriture de conditions :

  • si a < b alors ....
  • tant que a < b alors ....

J’en ai profité pour ajouter la fonction mathématique hasard, plus pratique à utiliser que le verbe Mélanger :
Affiche hasard (10)

La troisième est l’ajout de la notion de synonyme. Elle offre une capacité simple pour personnaliser le langage.

Ainsi, on peut écrire un tel livre (à condition d’avoir défini correctement les synonymes):

Programme : Syracuse
Traitement : Application de la suite de Syracuse
Types :
durée :: nombre vide
e :: nombre
Algorithme : Boucle
demander e
tant que e != 1, début
durée vaut durée + 1
si (e mod 2) == 0 alors e vaut e / 2
sinon, e vaut e * 3 + 1
fin
afficher durée
terminer

Les synonymes sont à définir dans un fichier sysnonymes.def que l’on dépose dans le répertoire .linotte situé dans votre répertoire personnel ou dans le répertoire du langage (au même niveau que Linotte.jar).

La quatrième nouveauté est la possibilité de créer des acteurs locaux à des sous-paragraphes :

Livre : acteurs locaux à un sous-paragraphe
Paragraphe : principal
Rôles :
mon casier :: casier de nombre vide
Actions :
pour chaque 10, lis
§ b :: nombre valant 15
mélange b
ajoute b dans mon casier
ferme
affiche mon casier

La cinquième et la plus importante nouveauté est l’ajout de la notion de prototype :

La notion de prototype offre au programmeur la possibilité de modifier un objet Linotte (un acteur) pendant l’exécution du programme : on peut ajouter soit des nouveaux attributs à un objet, soit des méthodes fonctionnelles. Les objets ainsi créés peuvent être clonés à l’identique.

Comme indiqué ci-dessus, la notion de méthode fonctionnelle apparait dans le langage. Elle offre la possibilité d’attacher à des objets des traitements liés à l’objet même.

Rien de mieux qu’un exemple complet pour découvrir les possibilités offertes !

L’exemple suivant L’attaque des clones va vous plonger dans le film du même nom… Dans un premier temps, on créé le prototype stormtrooper qui va être enrichi d’attributs, puis de méthodes fonctionnelles et, ensuite, que l’on va le cloner une centaine de fois pour créer l’armée.
Le source de l’exemple est disponible ici : L’attaque des clonesPdf

Les greffons :

Cette nouvelle approche prototype apporte une simplification de l’écriture des greffons.
En plus d’un descripteur de greffons décrivant le nom du prototype et ses attributs :

On peut maintenant écrire les méthodes fonctionnelles en Java :

Ainsi, nous pouvons écrire ce livre :

Hello World avec un greffon :
Démonstration :
Rôles :
messager :: majordome
Actions :
affiche messager.présentation("Jules")
termine

Et à l’exécution, on peut admirer le résultat sur le tableau :

Bonjour, mon cher Jules, je suis votre serviteur Nestor

De plus, un greffon peut exposer sa documentation directement dans l’Atelier Linotte :

On pourra facilement écrire des bibliothèques de fonctions pour le langage Linotte (bibliothèques mathématiques, physiques, capacité d’affichage d’objets en 3D, etc…)

En bonus, quelques modifications visuelles de l’Atelier, notamment la nouvelle option Bonifier l’Atelier facilitant la lecture des algorithmes :

Et enfin, voici le reste des modifications :

  • Ajout de l’exemple asciinotte.liv
  • Ajout de l’exemple presse-papier.liv
  • Ajout du greffon PressePapier.
  • Ajout de la fonction ASCII et CHR
  • Ajout de la fonction mathématique hasard : affiche hasard (10)
  • Possibilité de modifier la précision arithmétique
  • ajout de l’exemple precision_arithmetique.liv
  • Ajout de la recherche dans l’Atelier
  • Il faut utiliser les doubles-chevons pour charger dynamiquement les acteurs
  • Affichage des numéros de ligne dans l’Atelier
  • Ajout du l’exemple liNotPad.liv (exemple pour utiliser les méthodes fonctionnelles avec le Conduit)
  • Ajout du greffon Conduit (exemple pour utiliser les méthodes fonctionnelles avec les greffons)
  • Ajout de l’exemple majordome.liv (exemple pour utiliser les méthodes fonctionnelles avec les greffons)
  • Ajout du greffon Majordome (exemple pour utiliser les méthodes fonctionnelles avec les greffons)
  • Ajout de l’événement “clic droit souris”
  • Ajout du bouton “activer le bouton de trace” dans l’onglet Audit
  • Ajout du thème d’icônes Extra-Elementary (merci momo12)
  • Ajout du composant BoutonMenu (voir le livre menu.liv)
  • Ajout de l’exemple : starwar.liv
  • Ajout de l’exemple : chronometre.liv
  • Ajout du verbe attacher
  • Ajout du verbe évoquer
  • Ajout du verbe décrémenter
  • Ajout du verbe incrémenter
  • Optimisation d’environ 50% du moteur d’exécution
  • Correction du verbe Insérer
Vus : 1776
Publié par cpc6128 : 34