Linotte (langage)

Un article de Wikipédia, l'encyclopédie libre.

Linotte
Logo.

Date de première version
Paradigme objet, prototype, structurée et impérative
Développeurs Ronan « cpc6128 » Mounès
Dernière version 3.12 ()[1],[2]Voir et modifier les données sur Wikidata
Influencé par Java, BASIC, Logo
Système d'exploitation Multiplateforme
Licences GNU GPL v3.0
Site web langagelinotte.free.frVoir et modifier les données sur Wikidata
Extension de fichier .liv


Linotte est un langage de programmation interprété de quatrième génération. Sa particularité est sa syntaxe en français.

Ce langage est libre et a été créé dans le but de permettre aux enfants et aux personnes n'ayant pas une connaissance approfondie de l’informatique d’apprendre la programmation facilement. Comme sa devise l'indique : « Tu sais lire un livre, alors tu peux écrire un programme informatique », ce langage se veut très simple ; une variante de la devise dit aussi « tu sais écrire une phrase, donc tu sais écrire un programme ».

Il est adapté à l'apprentissage de l'algorithmique dès l'école primaire mais aussi au collège et au lycée[3],[4].

Exemple de Bonjour le monde[modifier | modifier le code]

BonjourLeMonde :
 début
   affiche "Bonjour le monde !"

Vocabulaire[modifier | modifier le code]

Linotte a la particularité d'utiliser un vocabulaire non technique plutôt proche de termes utilisés, soit dans le monde cinématographique, soit dans la littérature.

Un programme devient un livre, une variable, un acteur et l'écran, une toile. On n'exécute pas un livre, mais on le lit.

Linotte n'introduit pas de nouveaux concepts mais les renomme tout simplement.

Livre[modifier | modifier le code]

Le livre est la structure mère d'un programme écrit en Linotte. Un livre est représenté par un fichier texte dont l'extension est « .liv ».

La première fonction d'un livre est la première lue lors du lancement de la lecture d'un livre.

Acteurs et rôles[modifier | modifier le code]

L'association d'une valeur à un nom s'effectue par l'instanciation dans la mémoire de l'ordinateur d'un acteur. Chaque acteur est un objet caractérisé par une valeur, un nom et un rôle (son type). L'acteur porte la sémantique d'une expression en langage Linotte.

L'acteur peut être comparé au mot variable que l'on retrouve dans les autres langages de programmation.

Les rôles disponibles en Linotte sont : nombre, texte, drapeau, casier, espèce.

Actions[modifier | modifier le code]

Un programme informatique est une suite d'opérations, un livre en langage Linotte, une suite d'actions. Une action est constituée d'un verbe et d'acteurs ; elle est destinée à lancer un traitement particulier :

demande acteur
affiche acteur
acteur vaut 5 * 5

Caractéristiques du langage[modifier | modifier le code]

Programmation impérative[modifier | modifier le code]

Historiquement implémentée dans le langage, elle offre un accès rapide à la compréhension des bases de la programmation.

 spaghetti :
  début
   affiche "Je suis là"
   va vers deuxième
 
 deuxième :
  début
   affiche "Je suis ici maintenant !"

Exemple d'utilisation de paramètres et de fonctions :

 nombre Fibonacci : 
  a est un nombre
  début
   questionne a sur "Entrez un nombre :" 
   affiche fibo(a)
 
 fibo : 	
  * n est un nombre 	
  début
   si n est < 2, retourne n 		
   retourne fibo(n-1) + fibo(n-2) 

Il est également possible d'utiliser des acteurs locaux aux fonctions (n'étant visibles à l'exécution que dans cette fonction).

Programmation objet[modifier | modifier le code]

Les espèces sont un type d'acteur complexe caractérisé par des attributs. Elles permettent au développeur de créer ses propres objets :

espèces
 patte est un nombre
 couleur est un texte
 repas est un texte
 espèce animal contient patte, couleur, repas
 
principale :
 chat est un animal, patte vaut 4, couleur vaut "noir", repas vaut "souris"
 début
  affiche repas de chat

Programmation événementielle[modifier | modifier le code]

Les événements sont attachés à des composants graphiques lors de la construction d'IHM :

 globale      
  form est un formulaire, titre vaut "La boite à texte", largeur vaut 400, hauteur vaut 260         
  boite est une boite,x vaut 30, y vaut 30, largeur vaut 200, hauteur vaut 100         
  b1 est un bouton, texte vaut "Afficher le texte dans le tableau", x vaut 30, y vaut 150         
  l1 est une étiquette, texte vaut "", x vaut 30, y vaut 200         		 
 
 principale :
  début
   ajoute boite & b1 & l1 dans form		         
   Fais réagir b1 à "clic souris" pour afficher valeur 		
   tant que 1 != 2, lis 			
    temporise	 		
   ferme  
 
 afficher valeur :
  *b est un bouton 	
  début
   affiche texte de boite 		
   reviens

Traitement parallèle[modifier | modifier le code]

 traitements asynchrone :
  début
   appelle traitement 		
   affiche "On attend 3 secondes" 		
   attends 3 secondes 		
   affiche "Fin des 3 secondes" 		
 
 traitement :
  début
   attends 1 seconde 		
   affiche "....moi, je ne veux pas attendre !" 		
   reviens  

Manipulation d'objets graphiques[modifier | modifier le code]

 globale
  centre est un cercle, x vaut 311, y vaut 285, couleur vaut "rouge", plein vaut "oui", rayon vaut 50 
  boule est un rectangle,  largeur vaut 40, hauteur vaut 20, couleur vaut "noir", plein vaut "oui" 
  salle est une toile, couleur vaut "blanc"  
 
 collision :
  début
   efface toile 		
   projette salle & centre & boule 		
   va vers action  
 
 action :
  début
   temporise 		
   déplace boule vers sourisx et sourisy 		
   si boule est en collision avec centre, couleur de centre vaut "jaune" 		
   sinon, couleur de centre vaut "rouge" 		
   va vers action 

Programmation réseau[modifier | modifier le code]

 client :
   connexion est un pont, adresse vaut "localhost" 
   début
    ouvre connexion avec "" depuis "" 	
    décharge message depuis connexion 	
    affiche "Message du serveur" + message 
    ferme connexion 	


Programmation de pages Web dynamiques[modifier | modifier le code]

À partir de la version 1.2.2, le concept de weblivre est introduit. Il mélange, dans un même fichier, du langage HTML et du langage Linotte. Ce dernier est intégré directement dans le HTML par un balisage précis à l'instar des langages PHP ou Java (JSP).

<%action est un texte %>
<%n est un nombre %>
<%durée est un nombre %>
<html>
<head><title>Suite de Syracuse en ligne</title></head>
<body>
<h1>Suite de Syracuse :</h1>
<% 
   demande action 
   si action == "resultat", lis 
      demande n 
      tant que n > 1, lis
		durée vaut durée + 1
		si (n mod 2) == 0, n vaut n / 2
		sinon, n vaut n * 3 + 1
	  ferme		
%>
    La durée du vol est égale à <%affiche durée%>
    <form action="syracuse.wliv" method="post">
	  <input type="submit" value="Recommencer" />
    </form>	
<% 
   ferme 
   sinon, lis 
%> 
    <form action="syracuse.wliv" method="post">
	  <input type="hidden" name="action" value="resultat" />
	  Nombre de départ : <input type="texte" name="n"  />
	  <input type="submit" value="Calculer la durée" />
    </form>
<% 
   ferme 
%>
</body>
</html>

Interprète « L'atelier Linotte »[modifier | modifier le code]

Linotte est un langage interprété. Pour l'instant un seul interprète est disponible, mais il reste néanmoins libre. Il est développé en Java, son code source est distribué sous la licence GNU-GPL. Il existe également en version packagée pour les plateformes MS-Windows, Ubuntu, Fedora, Archlinux et la clé USB Framakey

Webonotte[modifier | modifier le code]

Le Webonotte est un serveur HTTP intégré à l'Atelier Linotte basé sur Jetty. Il produit des pages web dynamiques développées en langage Linotte.

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. a et b « Linotte, l’algorithmique et la programmation pour tous ! » Blog Archive » Linotte 3.12 ! », (consulté le )
  2. a et b « Release V3.12 · cpc6128/LangageLinotte · GitHub », (consulté le )
  3. Éducation nationale, [1].
  4. « Linotte, l’algorithmique et la programmation pour tous ! », sur langagelinotte.free.fr (consulté le )

Liens externes[modifier | modifier le code]