Nous vous remercions de votre visite
Nous utilisons un cookie pour mesurer l'audience et améliorer votre expérience sur le site.
  
Talenha
LE LANGAGE DE PROGRAMMATION
Table des matières

1.  Naissance du projet^

Ce projet est né parce qu'il fallait créer un outil d'organisation de la réalisation de programmes informatiques.
Et, j'expliquerai pourquoi dans la page qui suit; mais, en bref, il y a deux façons de programmer un logiciel.
  1. Coder immédiatement
  2. Organiser son code à l'aide de l'abstraction

2.  Son origine^

A l'origine, ce projet devait créer des menus pour une interface de saisie de données. On pouvait simplement ajouter, modifier, rechercher des données dans une liste. Ce type de programme est si courant qu'on le demande aux candidats pour un emploi de développeur.
Or, quelque soit la donnée, l'interface est la même; il y a donc une possibilité de la faire écrire par un ordinateur.
Mais, en fait, on doit pouvoir définir soi-même l'interface pour avoir sa propre manière de faire, sa façon personnelle.
Ce qui veut dire qu'il faut alors décrire l'interface et la personaliser ensuite avec les données et cela, à l'aide d'un programme qui génèrera le code final.

3.  Pourquoi fallait-il créer un outil d'organisation de la réalisation de programmes informatiques ?^

Un outil d'organisation tout court, en fait.
Je m'explique. C'est dès lors que l'on sait exactement comment il faut faire toutes les tâches d'un projet que l'on a besoin de se simplifier l'esprit.
Et, ce qui le simplifie, c'est l'organisation.
C'est bien de connaître exactement les démarches mais encore faut-il les avoir notées dans l'ordre (ou dans le désordre) pour n'en n'oublier aucune.
En effet, en faisant une liste des tâches, vous pouvez ainsi avoir une vue d'ensemble qui vous permet de compter rapidement le nombre de tâches et en combien de temps vous aurez terminé.

4.  Pour ne plus oublier la moitié du programme^

Organiser un projet, c'est établir une liste des tâches. Mais, en informatique, les tâches contiennent des sous-tâches qui elles-mêmes contiennent d'autres sous-tâches. En réalité, c'est une arborescence de tâches à réaliser.
En n'ayant rien oublié, on sait exactement quoi faire et, dans un monde moderne, on peut avoir pour chaque tâche un document explicatif des sous-tâches à effectuer.
Alors, plus besoin non plus d'avoir à réécrire ces sous-tâches.

5.  Pour ne plus dupliquer les mêmes programmes^

Et, lorsque l'on commence à s'organiser, on se rend compte qu'en fait, la saisie du code source le meilleur n'est en fait que la réutilisation d'un code qui fonctionne à merveille.
C'est donc d'emblée, une perte de temps de saisir l'ensemble d'un programme informatique sans aucune organisation, sans avoir rien noté mais en ayant tout à l'esprit.
D'autre part, l'organisation permet de transmettre à d'autres les connnaissances et les savoirs-faire.

6.  Ce qu'apporte ce projet^

Véritablement, il s'agit de trouver un moyen de réutiliser le maximum de code et de ne modifier que certains éléments. Mais, également, c'est faire réaliser la saisie manuelle du programme par un ordinateur au lieu d'un humain avec en supplément, un code bien indenté, bien formé, avec des commentaires clairs parce que l'on aura introduit dans ce code cette organisation en amont du projet.
Ce projet s'applique donc à tous les projets informatiques mais pas uniquement.
Il permet de structurer l'esprit de manière à se lever le matin l'esprit clair et serein, en commençant la journée par se dire "pas de problème, tout est dans le script".

7.  Destinataires du projet^

Je ne voudrais pas paraître égoïste mais il s'adresse d'abord à moi-même car je me suis rendu compte à quel point s'organiser est important quand on a bien en tête tous les éléménts à réaliser. A l'inverse, ne pas avoir tous les éléments en tête, c'est parce que l'on n'a pas déjà écrit des milliers de lignes de code. Par conséquent, l'organisation va être créatrice, en fait. On va commencer par imaginer comment cela pourrait être avant que ce ne le soit vraiment.
Cela veut dire que l'organisation est le point de départ de la création d'un logiciel; mais, en fait, si vous avez déjà quelqu'un qui sait coder alors il vous dira certainement ce qui a déjà été créé mais aussi ce qui n'a jamais été tenté.

8.  Contenu^

Ce projet contient un langage de programmation permettant de créer des programmes informatiques. Je dis créer et non pas écrire des programmes informatiques parce que l'organisation du programme est son écriture presque directe. Et, pour créer cette écriture, ce projet utilise la création de langages de programmation ou bien, tout simplement, des notations abstraites.

9.  C'est quoi des notations abstraites ?^

Ce sont des termes qui expliquent un fonctionnement. En fait, je remplace les idiomatismes par des termes qui ne sont pas encore définis mais que je définirai lorsque l'idée me viendra et à ce moment-là, j'expliquerai à la machine comment utiliser ces termes et mes informations sur le projet pour le mettre en oeuvre. Eventuellement, je choisirai une autre notation pour expliquer mes termes et ainsi de suite jusqu'à atteindre l'algorithmie.

10.  C'est quoi l'algorithmie ?^

C'est une succession de notations dont le nombre est très limité mais ces notations successives utilisent l'arithmétique pour reproduire un fonctionnement.

11.  Est-ce que vous avez un exemple simple de notations abstraites ?^

Oui, si vous souhaitez stocker des données dans un ordinateur, il faut d'abord en définir le nombre et en faire une description.
Par exemple, un carnet téléphonique contiendra au minimum le prénom, le nom et le numéro de téléphone d'un contact.
Et, on fait ici abstraction des cas de doublons avec le prénom et le nom. Et, pour y pallier, on ajoute un nouveau champ ID.

12.  Mais cela n'a rien d'abstrait...c'est très concret au contraire.^

Non, non, il y a le prénom, le nom et le numéro de téléphone, et, c'est totalement abstrait pour un ordinateur.
Ensuite, on peut donner à un ordinateur une liste de milliers de personnes et au fur et à mesure qu'il utilisera ce carnet, il comprendra à quoi cela peut bien servir. Et, on pourrait être surpris de sa réponse.

13.  Cela semble irréel, vous auriez un exemple de projet généré par ce langage de programmation ?^

Ce document-ci est écrit en langage markdown. Ensuite, le programme génère une page HTML en suivant des règles syntaxiques et grammaticales que j'ai moi-même pré-défini. Cela me permet aussi de pouvoir faire évoluer cette syntaxe en la personnalisant (même si elle s'appelle toujours markdown).

14.  Combien y a-t-il d'intervenants dans ce projet ?^

Il y a 3 intervenants dans ce projet : celui qui crée les notations (et qui les explique), celui qui applique la notation pour un projet particulier et celui qui implémente réellement le projet.

15.  Utilisation^

Il faut d'abord un compte personnel sur ce site internet. Pour le moment, il n'est pas possible de créer un compte automatiquement parce que nous devons assurer une certaine sécurité pour notre base de données.
Une fois que l'on a un compte, le site possède un langage de commande en ligne (pas de menus) pour créer des fichiers. Ces fichiers sont affichés dans l'interface et l'on peut les éditer et ils sont automatiquement sauvegardés dans la base de données.

16.  Que peuvent contenir ces fichiers ?^

Ces fichiers ne peuvent contenir que du texte. Il y a un éditeur de texte dans l'interface et sélectionner un fichier permet d'afficher son contenu; changer de fichier permet d'afficher le contenu de ce fichier; il n'y a qu'un seul écran d'édition.

17.  Que peut-on écrire dans ces fichiers ?^

On peut écrire ce que l'on veut. Mais, dès que l'on écrit du texte entre deux chevrons comme ceci
[<<[   ]>>]
, alors on bascule dans un autre mode d'édition entre ces deux chevrons; le texte doit suivre une syntaxe précise et connue à l'avance mais commune à toute l'application; excepté, que comme l'on peut créer des langages personnels, ceux-ci suivent donc une autre syntaxe.

18.  Les concepts de ce projet^

Les concepts sont issus des sujets suivants:
  1. L'organisation d'un projet
  2. La création de notations abstraites
  3. La création de langages de programmation personnels
  4. La génération de programmes informatiques

19.  L'organisation d'un projet^

Le concept d'organisation, on l'a vu, a pour but de simplifier un programme informatique puisqu'il comporte une grande quantité de code qu'on ne peut pas rapidement appréhender dans son ensemble.
A partir de l'ensemble du code, on ne peut pas se le représenter rapidement parce qu'il y a trop de code.

20.  La création de notations abstraites^

C'est l'idée que l'on peut écrire d'autres notations en utilisant les méthodes de reconnaissance syntaxiques et grammaticales bien connues et, plutôt facile à se représenter en les décomposant bien en petits sous-problèmes.

21.  Notation fermée^

Une notation fermée est une notation avec un début, une fin et un ou plusieurs séparateurs.

22.  Notation ouverte^

Une notation ouverte est par exemple, une suite de textes sans séparateur qui sont syntaxiquement corrects puisque chacun morceau de texte est une notation fermée.

23.  La création de langages de programmation personnels^

La création de nouvelles syntaxes peut simplifier l'écriture de programmes par réécriture.

24.  Qu'est-ce que la réécriture ?^

Le site Wikipedia l'explique très bien : Réécriture.
Le langage Talenha permet de créer des langages de réécriture en découpant d'abord les mots, les termes et les ponctuations puis ensuite en créant des règles grammaticales avec des méthodes telles que concat, surrogate, operator, separator, until, is et or qui vont gérer les notations ouvertes et les notations fermées. Ensuite, l'interprétation de cette syntaxe dans le langage Talenha permet d'effectuer la réécriture.
On peut également étendre le langage Talenha en l'incluant dans un nouveau langage et en y ajoutant de nouvelles règles grammaticales qui seront de nouvelles instructions ou de nouveaux opérateurs.Le langage Talenha offre une grande liberté dans la réalisation de nouvelles syntaxes et de son interprétation; par exemple, on peut définir le langage markdown, l'étendre (ajouter de nouvelles syntaxes) et, coder dans le langage Talenha les algorithmes de réécriture qui vont permettre de générer soit directement un fichier HTML, soit une structure de données (en JSON) ou les deux à la fois.
Un des avantages de Talenha est que le système d'analyse grammatical est non-déterministe (voir la définition de non déterminisme).

25.  La génération de programmes informatiques^

L'idée n'est pas neuve; mais, ce qui n'avait pas encore été imaginé, c'est de créer un langage de programmation complètement destiné à la génération de code source. En effet, tous les langages de programmation actuels savent générer du code mais le langage Talenha a cette seule ambition et, de plus, il a été donc été pensé pour cela. Outre, les fonctions escape et unescape, Talenha peut coloriser la syntaxe de n'importe quel langage de programmation que cela soit du C, C++, C#, Java, Python, Rust, shells, JS, en les réindentant proprement ou en extraire la structure pour analyser le code avec un algorithme que l'on peut concevoir soi-même.

26.  Conclusion^

Ainsi, ce projet Talenha ne manque pas de ressources. A partir d'un langage colorisé et interprété sur le navigateur client, Talenha peut aussi coloriser n'importe quelle syntaxe. Talenha est sans doute votre prochain langage de programmation avant d'avoir créé le vôtre !