DRAKON - DRAKON

DRAKON
Paradigma Visual
Apareció por primera vez 1996
Sitio web drakon-editor .sourceforge .net
Implementaciones importantes
GRAFIT-FLOKS (1996), IS Drakon (2008), DRAKON Editor (2011), DrakonHub (2018), Drakon.Tech (2019)
Influenciado por
PROL2, DIPOL, LAGOS
Influenciado
Plataforma QReal DSM
Parte externa del algoritmo de clasificación rápida en DRAKON-C
Un diagrama de DRAKON que describe el transporte de un paciente criónico

DRAKON es un lenguaje algorítmico de programación y modelado visual desarrollado dentro del proyecto espacial Buran siguiendo principios de diseño ergonómico . El lenguaje proporciona una forma uniforme de representar diagramas de flujo de cualquier complejidad que sean fáciles de leer y comprender.

El nombre DRAKON es el acrónimo ruso de "Дружелюбный Русский Алгоритмический [язык], Который Обеспечивает Наглядность", que se traduce en algoritmos de "lenguaje amistoso" (o "amigable"), que se traduce en un algoritmo "amigable", que se traduce en "lenguaje amigable". La palabra "наглядность" (pronunciada aproximadamente como "naa-glya-dno-st-th") se refiere a un concepto o idea que es fácil de imaginar y comprender, y puede traducirse como "claridad".

El lenguaje DRAKON se puede utilizar como lenguaje de modelado / "marcado" (que se considera un programa "DRAKON puro" independiente) y como lenguaje de programación (como parte de un lenguaje híbrido).

La integración de una variante "académica" más estricta de un lenguaje de marcado en la programación, como la proporcionada por DRAKON, agrega azúcar sintáctica que permite a los usuarios de diferentes lenguajes de programación comprender fácilmente las contribuciones de otros y proporcionar comentarios si es necesario.

Historia

El desarrollo de DRAKON comenzó en 1986 para abordar el riesgo de malentendidos de larga data en grandes proyectos desarrollados por el programa espacial soviético , especialmente si se utilizan múltiples lenguajes de programación. Su desarrollo fue dirigido por Vladimir Parondzhanov con la participación posterior de la Agencia Espacial Federal Rusa ( Centro Académico Pilyugin , Moscú ) y la Academia de Ciencias de Rusia ( Instituto Keldysh de Matemáticas Aplicadas ).

El lenguaje se construyó mediante la formalización, ergonomización y estructuración no clásica de los diagramas de flujo descritos en la norma ISO 5807-85 y la norma rusa «Гост 19.701-90».

El objetivo era reemplazar los lenguajes especializados utilizados en el proyecto Buran con un lenguaje de programación universal . A saber, PROL2 (ПРОЛ2), utilizado para desarrollar software de sistemas en vuelo para el sistema informático Biser-4 (Бисер-4), DIPOL (ДИПОЛЬ), utilizado para desarrollar software para los sistemas informáticos de mantenimiento de tierra) y LAKS (ЛАКС), utilizado para modelado. .

El trabajo se terminó en 1996 (3 años después del cierre oficial del proyecto Buran), cuando se desarrolló un sistema de programación CASE automatizado llamado "Grafit-Floks".

Este CASE se utiliza desde 1996 en muchos programas espaciales importantes: un proyecto internacional Sea Launch , la etapa superior de inserción de la órbita rusa Fregat (en ruso: Фрегат, fragata), un vehículo de lanzamiento pesado mejorado (cohete portador) Proton-M , etc. El papel exacto DRAKON jugado en estos proyectos sin embargo no se puede determinar. La experiencia real de la construcción de sistemas con DRAKON sigue siendo extremadamente escasa, ya que solo unos pocos fragmentos de código muy breves están disponibles públicamente.

Familia de idiomas DRAKON

Iconos del lenguaje DRAKON
Macroiconos del lenguaje DRAKON.

DRAKON ( ruso : ДРАКОН ; dragón en inglés) está diseñado con la intención de permitir una fácil comprensión y legibilidad, ya que el uso de varios idiomas en un solo proyecto puede generar confusión.

DRAKON es una familia de lenguajes híbridos, como DRAKON-C, DRAKON-ASM, DRAKON-Java, etc. Todos los lenguajes de la familia DRAKON tienen una sintaxis gráfica uniforme basada en diagramas de flujo. La sintaxis gráfica estándar proporciona similitudes de drakon-charts para diferentes lenguajes híbridos. El lenguaje del texto usa su propia sintaxis.

La base de la sintaxis gráfica es un alfabeto gráfico. Los elementos gráficos ("letras") del alfabeto DRAKON se denominan iconos (no símbolos). DRAKON también tiene macroiconos . Los macroicones son las palabras gráficas del lenguaje DRAKON, consisten en iconos. Hay 27 iconos y 21 macroiconos en el lenguaje DRAKON.

Los gráficos de Drakon se construyen a partir de iconos y macroiconos.

Las partes importantes de los maсroiсons son los puntos de valencia (en la ilustración representados como círculos negros). En estos puntos, drakon-editor puede introducir y organizar sucesivamente iconos o microiconos en filas verticales.

Diseño

DRAKON fue creado como un lenguaje visual para ayudar en la comprensión de programas de computadora escritos en diferentes lenguajes de programación para comprender rápidamente el flujo y el propósito de un programa.

DRAKON usa drakon-chart, que es un diagrama de flujo utilizado para representar la estructura general del programa. Los fragmentos de código de un lenguaje de programación se agregan a los gráficos.

Las reglas de DRAKON para crear diagramas están optimizadas cognitivamente para una fácil comprensión, lo que lo convierte en una herramienta para el aumento de la inteligencia .

Los diagramas de Drakon de grandes programas multipropósito pueden ser difíciles de seguir o comprender. Un conjunto de programas más pequeños, que juntos tienen el mismo propósito, a menudo son más fáciles de entender.

Sintaxis visual

El artículo de texto completo que contiene una descripción de la sintaxis visual del idioma DRAKON en inglés, 12 páginas, descarga gratuita, pdf.

Ejemplos de

Ejemplo de Tetris

Ejemplo simple de un programa en el lenguaje DRAKON

Estos ejemplos son código real de una implementación del juego Tetris . Los ejemplos están en lenguaje DRAKON-JavaScript. Los iconos (primitivas visuales) del lenguaje DRAKON definen la estructura general de los algoritmos. Los fragmentos de código dentro de los iconos (primitivos) están en JavaScript.

advanceStep

La función advanceStep implementa la lógica central del juego. advanceStep es una máquina de estado representada como un árbol de decisiones . El motor del juego llama a advanceStep periódicamente. Esta máquina de estado tiene tres estados "jugando", "cayendo" y "terminado". El juego realiza diferentes acciones según el estado actual. Por ejemplo, en el estado de "reproducción", cuando hay un proyectil que cae y el proyectil puede moverse hacia abajo, se mueve hacia abajo un paso.

La lógica central del juego Tetris en lenguaje DRAKON-JavaScript

Con DRAKON, el lector del algoritmo puede rastrear visualmente todos los caminos posibles en el árbol de decisiones.

Código JavaScript generado a partir del gráfico 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
        }
    }
}

noProjectile

La función noProjectile para el juego de Tetris en lenguaje DRAKON-JavaScript

La función noProjectile maneja la situación específica cuando no hay proyectil cayendo. Si hay una fila llena, esa fila se elimina de la cuadrícula. De lo contrario, el juego intenta insertar un nuevo proyectil. Si no hay espacio para el proyectil, se pierde el juego.

Código JavaScript generado a partir del gráfico DRAKON:

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

clearRow

El algoritmo que elimina una línea de la cuadrícula de Tetris en lenguaje DRAKON-JavaScript

La función clearRow escanea todas las filas de abajo hacia arriba hasta que llega a una fila sin espacios. En tal caso, la fila se elimina de la cuadrícula, la puntuación aumenta y el ritmo del juego aumenta.

Código JavaScript generado a partir del gráfico 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 
        }
    }
}

Animación de ejecución de DRAKON

La siguiente imagen ilustra la ejecución del algoritmo de silueta DRAKON. La ejecución del algoritmo se anima resaltando los elementos del diagrama en el orden de ejecución.

La silueta 'Pesca' consta de cuatro árboles:

  • Preparándose para pescar.
  • Esperando un bocado.
  • Trabajos de pesca.
  • Camino de vuelta.

El camino principal de cada árbol se muestra resaltando una línea vertical gruesa que se llama brocheta.

El gráfico de flujo siempre tiene una ruta desde el icono de Título hasta cada vértice (nodo) del gráfico de flujo de control. En consecuencia, una silueta no puede tener un código inalcanzable en ninguna condición.

La ejecución del algoritmo DRAKON se anima resaltando los elementos del diagrama en el orden de ejecución.

Uso moderno

DRAKON en el Centro Aeroespacial Alemán

El lenguaje DRAKON se utiliza en el Centro Aeroespacial Alemán para la implementación de algunas funciones críticas dictadas por las normas de seguridad de las pruebas de vuelo, donde la automatización es importante debido a la distancia máxima a la estación terrestre y el proceso necesita una ejecución automática rápida.

El software DRAKON Editor se utilizó para programar gráficamente los diagramas de flujo que fueron revisados ​​especialmente. El código C se generó a partir de los gráficos de drakon, por ejemplo, para la representación DRAKON del código de detección de lanzamiento.

Usos fuera de la programación

Si bien DRAKON está diseñado principalmente como una herramienta para comprender programas informáticos, también se pueden utilizar gráficos drakon para ilustrar procesos en campos no relacionados con la informática.

En el editor de DRAKON, se pueden agregar imágenes a los íconos de DRAKON. Esta capacidad se utiliza en algunos campos para crear fácilmente infografías de tipo "diagrama de flujo" . En Rusia, el editor DRAKON es conocido por ser utilizado en el campo médico como una herramienta para hacer cuadros "instructivos" para pacientes o personal médico.

Referencias

Fuentes

enlaces externos