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 :
# Lapin compris
Posté par Dring . É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 Dr BG . Évalué à 0.
Linotte ne m'a pas l'air d'être un langage fonctionnel.
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 stopspam . Évalué à 2.
on dirait un mélange entre :
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 :
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 Dr BG . Évalué à 2.
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 errno . É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 Narmer . É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 :
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
[^] # Re: C'est un beau Langage de programmation Esoterique ou "Esoteric programming language"
Posté par stopspam . Évalué à 2.
Hop, je bookmark dans mon dossier La Rache.
# des quiches aux lardons
Posté par Antoine . Évalué à 7.
[...]
Merci de nous rappeler les qualités intrinsèques du fabuleux langage Java.
# Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
# Side-car
Posté par Kerro . É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 cpc6128 (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.