stringtranslate.com

DRAKÓN

Algoritmo de búsqueda de Dijkstra en DRAKON
Parte exterior del algoritmo de ordenación rápida en DRAKON-C
Diagrama DRAKON que describe el transporte de un paciente criónico

DRAKON ( en ruso : Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность , lit.  'lenguaje algorítmico ruso amigable que proporciona claridad') es un lenguaje de modelado y programación visual algorítmico de código abierto y gratuito 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 varias implementaciones de la especificación del lenguaje que se pueden utilizar para dibujar y exportar diagramas de flujo reales. Entre los ejemplos más destacados se incluye el editor gratuito y de código abierto DRAKON (septiembre de 2011).

Historia

El desarrollo de DRAKON comenzó en 1986 para abordar el riesgo emergente de malentendidos -y errores subsiguientes- 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, ergonomía 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». [3] [4]

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

La obra 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 requerida ] la etapa superior de inserción en órbita rusa Fregat (en ruso: Фрегат, fragata) para sistemas de control y pruebas a bordo, [7] el vehículo de lanzamiento pesado mejorado (cohete portador) Proton-M . [ cita requerida ]

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 de DRAKON se basa en la posibilidad de ampliarlo, si es necesario, mediante el uso de un lenguaje híbrido, que se puede ilustrar 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 se puede utilizar como complemento para un programador que esté interesado en hacer que el código de su propio proyecto sea más fácil de soportar o en otras necesidades a largo plazo, por ejemplo, mejorar la ergonomía del proceso de codificación o hacer que el código sea más fácil de revisar y comprender.

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

La integración de una variante más estricta, "académica", de un lenguaje de marcado en la programación, como la que ofrece DRAKON, agrega complejidad sintáctica permitiendo 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 idiomas DRAKON

Iconos del lenguaje DRAKON
Macroiconos del lenguaje DRAKON.

DRAKON ( en ruso : ДРАКОН ; que significa " dragón " en español) 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 similitudes entre los diagramas de flujo de 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 tiene macroiconos . Los macroiconos son las palabras gráficas del lenguaje DRAKON; consisten en iconos. Hay 27 iconos y 21 macroiconos en el lenguaje DRAKON.

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

Las partes importantes de los macroicones son los puntos de valencia (representados en la ilustración como círculos negros). En estos puntos se pueden introducir iconos o microicones de forma sucesiva y organizarlos en columnas mediante el editor de drakon.

Diseño

DRAKON fue creado como un lenguaje visual fácil de aprender para ayudar a la comprensión de programas de computadora escritos en diferentes lenguajes de programación con fines ilustrativos, de planificación y estrategia.

DRAKON utiliza drakon-chart, que es una formalización de los diagramas de flujo tradicionales para representar la estructura general del programa. A los íconos de DRAKON se les agregan fragmentos de código de un lenguaje de programación. La combinación de elementos visuales con código ayuda a la creación y el 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 aumentar 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 juntos sirven para el mismo propósito, a menudo es más fácil de entender cuando se representan como diagramas de Drakon. Existe un problema similar en el mantenimiento del código de programas grandes. Este problema se conoce ocasionalmente como "regla de 30 [líneas de código]" entre los programadores.

Sintaxis visual

Artículo de texto completo que contiene la descripción de la sintaxis visual del lenguaje DRAKON en inglés, 12 páginas, descarga gratuita en formato 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 . Los ejemplos están en lenguaje DRAKON-JavaScript. Los íconos (primitivos 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.

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 periódicamente a advanceStep . 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 "jugando", cuando hay un proyectil cayendo y el proyectil puede moverse hacia abajo, se lo mueve un paso hacia abajo.

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.

No hay proyectil

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

La función noProjectile se encarga de la situación específica en la que no cae ningún proyectil. 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.

Borrar fila

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 a arriba hasta que llega a una fila sin espacios vacíos. En ese caso, la fila se elimina de la cuadrícula, se aumenta la puntuación y el ritmo del juego aumenta.

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' está formada por cuatro árboles:

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

El gráfico de flujo siempre tiene una ruta desde el ícono del encabezado hasta cada vértice (nodo) del gráfico de flujo de control. En consecuencia, una silueta no puede tener 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.

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

Modelado de procesos de negocio

El lenguaje DRAKON puede utilizarse como lenguaje para modelar y visualizar procesos de negocio. “El lenguaje DRAKON se ha utilizado como lenguaje básico para la construcción de modelos de procesos de negocio, lo que permite obtener un prototipo de máquina de estados finitos al construir modelos de procesos de negocio. La visualización de procesos de negocio en el espacio de estados permite al responsable de la toma de decisiones mejorar la eficiencia de la toma de decisiones”. [14]

Usos fuera de la programación

Si bien DRAKON está diseñado principalmente como una herramienta para comprender programas de computadora, los diagramas drakon también se pueden utilizar 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 "similares a diagramas de flujo" . En Rusia, el editor DRAKON es conocido por su uso en el campo médico como herramienta para crear gráficos "instructivos" para pacientes o personal médico. [ cita requerida ] [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. ^ ab Окулова Л. P. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики // Вестник. Наука и практика. Материалы конференции «Инновации и научные исследования, а также их применение на практике \ Innowacje i badania naukowe, jak rowniez ich zastosowanie w praktyce. — 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 "lenguaje DRAKON").
  5. ^ ab Штурманы ракет / Под общей редакцией Е. Л. Межирицкого. — М.: БЛОК-Информ-Экспресс, 2008. — 384 с. — C. 192. — ISBN 978-5-93735-008-4 
  6. ^ "Técnica de desarrollo de algoritmos y programas "Grafit-Floks"." (PDF) . Archivado desde el original (PDF) el 2012-12-27 . Consultado el 2012-12-27 .
  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 mirada al problema.— Herald of the Russian Academy of Sciences. Volumen 73, número 4, 2003.
  9. ^ Созоров Н. Г., Трошин М. B. Дракон-редактор как основное звено в формализации целевых дидактических ресурсов для проектирования интерактивного учебного курса. Материалы региональной научно-методической конференции ИДНО Томского политехнического университета «Электронные дидактические материалы в инженерном образовании» 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. Алгоритмы для правильного мышления. Основы алгоритмизации . М.: ДМК Пресс pág . 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. Modificación de un sistema de control de vuelo científico para misiones de vehículos aéreos no tripulados lanzados desde globos // Centro Aeroespacial Alemán 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. V. 28. № 1. P. 41-47.
  15. ^ Ejemplo de programa médico para reducir la grasa corporal (en ruso) [ enlace muerto permanente ]

Fuentes

Enlaces externos