Articulo de referencia

DRAGÓN

[http://laser.inf.ethz.ch/2014/material/terekhov/terekhov_report.pdf Terekhov, Andrey; Bryksin, Timofey; Litvinov, Yurii. How to make visual modeling more attractive to software...

El algoritmo de búsqueda A* en DRAKON
Parte externa del algoritmo quicksort en DRAKON-C
Diagrama DRAKON que describe el transporte de un paciente criogenizado.

DRAKON ( ruso : Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность , iluminado. ' Lenguaje algorítmico ruso amigable, que proporciona claridad ' ) es una programación visual algorítmica gratuita y de código abierto y Lenguaje de modelado desarrollado como parte del extinto 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 diversas implementaciones de la especificación del lenguaje que pueden utilizarse para dibujar y exportar diagramas de flujo. Un ejemplo destacado es el editor DRAKON, gratuito y de código abierto (septiembre de 2011).

Historia

El desarrollo de DRAKON comenzó en 1986 para abordar el creciente riesgo de malentendidos —y los consiguientes errores— 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áticas Aplicadas ).

El lenguaje se construyó mediante la 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 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), [ 5 ] DIPOL (ДИПОЛЬ), utilizado para desarrollar software para los sistemas informáticos de mantenimiento en tierra) [ 5 ] y LAKS (ЛАКС), utilizado para modelado.

En comparación, en el programa del Transbordador Espacial , el lenguaje de programación HAL/S , diseñado por Intermetrics para la NASA, fue ampliamente utilizado, con aproximadamente el 85% del software del Transbordador codificado en HAL/S.

El trabajo se terminó en 1996 (3 años después de que el proyecto Buran se cerrara oficialmente), 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 , la etapa superior rusa de inserción orbital Fregat (en ruso: Фрегат, fragata) para sistemas de control a bordo y pruebas, [ 7 ] vehículo de lanzamiento pesado mejorado (cohete portador) Proton-M .

Descripción general

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 "na-GLYA-dnost") 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 DRAKON se basa en la posibilidad de ampliarlo cuando sea necesario, mediante el uso de un lenguaje híbrido, que puede ilustrarse como la "incrustación de fragmentos de código de un lenguaje de texto en la forma que DRAKON requiere". De esta manera, DRAKON siempre se mantiene como un lenguaje visual simple que puede usarse como complemento para un programador interesado en facilitar el mantenimiento del código de su propio proyecto o para otras necesidades a largo plazo, como mejorar la ergonomía del proceso de codificación o facilitar la revisión y comprensión del código.

El lenguaje DRAKON puede utilizarse tanto como lenguaje de modelado/"marcado" (considerado un programa "DRAKON puro" independiente) como lenguaje de programación (como parte de un lenguaje híbrido).

Con la ayuda de chatbots de IA generativa como ChatGPT , Gemini o Grok , los desarrolladores pueden utilizar programas "puros de DRAKON" para generar código ejecutable en lenguajes de programación convencionales.

La integración de una variante más estricta y "académica" de un lenguaje de marcado en la programación, como la que proporciona DRAKON, añade azúcar sintáctico 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.

Familia de lenguas DRAKON

Iconos del idioma DRAKON
Macroiconos del idioma DRAKON.

DRAKON ( en ruso : ДРАКОН ; que significa " dragón " en inglés) está diseñado con la intención de facilitar la comprensión y la legibilidad, ya que el uso de varios idiomas en un mismo 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. Esta sintaxis gráfica estándar proporciona similitud en los diagramas de Drakon para los diferentes lenguajes híbridos. El lenguaje de 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 cuenta con macroiconos . Los macroiconos son las palabras gráficas del idioma DRAKON; están compuestos por iconos. Existen 27 iconos y 21 macroiconos en el idioma DRAKON.

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

Las partes importantes de los macroiconos son los puntos de valencia (representados en la ilustración como círculos negros). En estos puntos, el editor drakon puede introducir y organizar sucesivamente iconos o microiconos en columnas.

Diseño

DRAKON fue creado como un lenguaje visual fácil de aprender para facilitar 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, una formalización de los diagramas de flujo tradicionales para representar la estructura general del programa. Se añaden fragmentos de código de un lenguaje de programación a los iconos de DRAKON. La combinación de elementos visuales con código facilita la creación y el mantenimiento de diagramas de flujo legibles durante el desarrollo del programa.

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 diagramas de Drakon de programas grandes y multipropósito pueden ser complejos y difíciles de comprender. Un conjunto de programas más pequeños, que en conjunto cumplen la misma función, suelen ser más fáciles de entender cuando se representan mediante diagramas de Drakon. Un problema similar se presenta al mantener el código de programas grandes. Este problema se conoce ocasionalmente entre los programadores como la "regla de las 30 [líneas de código]".

sintaxis visual

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

Ejemplos

Ejemplo de Tetris

Ejemplo sencillo de un programa en el lenguaje DRAKON

Estos ejemplos son código real de una implementación del juego Tetris . Están escritos en el 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 (primitivas) están en JavaScript.

avancePaso

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

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

Con DRAKON, el lector del algoritmo puede visualizar todos los caminos posibles en el árbol de decisión.

sin proyectil

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

La función `noProjectile` gestiona la situación específica en la que no hay ningún proyectil cayendo. Si hay una fila llena, esta 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 la partida.

borrarFila

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

La función clearRow recorre todas las filas de abajo hacia arriba hasta encontrar una sin huecos. En ese caso, la fila se elimina de la cuadrícula, la puntuación aumenta y el ritmo del juego se acelera.

Animación de ejecución de DRAKON

La imagen que aparece a continuación ilustra la ejecución del algoritmo DRAKON de siluetas. La ejecución del algoritmo se anima resaltando los elementos del diagrama en el orden en que se ejecuta.

La silueta de 'Pesca' consta de cuatro árboles:

  • Preparándonos para la pesca.
  • Esperando a que pique algo.
  • Trabajo de pesca.
  • Hace mucho tiempo.

El camino principal de cada árbol se muestra resaltando una línea vertical gruesa llamada pincho.

El diagrama de flujo siempre tiene una ruta desde el icono del encabezado hasta cada vértice (nodo) del diagrama de flujo de control. Por lo tanto, una silueta no puede tener código inaccesible bajo ninguna circunstancia.

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

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 máxima distancia a la estación terrestre y a que el proceso requiere una ejecución automática rápida.

El software DRAKON Editor se utilizó para programar gráficamente diagramas de flujo que fueron revisados ​​especialmente. Se generó código C a partir de los diagramas de Drakon, por ejemplo, para una representación DRAKON del código para la detección de lanzamientos. [ 13 ]

Modelado de procesos de negocio

El lenguaje DRAKON puede utilizarse para modelar y visualizar procesos de negocio. «El lenguaje DRAKON se aplicó como lenguaje base para la construcción de modelos de procesos de negocio, lo que permite obtener un prototipo de máquina de estados finitos al construir dichos modelos. La visualización de los procesos de negocio en el espacio de estados permite al responsable de la toma de decisiones mejorar la eficiencia de la misma». [ 14 ]

Usos fuera de la programación

Si bien DRAKON está diseñado principalmente como una herramienta para comprender programas informáticos, los diagramas de Drakon también pueden utilizarse para ilustrar procesos en campos no relacionados con la informática.

En el editor DRAKON se pueden añadir imágenes a los iconos de DRAKON. Esta función se utiliza en algunos campos para crear fácilmente infografías tipo diagrama de flujo . En Rusia, el editor DRAKON es conocido por su uso en el ámbito médico como herramienta para crear diagramas instructivos para pacientes o personal médico. [ 15 ]

Véase también

Referencias

  1. Terekhov, Andrey; Bryksin, Timofey; Litvinov, Yurii. Cómo hacer que el modelado visual sea más atractivo para los desarrolladores de software / 11.ª Escuela de Verano LASER sobre Ingeniería de Software. Ingeniería de Software de Vanguardia. 7-13 de septiembre de 2014 - Isla de Elba, Italia
  2. «Stepan-mitkin/Drakon_editor» . GitHub . 28 de septiembre de 2022.
  3. 1 2 Окулова Л. P. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики // Вестник. Наука и практика. Материалы конференции «Инновации и научные исследования, а также их применение на практике \ Innowacje i badania naukowe, jak rowniez ich zastosowanie w práctica. — 29.05.2012- 31.05.2012. Varsovia \ Warszaw».
  4. Parondzhanov VD Sintaxis visual del lenguaje DRAGON // Programación y software informático, 01 / 1995; Volumen 21 (Número 3): págs. 142 - 153. (Aquí hay una traducción incorrecta. Debería leerse como "lenguaje DRAKON").
  5. 1 2 Штурманы ракет / Под общей редакцией Е. Л. Межирицкого. — М.: БЛОК-Информ-Экспресс, 2008. — 384 с. — C. 192. — ISBN 978-5-93735-008-4
  6. "Técnica de desarrollo de algoritmos y programas "Grafit-Floks"." (PDF) . Archivado del original (PDF) el 27-12-2012 . Recuperado el 27-12-2012 .
  7. Морозов В.В., Трунов Ю.В., Комиссаров А.И., Пак Е.А., Жучков А.Г., Дишель В.Д., Залихина Е.Е., Паронджанов В.Д. Система управления межорбитального космического буксира «Фрегат» // Вестник НПО имени S.А. Лавочкина: Космонавтика и ракетостроение. — 2014, n.º 1 (22). — С. 16–25. (En ruso) Morozov VV, Trunov Yu.V., Komissarov AI, Pak EA, Zhuchkov AG, Dishel VD, Zalihina EE, Parondzhanov VD Sistema de control del versátil remolcador espacial "Fregat" // Vestnik NPO imeni SA Lavochkina. Cosmonáutica e ingeniería de cohetes - 2014, 1 (22). - págs. 16-25.
  8. Bezel Ja. V. ¿Es posible mejorar el funcionamiento de la mente? Una nueva perspectiva del problema.— Boletín de la Academia Rusa de Ciencias. Volumen 73, número 4, 2003.
  9. Созоров Н. Г., Трошин М. B. El redactor de dragones que aparece en los recursos didácticos de la programación interactiva cursa . Materiales regionales de conferencias metodológicas regionales ИДНО Universidad Politécnica de Tomsk de la Universidad Electrónica didáctico материалы в инженерном образовании» 11-12 de octubre de 2009 г.
  10. Паронджанов В. Д. (2012). "Учебное пособие по языку ДРАКОН для вузов". Учись писать, читать и понимать algoritmos. Algoritmos para la música popular. Основы алгоритмизации . М.: ДМК Пресс. pag. 520.ISBN  978-5-94074-800-7.вуз ов". Учись писать, читать and понимать algoritmos. Алгоритмы для правильного мышления. Основы алгоритмизации . M.:  ДМК Пресс . 978-5-94074-800-7.
  11. Parondzhanov VD (1995). Sintaxis visual del lenguaje DRAKON . Vol. 21. PROGRAMACIÓN Y SOFTWARE INFORMÁTICO. Traducción oficial al inglés de Programmirovanie. págs. 142–153 .  
  12. Митькин С.Б. Programación automática en el disco duro // Programación de ingeniería. Том 10, № 1, 2019 (en ruso). Mitkin Stepan B. Programación basada en autómatas en lenguaje DRAKON. Programmnaya Ingeniería, 2019, vol. 10, núm. 1, págs. 3—13. DOI: 10.17587/prin.10.3-13
  13. "Marc Schwarzbach, Sven Wlach, Maximilian Laiacker. Modifying a Scientific Flight Control System for Balloon Launched UAV Missions // German Aerospace Center DLR // IEEE, 2015" (PDF) . drakon.su . Consultado el 3 de diciembre de 2017 .
  14. Valeev SS, Kondratyeva NV Análisis de procesos de negocio en un sistema técnico y organizativo distribuido basado en instantáneas // Tecnologías computacionales. 2023. Vol. 28. Núm. 1. Págs. 41-47.
  15. Ejemplo de programa médico para reducir la grasa corporal (en ruso)

Fuentes

  • V. Parondzhanov. Cómo mejorar el trabajo de tu mente. Algoritmos sin programadores: ¡es muy simple! ( Как улучшить работу ума. Алгоритмы без программистов - это очень просто! M.: Дело, 2001. - 360с. )
  • S. Mitkin. DRAKON: La revolución humana en la comprensión de los programas.
  • Acerca del idioma DRAKON en inglés
  • Editor DRAKON en GitHub