DRAKON ( ruso : Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность , iluminado. 'Lenguaje algorítmico ruso amigable que proporciona claridad') es un lenguaje de modelado y programación visual algorítmico gratuito y de código abierto desarrollado como parte de la de funct programa espacial Buran de la Unión Soviética [2 ] en 1986 tras la necesidad de aumentar la productividad del desarrollo de software. El lenguaje visual proporciona una forma uniforme de representar procesos en diagramas de flujo .
Existen varias implementaciones de la especificación del lenguaje que pueden usarse para dibujar y exportar diagramas de flujo reales. Ejemplos notables incluyen DRAKON Editor gratuito y de código abierto (septiembre de 2011).
El desarrollo de DRAKON comenzó en 1986 para abordar el riesgo emergente de malentendidos (y errores posteriores) entre usuarios de diferentes lenguajes de programación en el programa espacial ruso. Su desarrollo fue dirigido por Vladimir Parondzhanov con la participación de la Agencia Espacial Federal Rusa ( Centro Académico Pilyugin , Moscú ) y la Academia Rusa de Ciencias ( Instituto Keldysh de Matemática Aplicada ).
El lenguaje se construyó mediante formalización, ergonomización y estructuración no clásica de diagramas de flujo descritos en la norma ISO 5807-85 y la norma rusa «Гост 19.701-90». [3] [4]
El objetivo era sustituir los lenguajes especializados utilizados en el proyecto Buran por un lenguaje de programación universal . A saber, PROL2 (ПРОЛ2), utilizado para desarrollar software de sistemas a bordo para el sistema informático Biser-4 (Бисер-4), [5] DIPOL (ДИПОЛЬ), utilizado para desarrollar software para los sistemas informáticos de mantenimiento en tierra) [5] y LAKS ( ЛАКС), utilizado para modelar.
El trabajo finalizó 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". [6]
Este CASE se utiliza desde 1996 en: un proyecto internacional Sea Launch , [ cita necesaria ] etapa superior de inserción en órbita rusa Fregat (ruso: Фрегат, fragata) para pruebas y sistemas de control a bordo, [7] vehículo de lanzamiento pesado mejorado (cohete portador) Proton -M . [ cita necesaria ]
El nombre DRAKON es el acrónimo ruso de "Дружелюбный Русский Алгоритмический [язык], Который Обеспечивает Наглядность", que se traduce como "[lenguaje] algorítmico ruso amigable que ilustra (o proporciona claridad)". 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".
A diferencia de la filosofía de UML , la filosofía del lenguaje de DRAKON se basa en ser ampliado, si es necesario, mediante el uso de un lenguaje híbrido, que puede ilustrarse como "incrustar fragmentos de código del lenguaje de texto utilizado en la forma que DRAKON requiere". De esta manera, DRAKON siempre sigue siendo un lenguaje visual simple que puede usarse como un aumento para un programador que esté interesado en hacer que su propio código de proyecto sea más fácil de soportar u otras necesidades a largo plazo, por ejemplo, mejorar la ergonomía del proceso de codificación o hacer código más fácil de revisar y comprender.
El lenguaje DRAKON se puede utilizar como lenguaje de modelado/"marcado" (que se considera un programa "puro DRAKON" independiente) y como lenguaje de programación (como parte de un lenguaje híbrido).
La integración de una variante más estricta y "académica" de un lenguaje de marcado en la programación, como la proporcionada por DRAKON, agrega azúcar sintáctico , lo que permite a los usuarios de diferentes lenguajes de programación comprender las contribuciones de los demás al proyecto general e incluso proporcionar comentarios si es necesario.
DRAKON ( ruso : ДРАКОН ; que significa " 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 comparten una sintaxis gráfica uniforme basada en diagramas de flujo. La sintaxis gráfica estándar proporciona similitud de gráficos drakon para diferentes lenguajes híbridos. El idioma del texto utiliza 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 macroiconos son las palabras gráficas del lenguaje DRAKON; Consisten en iconos. Hay 27 iconos y 21 macroiconos en el idioma DRAKON.
Los gráficos Drakon están construidos a partir de iconos y macroiconos.
Las partes importantes de los maсroiсons son los puntos de valencia (en la ilustración se muestran como círculos negros). En estos puntos, el editor drakon puede introducir y organizar sucesivamente iconos o microiconos en columnas.
DRAKON fue creado como un lenguaje visual fácil de aprender para ayudar a la comprensión de programas informáticos escritos en diferentes lenguajes de programación con fines ilustrativos, de planificación y estratégicos.
DRAKON utiliza drakon-chart, que es una formalización de los diagramas de flujo tradicionales para representar la estructura general del programa. Se agregan fragmentos de código de un lenguaje de programación a los íconos de DRAKON. La combinación de elementos visuales con código ayuda a la creación y mantenimiento de diagramas de flujo legibles junto con el desarrollo del programa en cuestión.
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 . [3] [8] [9] [10]
Los gráficos Drakon de grandes programas multipropósito pueden ser complejos y difíciles de comprender. Un conjunto de programas más pequeños, que juntos cumplen el mismo propósito, suelen ser más fáciles de entender cuando se representan como gráficos drakon. Existe un problema similar al mantener el código de programas grandes. En ocasiones, los programadores se refieren a este problema como "la regla de las 30 [líneas de código]".
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. [11]
Ejemplo sencillo 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 íconos (primitivos) están en JavaScript.
La función advancedStep implementa la lógica central del juego. advancedStep es una máquina de estados representada como un árbol de decisión . [12] El motor del juego llama a AdvanceStep periódicamente. Esta máquina de estados tiene tres estados: "jugando", "soltando" y "terminado". El juego realiza diferentes acciones según el estado actual. Por ejemplo, en el estado de "juego", cuando hay un proyectil que cae y el proyectil puede moverse hacia abajo, se mueve hacia abajo un paso.
Con DRAKON, el lector del algoritmo puede rastrear visualmente todos los caminos posibles en el árbol de decisión.
La función noProjectile maneja la situación específica cuando no cae ningún proyectil. Si hay una fila llena, esa fila se elimina de la cuadrícula. De lo contrario, el juego intentará insertar un nuevo proyectil. Si no hay espacio para el proyectil, se pierde el juego.
La función clearRow escanea todas las filas de abajo hacia arriba hasta encontrar 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.
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:
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 ícono Titular 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.
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.
Se utilizó el software DRAKON Editor para programar gráficamente los diagramas de flujo que fueron verificados especialmente. El código C se generó a partir de los gráficos drakon, por ejemplo, para la representación DRAKON del código de detección de lanzamiento. [13]
El lenguaje DRAKON se puede utilizar como lenguaje para modelar y visualizar procesos comerciales. "Se aplicó el lenguaje DRAKON como lenguaje básico para construir modelos de procesos de negocios, lo que permite obtener un prototipo de máquina de estados finitos al construir modelos de procesos de negocios. La visualización de procesos de negocios en el espacio de estados permite tomar decisiones maker para mejorar la eficiencia de la toma de decisiones". [14]
Si bien DRAKON está diseñado principalmente como una herramienta para comprender programas informáticos, los drakon-charts también se pueden utilizar para ilustrar procesos en campos no relacionados con la informática.
En el editor DRAKON se pueden agregar imágenes a los íconos DRAKON. Esta capacidad se utiliza en algunos campos para crear fácilmente infografías tipo "diagrama de flujo" . En Rusia, el editor DRAKON es conocido por ser utilizado en el campo médico como herramienta para crear gráficos "instructivos" para pacientes o personal médico. [ cita necesaria ] [15]