Journal Linotte 1.3 alpha, l'attaque des clones !

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
8
11
mar.
2011

Bonjour,

Je viens de sortir la première version alpha de la série 1.3 du langage Linotte. Cette préversion à pour but d'attirer des développeurs Java souhaitant créer des greffons pour le langage.

Quoi de neuf dans cette version ?

La grosse nouveauté est l'ajout de la notion de prototype. Et oui, Linotte vient concurrencer le langage Lisaac sur son terrain... mais à sa manière !

La notion de prototype est simplifiée, pas d'héritage dynamique, par contre, on peut dynamiquement ajouter des éléments à un objet pendant l'exécution du programme. Les objets ainsi créés peuvent être clonés à l'identique.

On peut ajouter, soit des nouveaux attributs à un objet, soit des méthodes fonctionnelles.

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.

La tête dans les étoiles

Rien de mieux qu'un exemple plus 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 : https://code.google.com/p/langagelinotte/source/browse/trunk/Linotte/exemples/tutoriels/i_prototype/starwar.liv

(le croisillon (#) devant le nom d'un variable signifie que l'on souhaite le cloner.)

Les greffons

Cette nouvelle approche prototype apporte une simplification d'écriture des greffons.

En plus d'un descripteur de greffons décrivant le nom du prototype et ses attributs :

<?xml version="1.0" encoding="UTF-8"?>
<greffon nom="Majordome" espece="majordome" class="org.linotte.greffons.impl.Majordome">
	<description>Greffon simple pour présenter les greffons</description>
	<auteur>R.M</auteur>
	<version>0.1</version>
	<attribut nom="serviteur" type="TEXTE">Nestor</attribut>
</greffon>

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

package org.linotte.greffons.impl;

import org.linotte.greffons.externe.Greffon;
import org.linotte.greffons.externe.Greffon.DocumentationHTML;

@DocumentationHTML("<p>Greffon de démonstration.<br>"
		+ "Ce greffon propose la méthode <b>fonctionnelle majordome.présentation(nom<texte>)</b>.<br>"
		+ "Il est destiné aux personnes souhaitant développer des greffons pour le langage Linotte.</p>")
public class Majordome extends Greffon {

	private static final String ATTRIBUT_SERVITEUR = "serviteur";

	@Slot(nom = "présentation", entree = { ROLE.TEXTE }, sortie = ROLE.TEXTE)
	public ObjetLinotte presentation(ObjetLinotte structure) throws GreffonException {
		Acteur acteur = (Acteur) structure;
		String prenom = String.valueOf(acteur.getValeur());
		String serviteur = (String) ((Acteur) getValeur(ATTRIBUT_SERVITEUR)).getValeur();
		return new Acteur(ROLE.TEXTE, "retour", "Bonjour, mon cher " + prenom + ", je suis votre serviteur " + serviteur);

	}
}

On obtient en langage Linotte :

Hello World avec un greffon : 

Démonstration :
	Rôles :
		messager est un 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

Je veux tester !

Pour tester cette nouvelle version et découvrir la liste exhaustive des nouveautés , rendez-vous à cette adresse :

Linotte 1.3 alpha 6

  • # Lapin compris

    Posté par  . Évalué à 5.

    Bon, j'y connais rien en programmation fonctionnelle, et j'avais quand même envie d'écrire un commentaire de retour du jedi. Dont acte...

    Je hais les gens qui codent avec des variables en français dans un langage en anglais. Ca donne une espèce de bouillie linguistique désagréable à lire au possible.

    Voilà, ça c'est fait. Maintenant, place aux commentaires intelligents... :-)

    Ah, une question quand même : il est où le site qui explique comment ça marche Linotte ?

    • [^] # Re: Lapin compris

      Posté par  (site web personnel) . Évalué à 0.

      Bon, j'y connais rien en programmation fonctionnelle

      Linotte ne m'a pas l'air d'être un langage fonctionnel.

      Je hais les gens qui codent avec des variables en français dans un langage en anglais.

      Si le but est d'être lu par des francophones, pourquoi se priver ? Je trouve, au contraire, que c'est intéressant de pouvoir faire une distinction entre les éléments du langage et le reste. L'intérêt de nomer les variable est de rendre le programme le plus compréhensible possible. Si le français aide à cette compréhension, eh bien tant mieux.

      Sinon, j'ai un peu de mal avec les termes utilisés par Linote : on parle de livre, de paragraphe, d'acteur... cela crée chez moi une confusion car ça ne colle pas franchement à l'idée que j'ai d'un livre, d'un paragraphe et d'un acteur. Si les concepts sont différents, alors je préfère un mot différent pour avoir les idées claires.

      • [^] # Re: Lapin compris

        Posté par  . Évalué à 2.

        on dirait un mélange entre :

        • python : au niveau de l'indentation et l'absence de "{}"
        • yaml : j'ai l'impression de voir un fichier de configuration
        • windev : c'est écrit en français

        Comme dit plus haut, coder en français c'est beurk. Non seulement on perd du temps pour rien mais surtout ça oblige à lire énormément, comme si un dév passe pas déjà assez de temps comme ça à lire son code.

        Y'a pas photo entre :

        • i est un entier égale à 0
        • i = 0

        PS : la nouvelle syntaxe des commentaires est à chier ou alors la prévisualisation est foireuse car mes sauts de lignes n'apparaissent pas !

        • [^] # Re: Lapin compris

          Posté par  (site web personnel) . Évalué à 2.

          Comme dit plus haut, coder en français c'est beurk.

          Eh bien apprends déjà à la lire, le français ! Il ne parle pas du langage qui se veut proche du français, mais des noms de variables en français !

  • # *moi est Jedi

    Posté par  . Évalué à 1.

    en français, on dit: je suis un Jedi

    (je ferme en sortant)

  • # C'est un beau Langage de programmation Esoterique ou "Esoteric programming language"

    Posté par  . Évalué à 3.

    J'ai découvert les Langage_de_programmation_ésotérique (ici le wikipedia anglophone de Esoteric programming language ) après avoir découvert le langage de programmation LOLCODE (et oui un langage à partir des Lolcats ) dont voici un exemple :

     HAI
     CAN HAS STDIO?
     PLZ OPEN FILE "LOLCATS.TXT"?
         AWSUM THX
             VISIBLE FILE
         O NOES
             INVISIBLE "ERROR!"
     KTHXBYE
    

    On peut dire que c'est exactement l'opposé de ce que l'auteur du journal veut faire. De fàçon completement absurde, après avoir vu LOLCODE, je pense qu'un langage de programmation à partir du langage SMS/Texto de mes petits frères/soeurs seraient peut être plus efficace.

    Je salue cependant l'effort de Mounes, j'espère qu'il choisi le nom de ces concepts avec plusieurs personnes car effectivement, les notions acteurs, livres, etc ne sont pas très claires prises ensemble. C'est une belle prouesse.

    mes 2 centimes

  • # des quiches aux lardons

    Posté par  . Évalué à 7.

        private static final String ATTRIBUT_SERVITEUR = "serviteur";
    

    [...]

        String prenom = String.valueOf(acteur.getValeur());
        String serviteur = (String) ((Acteur) getValeur(ATTRIBUT_SERVITEUR)).getValeur();
    

    Merci de nous rappeler les qualités intrinsèques du fabuleux langage Java.

  • # Commentaire supprimé

    Posté par  . Évalué à 4.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Side-car

    Posté par  . Évalué à 4.

    Je me trompe peut-être, dans ce cas un point important m'a échappé:
    A première vue ce langage est comme un side-car. Le side-car cumule les inconvénients de l'automobile et de la moto, sans avoir les avantages de l'un et/ou de l'autre (ça coûte un bras, ça prend de la place, tu ne peux pas doubler, tu es mouillé lorsqu'il pleut, en cas d'accident ton corps est détruit, etc).

    Pour Linotte je crois que c'est pareil. Ca cumule les inconvénients de plusieurs langages, sans en avoir le moindre avantage.
    A moins que, comme indiqué dans le fil précédent, ce soit une expérimentation ou un simple plaisir. Buts tout à fait louables, voir même plus.

  • # Réponses aux commentaires....

    Posté par  (site web personnel) . Évalué à 1.

    Je pense honnêtement que Linotte apporte de bonnes idées : les doublures, la notion d’espèce, le clonage, le paradigme prototype, les souffleurs, les traitements parallèles, le fait que tout soit objet, etc.

    Mais en fait, les commentaires sont focalisés sur la langue et la forme.

    J’ai (avec les outils offerts par le langage) créer deux exemples complets : un casse-brique et un pacman et « programmatiquement » je les trouve personnellement intéressants.

    Alors, pourquoi pas Linotte ?

    Intellectuellement, j'ai dû mal à comprendre pourquoi un langage de programmation ne doit pas être en français. C'est vrai que l'anglais à l'avantage d'être très concis mais l'exercice de créer un langage dans notre langue est-il si inopportun ? Une blague ?

    L’idée de départ du langage est de se demander s’il est possible de créer un langage destiné à des personnes non anglophones et/ou qui n’ont pas la bosse des maths.

    Par rapport au vocabulaire, je peux comprendre les arguments même si j’ai, je pense bien expliquer les termes dans le tutoriel. Il est vrai que je suis tenté par changer certains mots… mais Linotte ne deviendrai qu’un langage comme les autres….

    Merci pour vos remarques.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.