Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le Deal du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

Linotte 2.0

power_settings_newSe connecter pour répondre
4 participants

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Et voici l'annonce officielle :
http://langagelinotte.free.fr/wordpress/?p=259

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Je suis de retour !
Merci pour la correction du bogue des collisions x)
Prochainement, j'essaierais de passer mon code en Linotte 1.99, cela permettra de repérer les bogues éventuels et de m'habituer à cette nouvelle syntaxe ^^

(Avis Personnel : Je n'aime pas trop les termes "script" et "globale", je serais plus pour "programme" et "général")

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Très bonne idée d'utiliser cette version !

Je ne suis pas fan de "script" aussi mais "programme" est trop long.

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Peut-être le mot "projet" ou, tout simplement, "code"...

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Le mot clé "projet", je le reserve pour le futur... quand on pourra créer de projets.

"code", je trouve que ça fait trop.... informatique... autant que "script".

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Bonjour,

Linotte 2.0 avance un petit peu (pas trop, nous sommes en vacances !).

Après tous vos différents retours, j'ai décidé de garder les termes "livre" et "paragraphe". Ils participent à l'originalité du langage et ils sont en cohérence avec la documentation.

Par contre... la structure d'un livre va se simplifier. Étant donné que je ne trouve pas de terme pour remplacer le mot "script", je me suis dit, que peut être il ne servait à rien... du coup, je le supprime tout simplement !

Dorénavant, l'écriture commencera par le premier paragraphe :

[php]
principal :
prénom :: texte
début
affiche "Bonjour ! Quel est ton prénom ?"
demande prénom
affiche "Bravo " + prénom + ", tu viens de lire ton premier livre Linotte !"
[/php]

Autre exemple :
[php]
("Imaginez entendre le bruit de la mer....")
globale
mer :: toile, couleur vaut "bleu outremer"

décor :
x & y :: nombre
début
projette mer
efface toile
tant que vrai , lis
attends 0.01 secondes
si (x != sourisx) ou (y != sourisy), lis
x vaut sourisx
y vaut sourisy
appelle vague factory avec #x, #y
ferme
ferme
vague factory :
*x :: nombre
*y :: nombre
vague :: cercle, x vaut x, y vaut y, plein vaut "non", rayon vaut 1, taille vaut 2, couleur vaut "bleu marine"
début
projette vague
pour chaque 50, lis
rayon@vague vaut joker
transparence@vague vaut 100 - joker * 2
attends 40 millisecondes
ferme
efface vague
annihile vague
reviens
[/php]

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Sa me va x)
En fait, il n'y a pas de "Setup-Linotte" pour la version 1.99 ?

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
J'ai installé Linotte 1.99.
Je m'attendais à devoir écrire version1 sur chacun de mes livres hors tous mes programmes fonctionnent normalement.
Par contre la couleur des mots se trouvant entre des guillemets à été modifiée : elle est grise.
Idem, la couleur des chiffres est désormais bleu/gris.
Je préférais les anciennes couleurs, je trouve ces nouvelles couleurs beaucoup moins visibles :/

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Bonjour,
Tant mieux si tu n'as pas besoin du "version 1". Celà prouve que ta gestion des variables correspond au nouveau fonctionnement de Linotte 2.0 : c'est à dire, partir de principe qu'une variable est locale à un paragraphe ou sous-paragraphe.

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Par rapport à ta remarque sur les couleurs, je me rapproche de ce l'on trouve dans les autres environnements de programmation : des couleurs plus douces :
Linotte 2.0 - Page 2 E8.png

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Concernant la suppression du mot "script", sa signifie que l'on ne pourra plus inscrire un titre au début de notre livre ?

Concernant les souffleurs, les deux points sont conservés ou pas ?
[php]
Déplacer_ombre_quadrillage_tileset :
ombre est un rectangle, couleur vaut "noir", x vaut pos_sourisx, y vaut pos_sourisy, hauteur vaut (nombre_case_hauteur_effectif_quadrillage_tileset * hauteur_case_quadrillage_tileset), largeur vaut (nombre_case_largeur_effectif_quadrillage_tileset * largeur_case_quadrillage_tileset), position vaut 100, plein vaut "oui", transparence vaut 15
Souffleurs :
Dès que déplacement_quadrillage == faux, efface ombre
début
pointeur de fond vaut "normal"
[/php]

Remarque : dans le verbier, quand on clique sur paragraphe, on retrouve les mots "rôles" et "actions".

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Bonjour,

Une nouvelle version bêta est disponible : 1.99.2 β

Cette version m'a fait mentir sur pas mal de chose.... Et oui, comme en politique, on attire les personnes avec un beau programme... et à la fin, on fait exactement l'inverse !
J'ai voulu faire des concessions entre garder une certaine compatibilité avec les anciennes versions de Linotte et introduire une syntaxe toute neuve.

Je me suis retrouvé face à des murs, en tant que développeur non normal, il m'a fallut prendre des décisions non populaires....


  1. La retrocompatibilité du langage de fonctionne pas comme dans la première version beta... il faut l'activer dans le menu Outils[/*Ⓜ2njal5x1]
  2. Le format des commentaires a changé.... on n'utilise plus ("") mais /**/ ... même les anciens livres doivent prendre en compte ce changement... Je vais expliquer plus loins les raisons de ce changement.[/*Ⓜ2njal5x1]
  3. J'ai introduit le mot clé "fonction"... la notion de paragraphe disparait.[/*Ⓜ2njal5x1]
  4. Le présent n'est plus présent (!) sauf en cas de compatibilité 1.X[/*Ⓜ2njal5x1]
  5. C'est déjà pas mal non ?[/*Ⓜ2njal5x1]


Le fait de supprimer la première ligne indiquant le nom du livre a été compliqué.

Voici un ancien livre :
[php]
Nom du livre :
Nom du paragraphe :
Actions :
Affiche "Bonjour"
[/php]

Un livre sans le nom du livre :
[php]
Nom du paragraphe :
Début
Affiche "Bonjour"
[/php]

En supprimant le nom du livre, l'analyse syntaxique du livre était perturbée car en gardant la rétrocompatibilité, il ne savait plus différentier le nom d'un livre ou celui d'un paragraphe. C'est pour cela que j'ai ajouté le mot clé "fonction"

La nouvelle syntaxe est maintenant :
[php]
fonction nom de la fonction
début
affiche "Bonjour"
[/php]

Pour le changement de format des commentaires, regardez l'exemple suivant pour comprendre :

[php]
fonction auto-congratulation
début
affiche message("Cpc")

fonction message
* nom :: texte
début
retourne "Tu es bien trop fort " + nom + " !"
[/php]

("Cpc") est un commentaire ou un paramètre de fonction ?


<img src=" title="Tongue" /> il y a quand même une très bonne nouvelle ! J'ai travaillé sur la notion de bibliothèque et corrigé quelques gros bogues.

J'ai ainsi modifié l'exemple Tri Rapide de Wam afin d'utiliser plusieurs livres et découper son programme très proprement par fonctionnalités :


Tri_Rapide.liv
[php]
/*
version : 1
Date de création du projet : 08/08/2012
Date de création de cette version : 08/08/2012
Auteur : Wam
*/
bibliothèque
générateur référence GénérateurNombres.liv
chrono référence chronometre.liv

globale
tableau :: casier de nombre
indice_pivot :: nombre
max <
- 1000
chemin <
- "c:/temp/nombres.txt"

fonction principale
pivot :: nombre
taille :: nombre
i :: nombre
test :: drapeau <
- vrai
temps :: texte
début
efface tableau
parcours remplissageNombres de générateur avec max, chemin
parcours chargementCasierNombres de générateur avec tableau, chemin
parcours start de chrono
mesure tableau dans taille
tant que test == vrai, lis
indice_pivot = 0
pivot vaut tableau{indice_pivot}
test vaut faux
pour i de 1 à taille -1, lis
si (tableau{i}) <
pivot, lis
test = vrai
parcours echanger avec i, indice_pivot
ferme
si (tableau{i}) >
pivot, lis
pivot = tableau{i}
indice_pivot = i
ferme
ferme
ferme
parcours stop de chrono avec temps
affiche tableau
affiche "Le tri a été effectué en " + temps + " secondes"

fonction echanger
*a :: nombre
*b :: nombre
temp :: nombre
début
temp = tableau{a}
tableau{a} = tableau{b}
tableau{b} = temp
indice_pivot = a
reviens
[/php]

GénérateurNombres.liv
[php]
fonction principale
début
affiche "Ne pas exécuter directement ce livre !"

fonction remplissageNombres
* max :: nombre
* chemin :: texte
connecteur :: fichier
début
ouvre connecteur avec "écrasement" depuis chemin
pour chaque max, lis
charge hasard(max * 10) dans connecteur
ferme
ferme connecteur
reviens

fonction chargementCasierNombres
* casier :: casier de nombres
* chemin :: texte
connecteur :: fichier
début
ouvre connecteur avec "lecture" depuis chemin
décharge casier depuis connecteur
ferme connecteur
reviens
[/php]

chronometre.liv
[php]
globale
_seconde & _minute & _heure :: nombre

fonction principale
début
affiche "Ne pas exécuter directement ce livre !"

fonction start
début
_seconde vaut seconde
_minute vaut minute
_heure vaut heure
reviens

fonction stop
* temps :: texte
tmp_seconde :: nombre <
- seconde
tmp_minute :: nombre <
- minute
tmp_heure :: nombre <
- heure
début
temps vaut tmp_heure * 3600 + tmp_minute * 60 + tmp_seconde - (_heure * 3600 + _minute * 60 + _seconde)
reviens
[/php]

Découvrez et téléchargez cette version depuis cette page :


Cette version n'est pas sans bogues... surtout autour des commentaires...

Bon mois d'août !

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Bonjour,

Je viens livrer mes impressions sur cette version 1.99.2 β.

1) La suppression du nom du livre

En fait, je n'y voit que des inconvénients :
- on ne peux plus indiquer un titre à notre programme
- cela nous oblige à indiquer le mot "fonction" devant chaque fonction !

J'avais déjà donné mon avis sur ce dernier point, étant donné qu'il est inutile et alourdit inutilement le code.
Il faut donc trouver un remplaçant au mot "script" !

Remarque : si il s'agit d'introduire le mot clé "fonction" dans le vocabulaire du Linotte, ça se fera via la documentation ou le verbier. Jusqu'à présent, on ne devait pas écrire le mot "paragraphe" devant chaque fonction, on a appris à l'utiliser via la doc ^^

2) Le format des commentaires

Modifier le format ne me gêne pas trop, encore que je trouve (" ") plus simple à taper que /* */
Néanmoins, je comprend le problème.

Par ailleurs, il m'a fallu un petit temps avant de comprendre ton exemple :
[php]
fonction auto-congratulation
début
affiche message("Cpc")

fonction message
* nom :: texte
début
retourne "Tu es bien trop fort " + nom + " !"
[/php]

Il serait plus simple à comprendre comme ceci :
[php]
fonction auto-congratulation
début
affiche message avec ("Cpc")

fonction message
* nom :: texte
début
retourne "Tu es bien trop fort " + nom + " !"
[/php]

Les paramètres étant introduits avec le mot clé "avec", sa devient tout de suite plus clair. De plus, on se rapproche de ce qui se fait déjà avec le verbe "parcourir".

3) La notion de bibliothèque

Excellent ! L'exemple du chronomètre est parfait : je vais pouvoir l'utiliser pour mesurer le temps d’exécution de mon programme x)

Par contre, comment sa fonctionne si les deux livres utilisent la toile ?


En conclusion, je ne pense pas que je vais utiliser cette version, trop contraignante notamment avec les soucis de rétro comptabilité.
En revanche, j'ai hâte de pouvoir utiliser la notion de bibliothèque !


En fait, le mot "livre" est conservé dans le vocabulaire du Linotte ou pas ?
En tous cas, dans nos posts on l'utilise constamment ^^
Car si il est conservé, autant le réintroduire en remplacement du mot "script".

Sinon, voici la liste des mots déjà évoqués pour remplacer le mot "script" :
- Synopsis ou Syn : Mot inutilement complexe, ne faisant pas partie du vocabulaire de programmation et donc n'apportant rien au langage Linotte.
- Module
- Linotte
- Programme : Mot trop long
- Projet : Mot réservé pour le futur
- Code

Si vous avez des idées, n'hésitez pas à participer :;
):

Autre point :
Le choix des couleurs est définitif ?
Car la version 1.99 est tout simplement moins lisible qu'avec la 1.7 :/
(Et si ce n'est pour une question de lisibilité, à quoi sert de "colorier" son code sinon ?)

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Bonjour Wam et merci pour tes retours.

1 - on ne peux plus indiquer un titre à notre programme

Dans les prochaines betas, je proposerais un autre moyen pour nommer son programme. Cette fonctionnalité n'est utile que pour 10% des programmes.
Si on doit écrire un petit algo, c'est inutile : donc, autant alléger le code !

2 - cela nous oblige à indiquer le mot "fonction" devant chaque fonction !

ça remplace paragraphe, on économise 2 caractères ! :-).
Sans rire, je sais que c'est un contrainte mais en même temps, le mot "fonction" apporte un vocabulaire informatique qui a du sens pour beaucoup de monde.

3 - Jusqu'à présent, on ne devait pas écrire le mot "paragraphe" devant chaque fonction, on a appris à l'utiliser via la doc ^^

La sortie de la version 2.0 m'obligera à mettre à jour la documentation....
Énorme boulot en perspective.... il faudra que je trouve le temps...

4 - Par ailleurs, il m'a fallu un petit temps avant de comprendre ton exemple

Ta remarque sur la lecture de la ligne (affiche message avec "cpc") est pertinente. Je vais y réfléchir..

5 - Par contre, comment sa fonctionne si les deux livres utilisent la toile

ça devrait fonctionner... mais je n'ai pas vérifié !

6 - En fait, le mot "livre" est conservé dans le vocabulaire du Linotte ou pas ?

Oui, il reste. il n'y a que le mot paragraphe qui doit disparaitre.
Je garde les mots Livre, Acteur et Rôle.

7 - Car si il est conservé, autant le réintroduire en remplacement du mot "script".

C'est une bonne idée... le mot script va disparaitre dans la prochaine beta.

8 - Le choix des couleurs est définitif ?

Rien de définitif tant que la version finale n'est pas sortie ! <img src=" title="Smile" />

Je pense mettre en place une fenêtre de configuration des couleurs... comme ça, chacun pourra personnaliser la couleur et la taille de la police.

9 - je ne pense pas que je vais utiliser cette version, trop contraignante notamment avec les soucis de rétro comptabilité.

Ok, mais tu peux toujours activer l'option "Compatibilité 1.X" et l'utiliser ! Il n'y aura que les commentaires à modifier.

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Je vais reprendre les points que tu as énoncer précédemment :

1) Très bien, j'attendrais de voir ce nouveau moyen de nommer son programme x)

2) Honnêtement, je n comprend pas l'utilisation du mot "fonction" dans le code.
Si on prend l'exemple du langage c++, voici une fonction :

Code:


void direBonjour()
{
cout <
<
"Bonjour !" <
<
endl;

}


Il n'est inscrit nulle part le mot "fonction". Ce dernier n'apparaît que dans le tutoriel du langage, afin d'expliquer comment l'on nomme ce bout de code.

Pour moi, cela doit fonctionner de la même façon avec le langage Linotte :
[php]
direBonjour :
Début
Affiche "Bonjour"
[/php]

En expliquant dans la documentation que ceci est une fonction.

Et ceci rejoint le point ci-dessous :

3) Pour mettre à jour la documentation, il faudra alors simplement remplacer le mot "paragraphe" par le mot "fonction".
Mais il est inutile d'alourdir le code en devant marquer "fonction" devant chaque paragraphe.

Pourquoi devoir écrire :
[php]
Fonction direBonjour :
Début
Affiche "Bonjour"
[/php]

Quand ceci peut fonctionner :
[php]
direBonjour :
Début
Affiche "Bonjour"
[/php]

5) je m'explique :
On affiche un élément graphique sur la toile.
On appelle un autre livre qui affiche lui aussi un élément graphique.
Qu'est-ce qui se passe ?
A l'ouverture du second livre, la toile est effacée ?
Peut-on ré-afficher l'élément graphique du 1er livre ou est-il supprimé ?

Cool Laisser le choix des couleurs à l'utilisateur : pourquoi pas ?
Mais est-ce que sa ne gênera pas la lecture de son code par d'autres utilisateurs ?
Par exemple, si il a besoin d'un coup de pouce et poste son code sur le forum ?

9) Justement, je suis un grand utilisateur des commentaires :p Ceux-ci me permettent de m'y retrouver rapidement dans mon code en sachant exactement ce que fait telle ou telle fonction.
Et donc, sa m'embêterait de devoir modifier mes commentaires sur chacune des versions de mon programme :p
(Ceci est l'utilisation personnelle que je fait des commentaires, si la syntaxe est modifiée, je m'y résignerais ^^)

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Bonjour,

2, 3 et 9)
Je vais prendre un nouveau virage.
Par défaut, Linotte fonctionnera en version 2.0 avec les commentaires 2.0

Dans le menu Outils, je vais ajouter deux options :
- Mode syntaxe 1.7.1
- Mode ancien format des commentaires

Ainsi, dans un premier temps, vous ne serez pas obligé d'utiliser la nouvelle syntaxe.

Je suis entrain de reflechir sur le mot fonction. Ton argumentation sur la syntaxe du C m'a fait douter....

Du coup, j'ai supprimé la version bêta le temps de fournir une nouvelle version !

4)

Non, pas de soucis, ça fonctionne comme ça avec les autres langages de programmation.

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
La nouvelle beta avance tranquillement...

Va apparaitre les casiers anonymes :

[php]
principale :
lettre :: casier de casiers <
- {"A" , "D" , "G"} , {"B" , "E" , "H"}, {"C" , "F" , "I"}
début
pour chaque {"Bruno","Jean","Pierre"}, affiche joker
pour chaque {0, 1, 2}, affiche lettre { joker , 0 }
[/php]

pour afficher sur le tableau :

Bruno
Jean
Pierre
A
B
C[/quote
]

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
J'ai terminé l'éditeur des couleurs de l'Atelier...
[attachment=40]

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Sa m'a l'air sympa x)
C'est quoi "Token" ?

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
"Token" fait parti du charabia interne au moteur du langage Linotte...
un token est un mot reconnu comme étant du langage Linotte.

[php]affiche A[/php]

affiche est un token
A est un token

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
ça avance....
Voilà à quoi va ressembler le livre "Bienvenue.liv"
(premier livre ouvert dès que l'on installe l'Atelier pour la première fois)

[attachment=41]

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Il y aura deux syntaxes différentes pour les commentaires ?
/* */ si le commentaire prend plusieurs lignes
// si le commentaire tient sur une ligne
?

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
C'est exactement ça. Comme en C ou Java.

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
Une nouvelle fonction dans l'Atelier arrive : la navigation dans le livre.

Il sera maintenant possible de double cliquer sur le nom d'un paragraphe :
[php]
parcours mafonction
[/php]
et l'Atelier Linotte pointera le curseur directement sur cette fonction.
En appuyant simultanément sur ALT + la flèche gauche (ou en utilisant le menu "Retour"), on revient au point d'appel de la fonction.

descriptionLinotte 2.0 - Page 2 EmptyRE: Linotte 2.0

more_horiz
J'ai construit la version 1.99.3.

Les nouveautés :

Langage :
- Syntaxe 2.0 et nouveaux formats des commentaires,
- Casiers anonymes,
- Possibilité de mettre une image sur le fond d'un formulaire (exemple BasicTime.liv),
- Ajout des fonctions chargecasiernombres et chargecasiertextes au Conduit,
- La fermeture d'un formulaire appelle qu'une fois l'évènement "clic souris".

Atelier :
- Possibilité d'être compatible avec la syntaxe 1.X avec l'option Outils/Options/Compatibilité Linotte 1X activée,
- Ajout du manageur de style (le couteau Suisse de l'Atelier ...)
- Ajout de la fonctionnalité "Navigation dans le livre"
- Possibilité d'exporter son livre en image au format PNG.

Vous pouvez télécharger cette version à partir de cette page :
http://langagelinotte.free.fr/wordpress/?p=259

descriptionLinotte 2.0 - Page 2 EmptyRe: Linotte 2.0

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre