DRAKON - DRAKON

DRAKON
Paradigma Visual
Apareceu pela primeira vez 1996
Local na rede Internet drakon-editor .sourceforge .net
Implementações principais
GRAFIT-FLOKS (1996), IS Drakon (2008), Editor DRAKON (2011), DrakonHub (2018), Drakon.Tech (2019)
Influenciado por
PROL2, DIPOL, LAKS
Influenciado
Plataforma QReal DSM
Parte externa do algoritmo de classificação rápida em DRAKON-C
Um diagrama DRAKON que descreve o transporte de um paciente criônico

DRAKON é uma programação visual algorítmica e linguagem de modelagem desenvolvida dentro do projeto espacial Buran seguindo os princípios de design ergonômico . A linguagem fornece uma maneira uniforme de representar fluxogramas de qualquer complexidade que são fáceis de ler e entender.

O nome DRAKON é a sigla em russo para "Дружелюбный Русский Алгоритмический [язык], Который Обеспечивает Наглядность] amigável, que traduz o" idioma "amigável, que traduz" a linguagem "amigável, que traduz" clareza "ou algoritmo" amigável ". A palavra "наглядность" (pronunciada aproximadamente como "naa-glya-dno-st-th") refere-se a um conceito ou ideia fácil de imaginar e entender, e pode ser traduzido como "clareza".

A linguagem DRAKON pode ser usada como uma linguagem de modelagem / "marcação" (que é considerada um programa "puro DRAKON" autônomo) e como uma linguagem de programação (como parte de uma linguagem híbrida).

A integração de uma variante "acadêmica" mais estrita de uma linguagem de marcação na programação, como a fornecida pelo DRAKON, adiciona um açúcar sintático, permitindo que os usuários de diferentes linguagens de programação compreendam facilmente as contribuições de outros e forneçam comentários, se necessário.

História

O desenvolvimento do DRAKON começou em 1986 para lidar com o risco de longa data de mal-entendidos em grandes projetos desenvolvidos pelo programa espacial soviético , especialmente se várias linguagens de programação forem usadas. Seu desenvolvimento foi dirigido por Vladimir Parondzhanov com a participação posterior da Agência Espacial Federal Russa (Academician Pilyugin Center, Moscou ) e da Academia Russa de Ciências ( Instituto Keldysh de Matemática Aplicada ).

A linguagem foi construída por formalização, ergonomização e estruturação não clássica de fluxogramas descritos na norma ISO 5807-85 e na norma russa «Гост 19.701-90».

O objetivo era substituir as linguagens especializadas usadas no projeto Buran por uma linguagem de programação universal . Nomeadamente PROL2 (ПРОЛ2), usado para desenvolver software de sistemas a bordo para o sistema de computador Biser-4 (Бисер-4), DIPOL (ДИПОЛЬ), usado para desenvolver software para sistemas de computador de manutenção de solo) e LAKS (ЛАКС), usado para modelagem .

O trabalho foi concluído em 1996 (3 anos após o encerramento oficial do projeto Buran), quando foi desenvolvido um sistema automatizado de programação CASE denominado "Grafit-Floks".

Este CASE é usado desde 1996 em muitos programas espaciais importantes: um projeto internacional Sea Launch , estágio superior de inserção de órbita russa Fregat (russo: Фрегат, fragata), veículo de lançamento pesado atualizado (foguete portador) Proton-M , etc. O papel exato DRAKON jogado nesses projetos, no entanto, não pode ser determinado. A experiência real de construção de sistemas com DRAKON permanece extremamente escassa, pois apenas alguns pequenos trechos de código estão disponíveis publicamente.

Família de idiomas DRAKON

Ícones da linguagem DRAKON
Macroicons da linguagem DRAKON.

DRAKON ( Russo : ДРАКОН ; dragão em inglês) foi projetado com a intenção de permitir fácil compreensão e legibilidade, já que o uso de vários idiomas em um único projeto pode causar confusão.

DRAKON é uma família de linguagens híbridas, como DRAKON-C, DRAKON-ASM, DRAKON-Java, etc. Todas as linguagens da família DRAKON possuem sintaxe gráfica uniforme baseada em fluxogramas. A sintaxe gráfica padrão fornece similaridade de gráficos drakon para diferentes linguagens híbridas. A linguagem do texto usa sua própria sintaxe.

A base da sintaxe gráfica é um alfabeto gráfico. Os elementos gráficos ("letras") do alfabeto DRAKON são chamados de ícones (não símbolos). O DRAKON também tem macroicons . Macroicons são palavras gráficas da linguagem DRAKON, consistem em ícones. Existem 27 ícones e 21 macroicons na linguagem DRAKON.

Os gráficos Drakon são construídos a partir de ícones e macroicons.

As partes importantes das marcas são os pontos de valência (na ilustração representada por círculos pretos). Nestes pontos, ícones ou microicons podem ser sucessivamente inseridos e organizados pelo editor drakon em linhas verticais.

Projeto

O DRAKON foi criado como uma linguagem visual para auxiliar na compreensão de programas de computador escritos em diferentes linguagens de programação para compreender rapidamente o fluxo e a finalidade de um programa.

DRAKON usa drakon-chart, que é um fluxograma usado para descrever a estrutura geral do programa. Trechos de código de uma linguagem de programação são adicionados aos gráficos.

As regras do DRAKON para a criação de diagramas são otimizadas cognitivamente para fácil compreensão, tornando-o uma ferramenta para aumento de inteligência .

Os gráficos Drakon de grandes programas multifuncionais podem ser difíceis de seguir ou compreender. Um conjunto de programas menores, que juntos têm o mesmo propósito, costuma ser mais fácil de entender.

Sintaxe visual

Artigo em texto completo contendo a descrição da sintaxe visual da linguagem DRAKON em inglês, 12 páginas, download gratuito, pdf.

Exemplos

Exemplo de tetris

Exemplo simples de um programa na linguagem DRAKON

Esses exemplos são códigos reais de uma implementação do jogo Tetris . Os exemplos estão na linguagem DRAKON-JavaScript. Os ícones (primitivos visuais) da linguagem DRAKON definem a estrutura geral dos algoritmos. Os trechos de código dentro dos ícones (primitivos) estão em JavaScript.

advanceStep

A função advanceStep implementa a lógica central do jogo. advanceStep é uma máquina de estado representada como uma árvore de decisão . O mecanismo de jogo chama advanceStep periodicamente. Esta máquina de estados tem três estados "jogando", "descartando" e "terminado". O jogo realiza ações diferentes dependendo do estado atual. Por exemplo, no estado "jogando", quando há um projétil caindo e o projétil pode se mover para baixo, ele desce um degrau.

A lógica central do jogo Tetris na linguagem DRAKON-JavaScript

Com o DRAKON, o leitor do algoritmo pode rastrear visualmente todos os caminhos possíveis na árvore de decisão.

Código JavaScript gerado a partir do 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

A função noProjectile para o jogo Tetris na linguagem DRAKON-JavaScript

A função noProjectile lida com a situação específica quando não há projétil caindo. Se houver uma linha preenchida, essa linha será removida da grade. Caso contrário, o jogo tenta inserir um novo projétil. Se não houver espaço para o projétil, o jogo estará perdido.

Código JavaScript gerado a partir do gráfico DRAKON:

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

clearRow

O algoritmo que remove uma linha da grade Tetris na linguagem DRAKON-JavaScript

A função clearRow verifica todas as linhas de baixo para cima até atingir uma linha sem lacunas. Nesse caso, a linha é removida da grade, a pontuação é aumentada e o tempo do jogo aumenta.

Código JavaScript gerado a partir do 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 
        }
    }
}

Animação de execução DRAKON

A imagem abaixo ilustra a execução do algoritmo DRAKON de silhueta. A execução do algoritmo é animada destacando os elementos do diagrama na ordem de execução.

A silhueta de 'Pesca' consiste em quatro árvores:

  • Preparando-se para pescar.
  • Esperando por uma mordida.
  • Trabalho de pesca.
  • Há muito tempo.

O caminho principal de cada árvore é mostrado destacando-se uma linha vertical espessa que é chamada de espeto.

O gráfico de fluxo sempre tem um caminho do ícone Título para cada vértice (nó) do gráfico de fluxo de controle. Conseqüentemente, uma silhueta não pode ter código inalcançável em nenhuma condição.

A execução do algoritmo DRAKON é animada destacando os elementos do diagrama na ordem de execução.

Uso moderno

DRAKON no Centro Aeroespacial Alemão

A linguagem DRAKON é usada no Centro Aeroespacial Alemão para implementação de algumas funções críticas ditadas pelas normas de segurança dos testes de vôo, onde a automação é importante devido à distância máxima até a estação de solo e o processo necessita de execução automática rápida.

O software DRAKON Editor foi usado para programar graficamente fluxogramas que foram especialmente verificados. O código C foi gerado a partir dos gráficos drakon, por exemplo, para representação DRAKON do código de detecção de lançamento.

Usos fora da programação

Embora o DRAKON seja projetado principalmente como uma ferramenta para compreender programas de computador, os gráficos de drakon também podem ser usados ​​para ilustrar processos em campos não relacionados à computação.

No editor DRAKON, as imagens podem ser adicionadas aos ícones DRAKON. Essa capacidade é usada em alguns campos para criar facilmente infográficos do tipo "fluxograma" . Na Rússia, o editor DRAKON é conhecido por ser usado na área médica como uma ferramenta para fazer gráficos "instrucionais" para pacientes ou pessoal médico.

Referências

Origens

links externos