DRAKON - DRAKON

DRAKON
Paradigme Visuel
Première apparition 1996
Site Internet éditeur-drakon .sourceforge .net
Les principales mises en œuvre
GRAFIT-FLOKS (1996), IS Drakon (2008), DRAKON Editor (2011), DrakonHub (2018), Drakon.Tech (2019)
Influencé par
PROL2, DIPOL, LAKS
Influencé
Plateforme QReal DSM
Partie externe de l' algorithme de tri rapide dans DRAKON-C
Un schéma DRAKON décrivant le transport d'un patient cryogénique

DRAKON est un langage algorithmique de programmation visuelle et de modélisation développé dans le cadre du projet d'espace Bourane suivant des principes de conception ergonomique . Le langage fournit un moyen uniforme de représenter des organigrammes de toute complexité qui sont faciles à lire et à comprendre.

Le nom DRAKON est l'acronyme russe de « Дружелюбный Русский Алгоритмический [язык], Который Обеспечивает Наглядность », qui se traduit par « [langue] algorithmique russe convivial qui illustre (ou fournit de la clarté) ». Le mot "наглядность" (prononcé approximativement comme "naa-glya-dno-st-th") fait référence à un concept ou à une idée facile à imaginer et à comprendre, et peut être traduit par "clarté".

Le langage DRAKON peut être utilisé à la fois comme langage de modélisation/"balisage" (considéré comme un programme autonome "pur DRAKON") et comme langage de programmation (dans le cadre d'un langage hybride).

L'intégration d'une variante "académique" plus stricte d'un langage de balisage dans la programmation, telle que fournie par DRAKON, ajoute du sucre syntaxique permettant aux utilisateurs de différents langages de programmation de comprendre facilement les contributions des autres et de fournir des commentaires si nécessaire.

Histoire

Le développement de DRAKON a commencé en 1986 pour faire face au risque de longue date de malentendus dans les grands projets développés par le programme spatial soviétique , en particulier si plusieurs langages de programmation sont utilisés. Son développement a été dirigé par Vladimir Parondzhanov avec la participation ultérieure de l' Agence spatiale fédérale russe (Academician Pilyugin Center, Moscou ) et de l'Académie russe des sciences ( Keldysh Institute of Applied Mathematics ).

Le langage a été construit par formalisation, ergonomie et structuration non classique d' organigrammes décrits dans la norme ISO 5807-85 et la norme russe «Гост 19.701-90».

L'objectif était de remplacer les langages spécialisés utilisés dans le projet Bourane par un langage de programmation universel . À savoir PROL2 (ПРОЛ2), utilisé pour développer des logiciels de systèmes en vol pour le système informatique Biser-4 (Бисер-4), DIPOL (ДИПОЛЬ), utilisé pour développer des logiciels pour les systèmes informatiques de maintenance au sol) et LAKS (ЛАКС), utilisé pour la modélisation .

Les travaux ont été achevés en 1996 (3 ans après la clôture officielle du projet Bourane), lorsqu'un système de programmation automatisé CASE appelé « Grafit-Floks » a été développé.

Ce CASE est utilisé depuis 1996 dans de nombreux grands programmes spatiaux : un projet international Sea Launch , un étage supérieur d' insertion d'orbite russe Fregat (russe : Фрегат, frégate), un lanceur lourd amélioré (fusée porteuse) Proton-M , etc. Le rôle exact DRAKON joué dans ces projets ne peut cependant pas être déterminé. L'expérience réelle de la construction de systèmes avec DRAKON reste extrêmement rare car seuls quelques très courts extraits de code sont accessibles au public.

Famille de langues DRAKON

Icônes du langage DRAKON
Macroicônes du langage DRAKON.

DRAKON ( russe : ДРАКОН ; dragon en anglais) est conçu dans le but de permettre une compréhension et une lisibilité faciles, car l'utilisation de plusieurs langues dans un même projet peut prêter à confusion.

DRAKON est une famille de langages hybrides, tels que DRAKON-C, DRAKON-ASM, DRAKON-Java, etc. Tous les langages de la famille DRAKON ont une syntaxe graphique uniforme basée sur des organigrammes. La syntaxe graphique standard fournit une similitude de drakon-charts pour différents langages hybrides. Le langage textuel utilise sa propre syntaxe.

La base de la syntaxe graphique est un alphabet graphique. Les éléments graphiques ("lettres") de l'alphabet DRAKON sont appelés icônes (pas symboles). DRAKON a aussi des macro-icônes . Les macroicônes sont les mots graphiques du langage DRAKON, ils sont constitués d'icônes. Il y a 27 icônes et 21 macro-icônes dans le langage DRAKON.

Les graphiques Drakon sont construits à partir d'icônes et de macro-icônes.

Les parties importantes des maсroicons sont les points de valence (dans l'illustration représentée par des cercles noirs). Dans ces points, des icônes ou micro-icônes peuvent être successivement saisies et disposées par drakon-editor en rangées verticales.

Concevoir

DRAKON a été créé en tant que langage visuel pour aider à la compréhension des programmes informatiques écrits dans différents langages de programmation pour comprendre rapidement le flux et le but d'un programme.

DRAKON utilise drakon-chart, qui est un organigramme utilisé pour décrire la structure globale du programme. Des extraits de code d'un langage de programmation sont ajoutés aux graphiques.

Les règles DRAKON pour la création de diagrammes sont optimisées sur le plan cognitif pour une compréhension facile, ce qui en fait un outil d' augmentation de l'intelligence .

Les graphiques Drakon des grands programmes polyvalents peuvent être difficiles à suivre ou à comprendre. Un ensemble de programmes plus petits, qui servent ensemble le même objectif, sont souvent plus faciles à comprendre.

Syntaxe visuelle

L'article en texte intégral contenant la description de la syntaxe visuelle du langage DRAKON en anglais, 12 pages, téléchargeable gratuitement, pdf.

Exemples

exemple de Tetris

Exemple simple de programme en langage DRAKON

Ces exemples sont du code réel d'une implémentation du jeu Tetris . Les exemples sont en langage DRAKON-JavaScript. Les icônes (primitives visuelles) du langage DRAKON définissent la structure globale des algorithmes. Les extraits de code à l'intérieur des icônes (primitives) sont en JavaScript.

avanceÉtape

La fonction advanceStep implémente la logique de base du jeu. advanceStep est une machine à états représentée comme un arbre de décision . Le moteur de jeu appelle périodiquement advanceStep . Cette machine d'état a trois états "lecture", "abandon" et "terminé". Le jeu effectue différentes actions en fonction de l'état actuel. Par exemple, dans l'état « jeu », lorsqu'il y a un projectile qui tombe et que le projectile peut descendre, il est descendu d'un cran.

La logique de base du jeu Tetris en langage DRAKON-JavaScript

Avec DRAKON, le lecteur de l'algorithme peut tracer visuellement tous les chemins possibles dans l'arbre de décision.

Code JavaScript généré à partir du graphique DRAKON :

function advanceStep() {
    var _sw_8;
    _sw_8 = module.state;
    if (_sw_8 === "playing") {
        if (module.projectile) {
            if (canMoveDown()) {
                moveDown()
                return getStepPeriod()
            } else {
                freezeProjectile()
                return noProjectile()
            }
        } else {
            return noProjectile()
        }
    } else {
        if (_sw_8 === "dropping") {
            if (canMoveDown()) {
                moveDown()
                return DropPeriod
            } else {
                freezeProjectile()
                module.state = "playing"
                return getStepPeriod()
            }
        } else {
            if (_sw_8 === "finished") {
            } else {
                throw new Error("Unexpected Choice value: " + _sw_8);
            }
            return undefined
        }
    }
}

pas de projectile

La fonction noProjectile pour le jeu Tetris en langage DRAKON-JavaScript

La fonction noProjectile gère la situation spécifique lorsqu'il n'y a pas de projectile qui tombe. S'il y a une ligne remplie, cette ligne est supprimée de la grille. Sinon, le jeu essaie d'insérer un nouveau projectile. S'il n'y a pas de place pour le projectile, la partie est perdue.

Code JavaScript généré à partir du graphique DRAKON :

function noProjectile() {
    if (clearRow()) {
        return getStepPeriod()
    } else {
        createProjectile()
        if (isGameLost()) {
            gameOver()
            module.state = "finished"
            return undefined
        } else {
            return getStepPeriod()
        }
    }
}

clearRow

L'algorithme qui supprime une ligne de la grille Tetris en langage DRAKON-JavaScript

La fonction clearRow analyse toutes les lignes de bas en haut jusqu'à ce qu'elle atteigne une ligne sans espaces. Dans ce cas, la ligne est supprimée de la grille, le score est augmenté et le tempo du jeu augmente.

Code JavaScript généré à partir du graphique DRAKON :

function clearRow() {
    var row, rows;
    rows = module.glass.rows
    row = rows.length - 1;
    while (true) {
        if (row >= 0) {
            if (rowHasHoles(row)) {
                row--;
            } else {
                deleteRow(row)
                increaseScore()
                increaseSpeed()
                return true 
            }
        } else {
            module.addedScore = 0
            return false 
        }
    }
}

Animation d'exécution DRAKON

L'image ci-dessous illustre l'exécution de l'algorithme de silhouette DRAKON. L'exécution de l'algorithme est animée par la mise en évidence des éléments du diagramme dans l'ordre d'exécution.

La silhouette 'Fishing' se compose de quatre arbres :

  • Préparation pour la pêche.
  • En attendant une bouchée.
  • Travail de pêche.
  • Chemin de retour.

Le chemin principal de chaque arbre est indiqué en mettant en évidence une ligne verticale épaisse qui s'appelle une brochette.

Le graphe de flux a toujours un chemin entre l'icône Titre et chaque sommet (nœud) du graphe de flux de contrôle. Par conséquent, une silhouette ne peut avoir de code inaccessible dans aucune condition.

L'exécution de l'algorithme DRAKON est animée par la mise en évidence des éléments du diagramme dans l'ordre d'exécution.

Utilisation moderne

DRAKON au Centre aérospatial allemand

Le langage DRAKON est utilisé au Centre aérospatial allemand pour la mise en œuvre de certaines fonctions critiques dictées par les règles de sécurité des essais en vol, où l'automatisation est importante en raison de la distance maximale par rapport à la station au sol et le processus nécessite une exécution automatique rapide.

Le logiciel DRAKON Editor a été utilisé pour programmer graphiquement des organigrammes qui ont été spécialement vérifiés. Le code C a été généré à partir des drakon-charts, par exemple, pour la représentation DRAKON du code de détection de lancement.

Utilisations en dehors de la programmation

Alors que DRAKON est principalement conçu comme un outil de compréhension de programmes informatiques, les drakon-charts peuvent également être utilisés pour illustrer des processus dans des domaines non liés à l'informatique.

Dans l'éditeur DRAKON, des images peuvent être ajoutées aux icônes DRAKON. Cette capacité est utilisée dans certains domaines pour créer facilement des infographies de type « organigramme » . En Russie, l'éditeur DRAKON est connu pour être utilisé dans le domaine médical comme outil de création de fiches « instructions » pour les patients ou le personnel médical.

Les références

Sources

Liens externes