Linotte (langage)

Restez toujours informé : suivez-nous sur Google (☆)

Introduction

Linotte
Apparu en22 octobre 2005
ParadigmeProgrammation orientée objet, structurée et impérative
Système d'exploitationMultiplateforme
LicenceGNU GPL
Site Weblangagelinotte.free.fr

Linotte est un langage de programmation interprété un peu particulier de type L4G, créé par Ronan Mounès en 2005. Sa particularité est sa syntaxe en français ; il est l'un des rares langages dans ce cas.

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 au lycée.

Exemple d'Hello world

HelloWorld : affichage : Actions : "Hello World !" !

Le vocabulaire

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

Un programme devient un livre, une méthode, un paragraphe, 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.

Le livre

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".

Un livre commence toujours par la déclaration de son nom :

Livre : nom du livre

ou

Nom du livre :

Le paragraphe

Le paragraphe est une méthode définit dans un livre. Chaque paragraphe implémente un algorithme ou un traitement particulier qui peut être utilisé à partir de n'importe quels autres paragraphes du même livre.

Le premier paragraphe d'un livre est le premier lu lors du lancement de la lecture d'un livre.

Il est définit ainsi :

Paragraphe : ma méthode

ou

Ma méthode :

Les acteurs et les rôles

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.

Les actions

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

Programmation impérative

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

Programmation spaghetti : Premier : Actions : Affiche "Je suis là" Va vers deuxième Deuxième : Actions : Affiche "Je suis ici maintenant !" Termine

Programmation fonctionnelle

Linotte offre des mécanismes permettant d'implémenter des algorithmes répondant au paradigme fonctionnel : l'utilisation de paramètres et de fonction. Il est également possible d'utiliser des acteurs locaux au paragraphe (visible à l'exécution que dans un paragraphe).

Nombre Fibonacci : entrée : rôles : a est un nombre actions : questionne a sur "Entrez un nombre :" fibo(a) ! termine fibo : rôles : * n est un nombre actions : si n est plus petit que 2 alors retourne n retourne fibo(n-1) + fibo(n-2)

Programmation objet

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 :

Les espèces : Espèces : Patte est un nombre Couleur est un texte Repas est un texte L'espèce animal contient une Patte , une Couleur, un Repas Premier : Rôles : chat est un animal, Patte est 4, Couleur est "noir", Repas est "souris" Actions : affiche repas de chat termine

Programmation évènementielle

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

Boite à texte : Grands rôles : 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 Début : Actions : Ajoute boite & b1 & l1 dans form Fais réagir b1 à "clic souris" pour afficher valeur tant que 1 est différent de 2, lis temporise ferme Afficher valeur : Rôles : *b est une bouton Actions : Affiche texte de boite Reviens

Traitement parallèle

Traitements en parallèle : Démonstration : Actions : appelle traitement affiche "On attend 3 secondes" attends 3 secondes affiche "Fin des 3 secondes" termine traitement : Actions : attends 1 seconde affiche "....moi, je ne veux pas attendre !" reviens

Manipulation d'objets graphiques

Collision : Grands rôles : 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" Décor : Actions : Efface la toile Projette la salle & centre & boule Va vers action action : Actions : temporise déplace boule vers sourisx et sourisy si boule est en collision avec centre alors couleur de centre vaut "jaune" sinon, couleur de centre vaut "rouge" va vers action

Programmation réseau

Client : Connexion : Rôles : connexion est un pont, adresse vaut "localhost" Actions : Ouvre connexion avec "" depuis "" Décharge message depuis connexion Affiche "Message du serveur" + message Ferme connexion Termine

Connexion à une base de données

A partir de la version 1.2.2 alpha, Linotte est capable de se connecter sur une base de données du moment qu'un pilote JDBC est disponible. Linotte construit ses requêtes SQL à partir des noms des acteurs. Le nom d'une espèce représente le nom d'une table, les attributs de cette même espèce, les colonnes de la table.

Bloc-notes : Espèces : id est un nombre data est un texte l'espèce note contient id, data Chargement : Rôles : valeurs est un casier de note depuis "source:masourcesql" ("Linotte va créer la requête SQL : SELECT ID, DATA FROM NOTE") Actions : Pour chaque valeurs, lis Affiche "La note numéro " + id@joker + " vaut " + data@joker Ferme Termine

Programmation de pages Web dynamiques

A partir de la version 1.2.2 alpha, 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 vide%> <%§n est un nombre vide%> <%§durée est un nombre vide%> Suite de Syracuse en ligne Suite de Syracuse : <% demande action si action est égal à "resultat" alors lis demande n tant que n est plus grand que 1, lis durée vaut durée + 1 si (n mod 2) est égal à 0 alors n vaut n / 2 sinon, n vaut n * 3 + 1 ferme %> La durée du vol est égale à <%affiche durée%> <% ferme sinon, lis %> Nombre de départ : <% ferme %>

L'interprète "L'atelier Linotte"

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

Le webonotte

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.