Ada Resource Association
Ada Overview
Ada é uma linguagem de programação moderna projetada para aplicativos grandes e de longa duração-e sistemas embarcados em particular-onde confiabilidade e eficiência são essenciais. Foi originalmente desenvolvido no início dos anos 1980 (esta versão é geralmente conhecida como Ada 83) por uma equipe liderada pelo Dr. Jean Ichbiah em CII-Honeywell-Bull na França. A linguagem foi revisada e aprimorada de forma compatível no início dos anos 1990, sob a liderança de Tucker Taft da Intermetrics nos EUA. A linguagem resultante, Ada 95, foi a primeira linguagem orientada a objetos internacionalmente padronizada (ISO). Sob os auspícios da ISO, uma nova revisão (menor) foi concluída como uma emenda ao padrão; esta versão do idioma é conhecida como Ada 2005. Uma revisão mais significativa foi concluída (incluindo suporte para anotações de programas) e é conhecida como Ada 2012. Outra revisão significativa deve ser concluída em 2022.
o nome “Ada” não é um acrônimo; foi escolhido em homenagem a Augusta Ada Lovelace (1815-1852), uma matemática que às vezes é considerada a primeira programadora do mundo por causa de seu trabalho com Charles Babbage. Ela também era filha do poeta Lord Byron.
a Ada está vendo um uso significativo em todo o mundo em domínios de alta integridade / segurança crítica / alta segurança, incluindo aviônicos de aeronaves comerciais e militares, controle de tráfego aéreo, sistemas ferroviários e dispositivos médicos. Com sua incorporação de princípios modernos de engenharia de software, Ada é uma excelente linguagem de ensino para cursos introdutórios e avançados de ciência da computação, e tem sido objeto de pesquisas universitárias significativas, especialmente na área de tecnologias em tempo real.
Visão Geral do idioma
Ada é multifacetada. De uma perspectiva, é uma linguagem clássica de uso geral baseada em pilha, não vinculada a nenhuma metodologia de desenvolvimento específica. Possui uma sintaxe simples, Instruções de controle estruturadas, instalações flexíveis de composição de dados, verificação de tipo forte, recursos tradicionais para modularização de código (“subprogramas”) e um mecanismo para detectar e responder a condições excepcionais de tempo de execução (“tratamento de exceções”).
mas também inclui muito mais:
Scalar varia
ao contrário de linguagens baseadas em C sintaxe (como C++, Java, e C#), Ada permite que o programador simplesmente e explicitamente especificar o intervalo de valores permitidos para as variáveis de tipos escalares (inteiro, ponto flutuante, ponto fixo, ou tipos de enumeração). A tentativa de atribuição de um valor fora do intervalo causa um erro de tempo de execução. A capacidade de especificar contraints de intervalo torna a intenção do programador explícita e torna mais fácil detectar uma fonte importante de erros de codificação e entrada do Usuário.
programação no grande
o design original do Ada 83 introduziu a construção do pacote, um recurso que suporta encapsulamento (“ocultação de informações”) e modularização, e que permite ao Desenvolvedor controlar o namespace acessível em uma determinada unidade de compilação. Ada 95 introduziu o conceito de “unidades infantis”, adicionando consideravelmente flexibilidade e facilitando o design de sistemas muito grandes. Ada 2005 estendeu as instalações de modularização da linguagem, permitindo referências mútuas entre as especificações do pacote, facilitando a interface com linguagens como Java.
modelos genéricos
uma chave para componentes reutilizáveis é um mecanismo para parametrizar módulos em relação a tipos de dados e outras entidades do programa, por exemplo, um pacote de pilha para um tipo de elemento arbitrário. Ada atende a esse requisito por meio de uma instalação conhecida como “genéricos”; como a parametrização é feita em tempo de compilação, o desempenho em tempo de execução não é penalizado.
Programação Orientada a objetos (OOP)
Ada 83 foi baseada em objetos, permitindo o particionamento de um sistema em módulos correspondentes a tipos de dados abstratos ou objetos abstratos. O suporte completo ao OOP não foi fornecido, pois, primeiro, parecia não ser necessário no domínio em tempo real que era o alvo principal da Ada e, segundo, a aparente necessidade de coleta automática de lixo em uma linguagem OO teria interferido no desempenho previsível e eficiente.
no entanto, grandes sistemas em tempo real geralmente têm componentes como GUIs que não têm restrições em tempo real e que podem ser desenvolvidos com mais eficácia usando recursos OOP. Em parte por esse motivo, a Ada 95 fornece suporte abrangente para OOP, por meio de sua facilidade de “tipo marcado”: classes, polimorfismo, herança e ligação dinâmica. Ada 95 não requer coleta automática de lixo, mas fornece recursos de definição que permitem ao Desenvolvedor fornecer operações de recuperação de armazenamento específicas do tipo (“finalização”). Ada 2005 forneceu recursos adicionais de OOP, incluindo interfaces semelhantes a Java e notação de Invocação de operação tradicional.
Ada é metologicamente neutra e não impõe uma “sobrecarga distribuída” para OOP. Se um aplicativo não precisar de OOP, os recursos OOP não precisam ser usados e não há penalidade de tempo de execução.
programação simultânea
ada fornece uma facilidade estruturada e de alto nível para simultaneidade. A unidade de simultaneidade é uma entidade do programa conhecida como “tarefa”. As tarefas podem se comunicar implicitamente por meio de dados compartilhados ou explicitamente por meio de um mecanismo de controle síncrono conhecido como rendezvous. Um item de dados compartilhados pode ser definido abstratamente como um” objeto protegido ” (um recurso introduzido no Ada 95), com operações executadas sob exclusão mútua quando invocadas de várias tarefas. Interações de tarefas assíncronas também são suportadas, especificamente timeouts e terminação de Tarefas. Esse comportamento assíncrono é adiado durante certas operações, para evitar a possibilidade de deixar dados compartilhados em um estado inconsistente. As versões mais recentes do Ada incluem mecanismos leves para aproveitar as arquiteturas multicore, permitindo uma computação paralela altamente eficiente, preservando a portabilidade e permanecendo dentro do modelo de simultaneidade ada seguro e bem definido.
programação de Sistemas
tanto na linguagem “core” quanto no Anexo de programação de sistemas, a Ada fornece os recursos necessários para permitir que o programador se aproxime do hardware. Por exemplo, você pode especificar o layout de bits para campos em um registro, definir o alinhamento e o tamanho, colocar dados em endereços de máquina específicos e expressar sequências de código especializadas ou de tempo crítico em linguagem assembly. Você também pode escrever manipuladores de interrupção no Ada, usando a instalação de tipo protegido.
programação em tempo Real
os recursos de tasking da Ada permitem expressar expressões idiomáticas comuns em tempo real (tarefas periódicas, tarefas orientadas a eventos), e o anexo em tempo Real fornece várias instalações que permitem evitar inversões de prioridade ilimitadas. É definida uma política de bloqueio de objetos protegidos que usa tetos prioritários; isso tem uma implementação especialmente eficiente no Ada (mutexes não são necessários), uma vez que as operações protegidas não podem ser bloqueadas. Ada 95 definiu uma política de despacho de tarefas que basicamente requer que as tarefas sejam executadas até serem bloqueadas ou antecipadas, e Ada 2005 introduziu várias outras, incluindo o prazo mais antigo primeiro.
sistemas de alta integridade
com ênfase em princípios de engenharia de software sólido, a Ada apoia o desenvolvimento de aplicativos de alta integridade, incluindo aqueles que precisam ser certificados de acordo com padrões de segurança, como DO-178B e padrões de segurança, como os critérios comuns. Por exemplo, digitação forte significa que os dados destinados a uma finalidade não serão acessados por meio de operações inadequadas; erros como tratar ponteiros como inteiros (ou vice-versa) são evitados. E a verificação de limites de array da ADA evita vulnerabilidades de superação de buffer que são comuns em C e c++.
no entanto, a linguagem completa é inadequada em uma aplicação crítica à segurança, uma vez que a generalidade e a flexibilidade podem interferir nos requisitos de rastreabilidade / certificação. Ada resolve esse problema fornecendo uma diretiva de compilador, restrições pragma, que permite restringir os recursos de linguagem a um subconjunto bem definido (por exemplo, excluindo instalações OOP dinâmicas).
a evolução da Ada viu o aumento contínuo do suporte para aplicações críticas e de alta segurança. Ada 2005 padronizou o perfil Ravenscar, uma coleção de recursos de simultaneidade que são poderosos o suficiente para programação em tempo real, mas simples o suficiente para tornar a certificação prática. Ada 2012 introduziu instalações de anotação para adicionar pré-condições, pós-Condições e invariantes aos programas. Ada 2022 estende isso com anotações adicionais para as condições iniciais padrão, propriedades estáveis, não bloqueio e uso global de objetos. Estes podem servir tanto para verificação de tempo de execução quanto como entrada para Ferramentas de análise estática.
Ada Resumo das Vantagens
- Ajuda você a projetar segura e confiável de código
- Reduz os custos de desenvolvimento
- Suporta o novo e a mudança de tecnologias
- Facilita o desenvolvimento de programas complexos
- Ajuda a tornar o código legível e portátil
- Reduz os custos de certificação para segurança de software crítico
Ada Resumo dos Recursos
- Objeto da programação orientada
- Forte
- Abstrações para caber programa de domínio
- Genérico de programação/templates
- Exceção tratamento de
- Instalações para a organização modular de código
- bibliotecas Padrão para I/O, manipulação de cadeias de caracteres, numéricos de computação, recipientes
- programação de Sistemas
- programação concorrente
- programação em tempo Real
- sistemas Distribuídos programação
- processamento Numérico
- Interfaces com outras linguagens (C, COBOL, Fortran)
Em breve, a Ada é uma linguagem internacionalmente padronizada combinando objeto-programação orientada a recursos, bem engenharia de simultaneidade instalações, suporte em tempo real, e built-in fiabilidade. Uma ferramenta apropriada para abordar os problemas reais enfrentados pelos desenvolvedores de software hoje, Ada é usada em vários setores importantes para projetar software que proteja empresas e vidas.
Leave a Reply