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 :
Code promo Nike : -25% dès 50€ ...
Voir le deal

Linotte 2.0

power_settings_newSe connecter pour répondre
4 participants

descriptionLinotte 2.0 EmptyLinotte 2.0

more_horiz
Bonjour,

Ce post va présenter les premières réflexions qui seront portées par Linotte 2.0.

La version 2.0 doit corriger les erreurs de jeunesse du langage et va s'inspirer de ce que j'ai déjà testé sur Parangon-lang.

- Tous les acteurs seront locaux sauf ceux présents dans la section "grands rôles". Le symbole § disparaitra.
- La mémoire sera vidée avant chaque lancement de livre (mais si j'hésite encore sur ce point...)
- Les livres en Linotte 2.0 ne seront pas compatibles avec les livres en Linotte 1.x
- Le symbole <
-
va disparaitre pour :=

Voici un exemple de syntaxe que je propose (non définitif !)

[php]
globale
requête :: texte <
- "select nom from clients"

principale :
noms :: casier de texte
i :: nombre
début
si 4 >
= 2, lis
affiche "c'est bon"
ferme
sinon affiche "et non, tu as faux !"
pour i de 1 à 10, lis
affiche i
ferme
[/php]

La simplification de la syntaxe est un sujet crucial pour l'avenir du langage. Linotte est je pense (AMHA) un bon langage mais il peut faire peur par son expressivité excessive qui conduit souvent à écrire des erreurs syntaxiques qui peuvent faire perdre du temps dans l'élaboration de programme.

Cette version arrivera sûrement à la fin de l'année. Je me laisse le temps de la réflexion... et de la votre afin que vous m'apportiez vos propres idées !

Plus d'informations ici et lien pour le télécharger la version beta ici :
http://langagelinotte.free.fr/wordpress/?p=259

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Yo,

Tu connais déjà mon avis par rapport à la syntaxe donc je vais po rabacher sur ce point ^^

Sinon, les greffons sont une solution temporaire ou définitive ? seront-ils un jour intégrés directement au Linotte ?

Je trouve que le langage devient de plus en plus compliqué avec la simplification syntaxique et la multiplication des greffons ^^

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Oui, je connais ton point de vue. Hier, je suis aller justement hier les remarques laissées sur le forum sur un post précédent sur le même sujet.

Ce travail sur la syntaxe, je le fais pour prendre en compte les remarques que je constate sur ce site ou ailleurs.
Ainsi, je dois prendre en compte vos remarques qui me font plutôt plaisir car par exemple, toi, tu souhaites garder la syntaxe du langage.
Mais en même temps, je dois attirer des nouveaux développeurs et débutants.... dur dur du concilier les trois.

N'hésitez pas à proposer des syntaxes !

Voici une nouvelle proposition :

[php]
démonstration sql :

globale
requête := "select nom from clients"

fn principal
connecteur :: sql, config = "dzdz"
noms :: texte .. ("pour créer un tableau")
i :: nombre
début
noms = connecteur.executer(requête)
affiche noms
évoque connecteur.ferme()
si 4 >
= 2, lis
affiche "c'est bon"
ferme
sinon affiche "et non, tu as faux !"
pour i de 1 à 10, lis
affiche i
ferme
[/php]

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Bonjour,

Si je comprends bien, il n’y aura plus d’évolution sur la base de la version 1.x ??

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Bonjour Pat,

ça faisait longtemps que l'on ne t'avait pas vu sur le forum !


Si je comprends bien, il n’y aura plus d’évolution sur la base de la version 1.x ??


Attention, c'est théorique pour l'instant ! Ce que je dois déterminer, c'est ce qui ne sera plus compatible avec la version 1.x.

Le point fort est celui là :

- Tous les acteurs seront locaux sauf ceux présents dans la section "grands rôles". Le symbole § disparaitra.

Si vraiment, c'est embêtant pour vous, je pourrais ajouter un mode compatibilité "1.X" : une option dans le menu qui active ou pas cette nouvelle évolution du langage en sachant que le nouveau mode sera activé par défaut.

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Autre question, que pensez-vous de cette syntaxe pour déclarer un tableau :

avant
[php]
tableau :: casier de texte valant "a", "b"
[/php]

Linotte 2.0 :
[php]
tableau :: texte .. "a", "b"
[/php]

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Bonjour,
Je viens participer au débat ^^

Concernant les deux premiers points de la version 2.0 je suis entièrement d'accord, a savoir :
- Tous les acteurs seront locaux sauf ceux présents dans la section "grands rôles". Le symbole § disparaitra.
- La mémoire sera vidée avant chaque lancement de livre (je soutiens particulièrement ce point x))

Concernant les modifications de la syntaxe, voici mon point de vue :
le langage Linotte est pour moi le langage le plus facile à apprendre.
De part sa syntaxe en français, il offre une nouvelle vision de la programmation, bien plus accessible.
Cela permet à tous les amateurs de pouvoir se lancer dans quelques projets, en prenant du plaisir à (re)découvrir la programmation, sans s'arracher les cheveux à chaque ligne de code.

Si le langage rebute les programmeurs plus expérimentés, c'est là qu'intervient le langage Parangon-lang, non ?

Je ne pense pas qu'il faille mélanger les deux.

Si le but du langage Linotte est de pouvoir être enseigné aux enfants, je pense qu'il peut remplir son rôle.

Mais s'agit-il d'apprendre aux enfants le langage Linotte ou la programmation ?

Par exemple, la programmation évoluant dans la langue anglaise, avec ses "if", "for", etc... jusqu'au plus simple exemple, le "Hello world", tout l'intêret du Linotte réside dans sa syntaxe en français.
Ceci dans le but de pouvoir réaliser facilement un programme sans devoir pour autant apprendre une nouvelle langue !

Autre exemple, les accolades que l'on retrouve dans les langages classiques n'ont pas leur place dans le langage Linotte.
On retrouvera en revanche une ponctuation "normale".

Mais si le but est d'appendre la programmation, alors le Parangon-lang est là pour prendre le relais du Linotte.

Je pense que l'idée de concevoir deux langages est très bonne.

On peut ainsi s'essayer à la conception de programmes avec le Linotte pour ensuite appréhender plus facilement la programmation en général grâce au Parangon-lang.
L'inverse est également possible :
Les programmeurs amateurs, débutant en anglais, s'essayant au parangon-lang, pourront alors faire le lien avec avec le langage Linotte et sa syntaxe ainsi que sa documentation en français !
Cela pourrait d'ailleurs sauver de multiples projets amateurs débutés dans des langages plus complexes et avec une documentation qu'ils tentent de traduire avec Google Translate ^^

Mais ceci est ma propre idée du langage Linotte.
Alors peut-être faudrait-il me rappeler les buts recherchés par le langage Linotte ?

Dernier point :
Je suis évidemment pour une compatibilité entre les deux versions (si besoin il y a) : je ne voudrais pas avoir à retaper mes quelques milliers de lignes de code x)

Concernant le remplacement de <
- par := je suis contre.
Premièrement <
- c'est simple et efficace : on comprend bien ce que l'on fait. (Et puis, j'en ai l'habitude et que je l'aime bien x))
Deuxièmement, car je préfère laisser le signe = pour les opérations mathématiques.

Pour la déclaration des tableaux, je trouve le terme casier approprié : on sait tout de suite à quoi on a affaire.


La simplification de la syntaxe est un sujet crucial pour l'avenir du langage. Linotte est je pense (AMHA) un bon langage mais il peut faire peur par son expressivité excessive qui conduit souvent à écrire des erreurs syntaxiques qui peuvent faire perdre du temps dans l'élaboration de programme.


Je trouve au contraire que le Linotte permet très peu d'erreurs au niveau de la syntaxe.
Une erreur que je faisait souvent était l'oubli de la virgule après "Sinon", ce qui à été corrigé depuis x)
L'exemple du casier est parfait pour le démontrer :
Avec cette nouvelle syntaxe on aura plus tôt fait d'oublier un point en le déclarant plutôt que d'oublier le "r" à casier...

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Pour ma part :

L’option proposée me paraît comme indispensable…

Concernant la syntaxe / aux tableaux, je trouve que l’on y perd beaucoup en « lisibilité ».

Sinon, je n’ai plus que peu de temps à consacrer à la programmation, mais je suis avec intérêt l’évolution du langage Linotte.

Bonne continuation…

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
C'est po bête ce que dit Wam.

Le Linotte pour les Linottiens, le Parangon-Lang pour les programmeurs !

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Bonjour,

Merci pour ces retours très intéressants pour moi.

* La version 2.0 sera compatible avec les livres de la version 1.X mais à la condition que les livres contiennent le mot clé version1 :

[php]
Livre :acteurs locaux à un sous-paragraphe
version1

Paragraphe : principal
rôles :
casier :: casier de nombre vide
actions :
pour chaque 10, lis
§ b :: nombre valant 15
mélange b
ajoute b dans casier
ferme
affiche casier

[/php]

* La version 2.0 sera capable de "comprendre" la syntaxe Linotte 1.X.
* Tous les acteurs seront locaux sauf ceux présents dans la section "grands rôles". Le symbole § disparaitra.
* La mémoire sera vidée avant chaque lancement de livre (mais si j'hésite encore sur ce point...)
* Les symboles {} seront remplacés par [] pour être en cohérence avec ce qu'il se fait dans les autres langages de programmation.
* Il doit disparaitre des mots clés du langage : livre, paragraphe, rôle, action.
* alors ne doit plus être utilisé mais seulement la virgule lors de l'utilisation des conditions.
* Linotte garde le <
-
* un livre commence par synopsis ou syn
* un paragraphe devient une fonction. j'hésite encore avec le mot clé fn ou fonc.

Voici un exemple probable de nouvelle syntaxe :

[php]
synopsis trouver un nombre
globale
secret <
- hasard(500)
boucle <
- 0

fn principal
réponse :: nombre <
- 0
début
affiche "Tu dois trouver un nombre entre 0 et 500."
tant que réponse != secret, lis
boucle vaut boucle + 1
affiche "Propose un nombre"
demande réponse
si réponse >
secret, lis
"Ce nombre est trop grand !" !
ferme
sinon si réponse <
secret, lis
"Ce nombre est trop petit !" !
ferme
ferme
affiche "Félicitation, c'était ${secret} et tu as réussi en ${boucle} coups !"
[/php]

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz

* La version 2.0 sera compatible avec les livres de la version 1.X mais à la condition que les livres contiennent le mot clé version1
* La version 2.0 sera capable de "comprendre" la syntaxe Linotte 1.X.


*Soupir de soulagement*


* Linotte garde le <
-


Parfait x)


* alors ne doit plus être utilisé mais seulement la virgule lors de l'utilisation des conditions.


Simplifie le langage sans nuire à la lisibilité : sa me convient.


* Il doit disparaitre des mots clés du langage : livre, paragraphe, rôle, action.
* un paragraphe devient une fonction. j'hésite encore avec le mot clé fn ou fonc.


Si le vocabulaire du Linotte doit être remplacé par celui utilisé dans la programmation, pourquoi pas ?
Cela pourrait favoriser la compréhension de la programmation en général.
Mais le langage Linotte doit conserver sa syntaxe en français.
Le Linotte doit donc garder la possibilité d'écrire les mots en entier (pouvoir écrire "fonction"). Après, rien n'empêche de les remplacer par des diminutifs, dans un soucis de rapidité.


* un livre commence par synopsis ou syn


Je suis contre. Mot inutilement complexe, ne faisant pas partie du vocabulaire de programmation et donc n'apportant rien au langage Linotte.


* Les symboles {} seront remplacés par [] pour être en cohérence avec ce qu'il se fait dans les autres langages de programmation.


Si vraiment on ne peut pas en réchapper, autant garder les accolades telles quelles, l'accolade étant un signe de ponctuation structurant un texte en délimitant des groupes d'éléments. Cf : wikipédia ^^

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Voici une nouvelle proposition de syntaxe suite aux différents retour ![/align]

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
[php]
script trouver un nombre
[/php]

Pour remplacer le mot livre, j'ai pensé à mettre script comme dans l'exemple pdf indiqué ci-dessus.

Sinon, module :
[php]
module trouver un nombre
[/php]

ou tout simplement :
[php]
linotte trouver un nombre
[/php]

Vous en pensez quoi ?

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
J'aurais une préférence pour "linotte".

Mais en fait à quoi servira de mettre le mot fonction devant le nom du paragraphe ?
Car actuellement, on se contente juste de marquer le nom du paragraphe.
Il y a d'autre mots de prévus ?
Par exemple, sur une fonction qui retourne un nombre on écrira :

retourne nom_de_fonction
{
...
}

?

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
ça permet juste de clarifier la lecture d'un livre.
Dés retour que j'ai. je pense que les deux points après le nom du paragraphe ne facilite pas la lecture du programme. Il y a trop de deux points.

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Surprenant.
L'utilisation des deux points ne m'a jamais gêné, je les trouve même intuitifs :
on indique le nom du paragraphe, suivit des deux points, pour en indiquer le contenu.

Je trouve cela plus simple que de devoir écrire "fonction" ou "fn" devant le nom de chaque paragraphe, d'autant que le mot se révèle inutile.

Et je ne pense pas que repérer une fonction au milieu de son code pose un problème ^^

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Tu es peut être habitué à cette syntaxe. Du coup, ça ne te choque pas.

Je propose un nouvel exemple de code 2.0.
Comme j'ai supprimé les mots clés rôles et actions suivis par les deux-points, je propose de garder le deux-points après le nom du paragraphe.

J'ai gardé le mot clé "script", ça permet de garder une porte ouverte le jour où je veux mettre un autre mot clé comme : classe, objet ou greffon....
Ainsi, je pourrai typer les sources.

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Sa me va x)
Pour le fait de typer les sources je suis également d'accord.

Une autre question :
Comme tu supprimes les mots actions et rôles, tu conserves le mot "souffleurs" ?

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Je supprime juste les mots. Les sections correspondantes sont toujours là.
Avant le mot clé début, il y a les rôles, et après les actions.
Oui, je conserve le mot souffleur.

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Ok, parce que je trouve que le mot "souffleur" ne sert pas à grand chose.
Écrire "dès que" suffit pour comprendre la condition.
De plus, ce n'est pas un mot faisant partit du vocabulaire de la programmation ^^

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Bonjour Wam,

Oui, tu as raison sur le fait que le "dès que" est suffisant mais il permet de "partitionner" clairement le livre.

Il faut que je réfléchisse également à l'avenir des souffleurs...

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
La version 2.0 apportera également une modification de l'option "bonifier" qui sera activée par défaut (cf pdf attaché).

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Personnellement, je ne me sert pas de cette option.
Néanmoins, je ne voit pas d’inconvénient à l'activer par défaut, tant qu'on n'est pas obligé de la désactiver à chaque redémarrage de l'atelier ^^

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
Quelques corrections cosmétiques du bonifieur...
La déclaration des rôles est plus visible.
De plus, j'ai ajouté une option qui permet à l'Atelier d'être stricte au niveau de la validation des livres.

descriptionLinotte 2.0 EmptyRE: Linotte 2.0

more_horiz
En attendant la version stable 2.0 pour la fin de l'année, je propose une préversion nommé... Linotte 1.99.

Elle est téléchargeable ici :

https://langagelinotte.googlecode.com/f ... 1.99.0.zip

D'ici quelques jours, je ferai une annonce sur le site mais pour l'instant, je la réserve pour le forum.

J'attends vos retours sur les éventuels bogues :-)

Le bogue des collisions est corrigé dans cette version.

descriptionLinotte 2.0 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