Os Seis Véus da ADA - Ciência e Tecnologia da Programação

Transcrição

Os Seis Véus da ADA - Ciência e Tecnologia da Programação
Publicado em:
Personal Computer World
(1ª parte em Setembro de 1988)
(2ª parte em Outubro de 1988)
Os Seis Véus da ADA
Fernando Brito e Abreu
INESC
"Tenho comigo seis servos leais
(que me ensinaram tudo o que aprendi)
Os seus nomes são: O Quê, Porquê e
Quando, Como, Onde e Quem. "
Rudyard Kipling
Prémio Nobel da Literatura (1907)
Resumo
Mais conhecidos pelos seis W's (What, Why, When, hoW, Where, Who), este
tipo de abordagem globalizante parece particularmente apropriada, quando
nos nossos meios académicos e industriais existe uma certa indiferença,
face a esse espectacular movimento em curso nos Estados Unidos e na
Europa em torno da linguagem ADA.
É a combinação das características intrínsecas da linguagem, com o
processo da sua própria criação, contínuo desenvolvimento dos seus
ambientes de apoio ao aperfeiçoamento, bem como a sua aceitação, por
uma comunidade internacional de utilizadores (quer na Universidade, quer
na Industria), investigadores, gestores e governos que fazem com que a
ADA não seja apenas mais uma linguagem.
A intenção deste artigo é a de levantar, um a um cada um dos véus que a
encobrem, para revelar uma ADA ainda pouco conhecida entre nós, mas que
por certo vai dar ainda muito que falar, escrever, trabalhar e também ganhar!
1. A linguagem
Porquê?
Em 1975 mais de 400 linguagens e dialectos eram utilizados nos sistemas em
desenvolvimento e em uso no Departamento de Defesa dos Estados Unidos (DoD). Mais de
metade dessas linguagens eram "assembly". Como resultado dessa proliferação, havia uma
tremenda escassez de ferramentas de desenvolvimento para cada uma das linguagens, além
das grandes dificuldades de portabilidade do software entre computadores diferentes, evitando
a partilha entre diversos projectos. Uma situação idêntica prevalecia quanto aos
programadores, muitos dos quais se tornavam altamente especializados numa dada
linguagem, tornando-se difíceis de transferir ou partilhar experiências com outros projectos.
Outros sintomas do problema eram que os projectos de desenvolvimento de software no DoD
não conseguiam cumprir prazos, ultrapassavam o orçamento previsto, eram pouco fiáveis e
muitas vezes não obedeciam às especificações originais. A somar-se a isto, as crescentes
despesas com a manutenção de sistemas já instalados.
Os custos de um tal estado de coisas eram enormes tanto mais que o DoD é o maior
"consumidor" mundial de software, por forca dos seus aviões, navios, submarinos, tanques,
mísseis, satélites, bem como sistemas de comando, controlo e espionagem. Os custos anuais
de software para tais sistemas eram de 4 mil milhões de dólares em 1980, 10 mil milhões de
dólares em 1986 e espera-se que atinjam os 30 mil milhões de dólares no princípio da década
de 90 [16]. Em 1985 o DoD estimava já as poupanças anuais devidas ao uso da ADA em cerca
de um milhão e meio de dólares [24].
Como? Quem? Quando? Onde?
Para reverter a situação vigente no DoD decidiu-se estudar a possibilidade de eliminar
gradualmente a profusão de linguagens em uso, em favor da utilização de uma única
linguagem de alto nível. Essa decisão embora óbvia hoje em dia, não o era na altura, pois
levantava sérios problemas técnicos, económicos e políticos. Mais de dez anos depois,
subsistem ainda hoje alguns espíritos renitentes [6],[14], o que per si nos faz pensar na
complexidade do problema em 1975.
Foi criado o "High Order Language Working Group" (HOLWG) composto por representantes
dos diversos ramos das forcas armadas e instituições de defesa americanas, com o intuito de
prosseguir a investigação sobre o problema. Em 1975 o Dr. David A. Fisher do Institute for
Defense Analyses (IDA) foi nomeado para criar uma especificação dos requisitos que deveria
preencher uma linguagem de alto nível que correspondesse às necessidades dos sistemas
computacionais embutidos ("embedded computer systems") em uso no DoD. Exemplos destes
sistemas, são submarinos, aviões, estacões de comutação de mensagens, equipamentos de
laboratório, sistemas de controlo de tráfego aéreo, etc. O Dr. Fisher produziu um documento de
requisitos denominado "Strawman", o qual foi enviado para um grande número de pessoas
interessadas, quer na comunidade militar, quer na civil. Foram recebidos os comentários a
esse documento, tendo sido publicada uma versão revista denominada "Woodenman", nos
finais de 1975. No ano seguinte foi publicada uma terceira versão do documento, o "Tinman".
Durante 1976, foram analisa- das as 23 linguagens mais utilizadas no DoD, tendo-se concluído
sem surpresa que nenhuma delas preenchia todos os requisitos descritos no "Tinman".
Contudo três das linguagens - Pascal, PL/1 e Algol 68 - foram indicadas como bons pontos de
partida para a criação da nova linguagem.
Em 1977 o DoD convida várias instituições a apresentarem propostas para o projecto da
linguagem, com base numa nova versão dos requisitos, o "Ironman". Das 17 respostas são
escolhidas 4 para competir entre si. Na tentativa de manter o anonimato na avaliação são-lhes
atribuídas cores:
•
•
•
•
VERDE para a Cii Honeywell Bull (França),
VERMELHA para a Intermetrics (Boston)
AZUL para a Softech
AMARELA para a Sri International.
Os projectos preliminares das quatro equipas foram analisados por vários grupos de estudo,
tendo-se escolhido entre eles o projecto VERDE e o AMARELO como sendo os mais
promissores. Aos dois finalistas foi dado mais um ano para aperfeiçoarem os projectos em face
da especificação final dos requisitos então publicada, o "Steelman".
A linguagem a criar era necessariamente grande dada a extensão dos requisitos expressos no
documento.
A 2 de Maio de 1979, após discussão pública dos dois projectos finalistas, o projecto VERDE
(Cii Honeywell Bull) liderado por Jean Ichbiah, é declarado vencedor e o DoD anuncia que a
nova linguagem será conhecida por ADA em honra de Augusta Ada Byron, Condessa de
Lovelace (1815-1852), assistente e patrocinadora de Charles Babbage, considerada a primeira
programadora da história (vide apêndice A).
Foi então publicado um documento com as especificações da linguagem, designado por
"Preliminary ADA" e outro documento, denominado "Rationale", em que se descrevem as
razões de ser de muitas das características específicas da linguagem. Cerca de 80 equipas de
programadores, usaram o "Preliminary ADA" para escrever (no papel, pois por essa altura não
havia ainda nenhum compilador) partes de sistemas que já tinham codificado noutras
linguagens.
Em Outubro de 1979 realiza-se em Boston um Workshop em que são debatidos os resultados
dessas equipas e os de um grupo de peritos em linguagens denominados os "Distinguished
Reviewers", reunindo-se um total de cerca de 900 comentários detalhados. Seguiu-se um
período de revisão da linguagem em que participaram universidades, indústrias e software
houses de 15 países diferentes, num total de mais de 7000 contribuições [16] e que
culminaram com a publicação em Julho de 1980 da primeira versão definitiva da linguagem.
Esta versão foi proposta como norma ao American National Standards Institute (ANSI).
O processo de normalização pelo ANSI levou mais de dois anos e resultou numa série de
pequenas alterações à linguagem. A maior parte destas alterações foi pequena, mas de subtil
significância, especialmente para a escrita do compilador [3]. Em Fevereiro de 1983, foi
publicado pelo ANSI como norma, o "Language Reference Manual". O DoD, que juntamente
com o ANSI, também publicou a norma da linguagem (military standard MIL-STD-1815A),
declarou que a partir de 1 de Julho de 1984, a utilização da ADA era condição imprescindível
em todos os novos desenvolvimentos e actualizações dos sistemas de defesa. Mais ainda, não
seriam aceites subconjuntos ou extensões à linguagem. O AJPO (ADA Joint Program Office),
em delegações nos EUA, Franca, Alemanha Ocidental e Reino Unido, ficou encarregue dos
processos de validação dos compiladores ou interpretadores a desenvolver. Sem esta
validação, que envolve a efectivação de mais de 2500 testes, os compiladores e
interpretadores não podem usar o nome ADA (que é uma marca registada do DoD).
Iniciou-se então a corrida às validações e, em 11 de Abril de 1983, dois meses apenas depois
da norma ANSI (e DoD), foi validado o interpretador ADA/ED desenvolvido na New York
University. O segundo sistema foi validado em 14 de Junho do mesmo ano, tratando-se do
compilador da Rolm Corporation de Santa Clara na Califórnia.
Em Agosto de 1986 já existiam 50 compiladores validados, mais de 60 organizações nos EUA,
Europa e Japão estavam envolvidas no projecto de compiladores ADA e produtos
relacionados, quer para computadores militares quer para modelos comerciais. Alguns
exemplos são a Digital Equipment Corporation, Data General, IBM e Honeywell. Curiosamente,
a Intermetrics e a Softech duas das quatro empresas que ficaram para trás no concurso para o
desenvolvimento da linguagem (que como já foi dito foi ganho pela Cii Honeywell Bull em
Franca), aparecem agora com os seus compiladores ADA, utilizando a conhecida técnica "se
não consegues vencê-los junta-te a eles!"
Muitas das vezes, os computadores utilizados no desenvolvimento de programas ("host"), são
diferentes das máquinas a que se destina ("target systems") o código máquina gerado pelos
compiladores. Exemplos de computadores ("host") em que têm sido instalados os
compiladores são Apollo, Sun, Control Data, Data General, Gould, Digital, Hewlett Packard,
Honeywell, IBM, Rational, Rolm e Tektronix. Exemplos de máquinas a que se destina o código
produzido são sistemas incluindo processadores da família Intel (86, 186, 286, 386), da família
Motorola MC 68000, da família Zilog Z8002 ou máquinas MIL-STD-1750 (Norma Militar), para
além obviamente, de código produzido para os próprios computadores de desenvolvimento,
para efeitos de teste.
Em 1986 a International Organization for Standardization (ISO) aceita também o ADA como
norma [23].
2. O ambiente de desenvolvimento
Porquê?
Durante as fases de especificação e desenvolvimento da linguagem, tornou-se cada vez mais
claro que para além do compilador e das ferramentas de desenvolvimento habituais (editores,
debuggers, etc.), algo mais deveria ser feito para que a nova linguagem permitisse obter as
esperadas profundas alterações no ciclo de vida do software produzido. Isto é tanto mais
verdade quanto se sabe que a ADA foi particularmente concebida para a implementação de
sistemas grandes e complexos que podem exceder as 500 mil linhas de código [29]. Pensando
em programação modular, se cada módulo não exceder, como e de boa pratica, as 100 a 250
linhas de código, teremos 2 a 5 mil módulos diferentes! A integração de uma tão grande
diversidade de módulos ("programming-in-the-large", na literatura em língua inglesa), de forma
a construir um "sistema", e uma actividade intelectual completamente diferente e bastante mais
complexa que o projecto de cada um dos módulos individualmente. Para alem disso, a
linguagem ADA tem uma grande quantidade de capacidades, dificilmente abarcáveis na
totalidade por um programador normal. A utilização de todas essas capacidades apenas por
super-programadores, não e certamente a solução mais viável. Nem o e também,
convencionar a utilização de um subconjunto da linguagem, cujos limites os programadores
não compreenderão realmente e que, acidentalmente excedidos, poderão ter consequências
imprevistas ou mesmo catastróficas. A solução passa portanto pela utilização de um ambiente
de apoio ao desenvolvimento de software, que inclua, para alem das ferramentas habituais,
outras que auxiliem na descrição, analise, organização e gestão dos muitos módulos que
constituem os grandes sistemas, bem como outras ferramentas que ajudem o programador a
dominar as complexidades da linguagem.
Como? Quem? Quando? Onde?
Desde os fins dos anos 70 que o DoD tinha encarregue uma comissão de definir o conjunto de
requisitos que um ambiente de apoio ao desenvolvimento em ADA deveria preencher. Desse
trabalho resultaram duas versões preliminares, o Sandman e depois o Pebbleman. Em
Fevereiro de 1980 foi publicado o Stoneman, documento final dos requisitos sobre o qual
adiante se falara.
Em Janeiro de 1982 o Ada Joint Program Office (AJPO) iniciou um projecto com a finalidade
de desenvolver as interfaces através das quais as ferramentas de um ambiente de apoio ao
desenvolvimento em ADA (APSE) pudessem comunicar com o sistema operativo, entre si e
com uma base de dados comum. Esse projecto foi levado a cabo por duas equipas, uma
governamental, o KAPSE Interface Team (KIT) e outra representando a industria e
universidades, o KAPSE Interface Team from Industry and Academia (KITIA). Em Novembro de
1985 foi publicada uma primeira versão das interfaces definidas no KAPSE, com o nome de
CAIS (Common APSE Interface Set). Em Agosto de 1986 já existiam nove empresas
desenvolvendo protótipos do CAIS [16].
Dez países da NATO (Espanha, Franca, Bélgica, Holanda, Alemanha, Itália, Noruega, Reino
Unido, Estados Unidos e Canadá) assinaram em Marco de 1986, uma declaração de intenções
no sentido da reunião de esforços no âmbito dos ambientes ADA. Para alem de cooperação no
desenvolvimento de protótipos do CAIS e representação no KIT de todos os signatários,
pretendia-se fazer uma analise comparativa entre o CAIS e o PCTE (Portable Common Tool
Environment), um esforço europeu em que tem estado envolvidas a Siemens, Olivetti, Bull,
Nixdorf e ICL, entre outras.
Para alem de ter patrocinado o desenvolvimento da linguagem DIANA, de que adiante
falaremos, o AJPO apoiou também um projecto de avaliação e validação (E & V Project) cujo
objectivo era o de desenvolver métodos de avaliação de performances de diversos APSEs,
bem como critérios que permitam determinar da aplicabilidade de um dado APSE para o
desenvolvimento de um sistema especifico. O grupo responsável pelo projecto, que integra
participantes da indústria, produziu um conjunto de "benchmarks" para a avaliação de
performances de compiladores ADA.
Ainda no mesmo âmbito, o grupo de trabalho ARTEWG do SIGADA, tem como finalidade o
estabelecimento de normas, critérios e linhas de acção para ambientes ADA, por forma a
facilitar a reutilização e transportabilidade de componentes de software escritos em ADA,
melhorar a performance desses componentes, bem como a avaliação de sistemas de
desenvolvimento.
O que é?
Tradicionalmente, as ferramentas de software tendem a ser dependentes do sistema operativo
em que estão instaladas. Por isso, não e trivial a sua transferência para outro sistema
operativo. Para evitar este problema definiu-se uma interface comum com o sistema operativo,
constituída por um núcleo (kernel) que virtualiza a maquina.
O problema atrás descrito foi um dos muitos que se levantaram no processo de elaboração do
Stoneman. Este documento de especificações previa a existência de três níveis: KAPSE,
MAPSE e APSE global.
O KAPSE (Kernel Ada Programming Support Environment) e o núcleo do ambiente e suporta
as funções básicas do sistema operativo, base de dados e comunicações. E este núcleo que
garante a transportabilidade do ambiente, tal como acima referimos. A base de dados e uma
peca fundamental no ambiente de desenvolvimento, uma vez que serve de repositório a toda a
informação associada a cada projecto, ao longo de todo o seu ciclo de vida.
O MAPSE (Minimal Ada Programming Support Environment) fornece um conjunto de
ferramentas básicas incluindo editor, compilador, linker, loader, debugger, entre outras.
O APSE global (full Ada Programming Support Environment) inclui as ferramentas necessárias
a implementação prática de uma dada metodologia. Estas poderão destinar-se a apoiar a
definição de objectivos, as especificações funcionais, gestão do projecto, etc, constituindo
assim um conjunto de ferramentas aplicáveis em todas as fases do ciclo de vida de um
sistema.
Muitas das ferramentas operam sobre o programa fonte escrito em ADA, o que geralmente
obriga a que possuam uma forma de representação interna que permita a localização eficiente
das unidades sintácticas. Foi precisamente no sentido de normalizar essa representação, o
que permite uma mais fácil interacção entre ferramentas e menores custos de
desenvolvimento, que foi projectada, com o patrocínio do AJPO, a linguagem DIANA. Esta
linguagem consiste numa representação em arvore do código fonte, em que cada no tem um
ou mais atributos.
Este tipo de representação tem a vantagem de ser facilmente manipulável, dado serem
conhecidos muitos algoritmos para operar sobre estruturas em árvore. As conversões ADA ->
DIANA e DIANA -> ADA são relativamente simples, existindo versões (de ferramentas
baseadas em DIANA) em uso [22]. Um exemplo de um sistema de desenvolvimento para ADA
e o CAEDA desenvolvido na Universidade de Carleton no Canada [1]. Este APSE utiliza uma
interface gráfica (numa estação de trabalho SUN) para capturar a estrutura lógica do sistema a
projectar, guardando-a numa base de dados do projecto. A partir desta ultima, pode ser gerado
código fonte em ADA, semiautomaticamente. Esta última fase foi desenvolvida em Prolog.
Outro exemplo de um APSE, este desenvolvido na indústria (Rolm Corporation) e
comercializado pela Data General e o ADE - Ada Development Environment.
Os ambientes de programação para ADA têm constituído uma fonte inesgotável de assuntos
para projectos de investigação em curso em muitas universidades, tal como se poderá
constatar pela lista de referências no fim deste artigo. Tem-se efectuado inúmeros congressos,
reuniões e workshops em que têm sido apresentados os resultados desses projectos. Alguns
dos campos de investigação, motivados pelos APSEs, centram-se em torno das bases de
dados para os projectos, interfaces com o utilizador, reutilização de software, ambientes
distribuídos, relação entre metodologia e ambiente, bem como arquitecturas de ambientes [1].
Note-se que a maior parte destes assuntos são independentes da linguagem (embora as
implementações práticas tendam a ser desenvolvidas em ADA), o que suscita ainda mais o
interesse da comunidade científica, sendo a ADA um meio e não um fim em si própria.
Referências
[1]
[Adatec85]
ACM ADATEC, "Future Ada Environment Workshop", ACM Sigsoft
Software Engineering Notes Vol 10 no2, Abril 85
[2]
[Baker85]
Baker, T.P. / Riccardi, G.A. (Florida State University), "Ada Tasking:
From Semantics to Efficient Implementation", IEEE Software vol 2 no2, Março 85
[3]
[Barnes84]
Barnes, J.G.P. (SPL International), "Programming in Ada", Addison
Wesley Publishing Company, 84
[4]
[Buzzard85]
Buzzard, G.D. / Mudge, T.N. (University of Michigan), "Object-Based
Computing and the Ada Programming Language", IEEE Computer, Março 85
[5]
[Clapp86]
Clapp, Russel M. / Duchesneau, Louis / outros (University of Michigan),
"Toward Real-Time Performance Benchmarks for Ada", Communications of the ACM vol 29
no8, Agosto 86
[6]
[Crenshaw86] Crenshaw, Jack W. (Honeywell), "Comment on a Preliminary Study of
Ada Expansion Ratios", ACM SIGSOFT Software Engineering Notes vol 11 no3, Julho 86
[7]
[Darpa83]
DARPA (DoD), "ADA Reference Manual", 83
[8]
[Freeman84]
Freeman, Peter / Wasserman, Anthony I. / Houghton, Raymond C.
(University of California), "Comparing Software Development Methodologies for Ada: A Study
Plan", ACM SIGSOFT Software Engineering Notes vol 9 no4, Julho 84
[9]
[Friel85]
Friel, Patricia / Sheppard, Sallie (Texas University), "Implications of the
ADA Environment for Simulation Studies", Simuletter vol 16 no2, Abril 85
[10]
[Goering84]
Goering, Richard, "ADA Kit Cuts Compiler Development Time",
Computer Design, Novembro 84
[11]
[Helmbold85] Helmbold, David / Luckam, David (Stanford University), "Debugging
Ada Tasking Programs", IEEE Software vol 2 no2, Marco 85
[12]
[Hookway85] Hookway, Raymond J. (Case Western Reserve University - Cleveland),
"Verifying ADA Programs", ACM SIGSOFT Software Engineering Notes vol 10 no4, Agosto 85
[13]
[James83]
James, Carol L. / Morrill, Duncan E., "The Real Ada, Countess of
Lovelace", ACM SIGSOFT Software Engineering Notes vol 8 no1, Janeiro 83
[14]
[Klumpp83]
Klumpp, Allan R. (Jet Propulsion Laboratory, California Institute of
Technology), "Space Station Flight Software: HAL/S or ADA ?", IEEE Computer, Março 85
[15]
[Ledgard81]
Ledgard, Henry, "ADA - An Introduction", Springer Verlag, Fevereiro 81
[16]
[Lieblein86]
Lieblein, Edward (Tartan Laboratories Incorporated - Pittsburgh), "The
Department of Defence Software Initiative: A Status Report", Communications of the ACM vol
29 no8, Agosto 86.
[17]
[Luckham85] Luckham, David C. / Henke, Friedrich W. Von (Stanford University),
"An Overview of ANNA, a Specification Language for ADA", IEEE Software vol 2 no2, Março 85
[18]
[McHugh85]
McHugh, John (Research Triangle Institute) / Nyberg, Karl (Verdix
Corporation), "ADA Verification Using Existing Tools", ACM SIGSOFT Software Engineering
Notes vol 10 no4, Agosto 85
[19]
[Porcella83]
Porcella, Maria / Freeman, Peter / Wasserman, Anthony I. (University
of California), "ADA Methodology Questionnaire Summary", ACM SIGSOFT Software
Engineering Notes vol 8 no1, Janeiro 83
[20]
[Reynolds85] Reynolds, Robert G. (Wayne State University), "PARTIAL: A Tool to
Monitor the Stepwise Refinement of Ada Programs", ACM SIGSOFT Software Engineering
Notes vol 10 no3, Julho 85
[21]
[Rice83]
Rice, John R. (Purdue University), "Remarks on Software Components
and Packages in ADA", vol 8 no2, Abril 83
[22]
[Rosenblum85] Rosenblum, David S. (Stanford University), "A Methodology for the
Design of ADA Transformation Tools in a DIANA Environment", IEEE Software vol 2 no2,
Março 85
[23]
[Sammet86]
Sammet, Jean E. (IBM), "Why ADA is not just another programming
language", Communications of the ACM, Agosto 86
[24]
[Suydam85]
Suydam, William E., "ADA Programs Emerge as Compilers Vault
Validation Hurdles", Computer Design, Junho 85
[25]
[Urban85]
Urban, Joseph E. (University of Southwestern Louisiana) / Fisher,
David A. (Incremental Systems Corporation), "ADA Environments and Tools", IEEE Software
vol 2 no2, Março 85
[26]
[Wasserman82] Wasserman, Anthony I. / Freeman, Peter (University of California),
"ADA Methodologies: Concepts and Requirements", ACM SIGSOFT Software Engineering
Notes vol 8 no1, Novembro 82
[27]
[Wegner84]
Wegner, Peter (Brown University), "Accomplishments and Deficiencies
of ADA", IEEE Software, Julho 84
[28]
[Wiener84]
Wiener, Richard S. / Sincovec, Richard F. (University of Colorado),
"Software Engineering with MODULA-2 and ADA", John Wiley & Sons, 84
[29]
[Wolf85]
Wolf, Alexander L. / Clarke, Lori A. / Wileden, Jack C. (University of
Massachussets), "ADA - Based Support for Programming-in-the-Large", IEEE Software vol2
no2, Março 85
Apêndice A - Quem foi a verdadeira Ada ?
"E tomou Lamech para si duas mulheres:
o nome de uma era Ada
e o nome da outra era Zila."
(in GENESIS, cap.4, v.19)
Ada é a segunda mulher mencionada na Bíblia, a primeira depois de Eva...
Trata-se contudo de uma curiosidade, pois a Ada que deu o nome à linguagem é bastante mais
recente e menos litúrgica que essa nossa "antecessora"!
Passemos à história. Em 1813 o poeta inglês Lord Byron, então com 25 anos, apaixona-se e
mantém uma relação incestuosa com a sua meia-irmã, Augusta Leigh. Dois anos mais tarde,
casa-se com uma jovem puritana de boa família, amante das matemáticas, Annabella
Milbanke. Byron, que com sua vida e a sua obra criou o protótipo do herói romântico -jovem
melancólico, devasso mas audacioso, tinha uma personalidade incompatível com a sua esposa
e algumas semanas depois da sua única filha legitima, Augusta Ada Byron, ter nascido (10 de
Dezembro de 1815), separou-se.
Algum tempo depois, os rumores sobre o seu caso anterior ao casamento, destruíram-lhe a
reputação e aceitação social, forçando-o a abandonar o país. Viveu no castelo de Chillon perto
de Montreux na Suíça. Embora nunca mais tivesse visto a sua filha, muitas das suas cartas e
poesia demonstravam uma preocupação carinhosa por ela. Morreu novo, em 1824, quando
Augusta Ada tinha ainda oito anos.
Quanto a Ada, sua mãe Lady Byron encorajou-a a desenvolver, desde criança, os seus
talentos naturais para a matemática. Entre os seus tutores, eminentes cientistas e
matemáticos, contava-se Augustos de Morgan, um amigo de família aliás.
Em 1835 casa-se com William King, mais tarde Lord Lovelace, o qual também encorajava Ada
a prosseguir a sua carreira científica.
Aos 29 anos publica o seu trabalho científico mais notável. Trata-se de um estudo aprofundado
que acrescentou à sua tradução para Inglês de um trabalho famoso (Menabrea) sobre a
máquina analítica de Babbage. Esse estudo demonstrava bem o seu domínio das teorias
matemáticas e técnicas numéricas utilizadas nas máquinas computacionais de Babbage,
sendo essas aptidões conhecidas e apreciadas pelos cientistas britânicos de nomeada de
então, como Charles Wheatstone, Michael Faraday, Mary Sommerville e o já referido Augustus
de Morgan.
Nos seus últimos anos (faleceu em 1852, aos 36 anos vítima de um cancro), para além de
várias perturbações físicas e psíquicas devidas a medicamentação indevida, envolveu-se em
apostas nas corridas de cavalos, tendo inclusivamente empenhado as jóias da família.
A seu pedido foi sepultada ao lado de Lord Byron aceitando assim a sua identidade e a de seu
pai que fora ensinada a desprezar.
Apêndice B - Dicionário ADA
O movimento ADA tem suscitado a mobilização e mesmo a criação de um número crescente
de organizações e publicações. O leitor que deseje aprofundar os seus conhecimentos sobre
ADA, irá encontrar na maioria dos artigos, toda uma profusão de nomes e siglas que já fazem
parte do jargão dos iniciados. Sem a convicção de cobrir a totalidade, aqui se incluem, para
facilitar posteriores leituras.
ABICS (ADA Based Integrated Control System ) - Projecto incluído no programa STARS, com o
fim de desenvolver e demonstrar a viabilidade da reutilização de software para sistemas
aeronáuticos.
ADAIC (ADA Information Clearinghouse Newsletter ) - Publicação bimestral do AJPO que
fornece informações gerais sobre serviços e actividades relacionadas com a ADA.
ADA Letters - Publicação bimestral do ACM (Association of Computer Manufacturers)
ADATec - Grupo Técnico criado em 1981 no âmbito da ACM (Association of Computer
Manufacturers), reunindo personalidades da comunidade científica para aprofundar
experiências nos domínios de investigação relacionados com ADA
ADAM (ADA - based language for Multiprocessing) - Linguagem baseada em ADA para
utilização em aplicações de multi processamento. Foi desenvolvida na Universidade de
Stanford.
ADE (ADA Development Enviroment) - APSE desenvolvido pela Rolm Corporation em San
Jose na California em 1983. É comercializado pela Data General e está instalado (o KAPSE)
sobre o sistema operativo AOS/VS.
AJPO (ADA Joint Program Office) - Instituição criada no âmbito do Gabinete do Secretário da
Defesa dos E.U.A., em 1980, encarregada de acompanhar todo o processo de
estandardização da linguagem ADA, definir políticas bem como efectuar os mais de 2500
testes de validação aos compiladores, para que possam usar o nome ADA.
ANNA (ANNotated ADA) - Extensão da linguagem ADA que visa acrescentar potencialidades
no campo da especificação formal[17]. Foi desenvolvida na Universidade de Stanford, no
âmbito do programa STARS.
APSE (ADA Programming Suport Environment) - Ambiente de apoio à programação em ADA.
ARTEWG (ADA Run-time Environment Working Group) - Grupo de trabalho que se formou no
seio do SIGADA e em cooperação com o AJPO, com o objectivo de estabelecer critérios e
linhas de acção para ambientes ADA, que facilitem a reutilização e transportabilidade de
componentes de programas bem como avaliar e melhorar a performance de tais componentes.
ASEET (ADA Software Engineering Education and Training Team) - Equipa de trabalho criada
no AJPO com o intuito de identificar as necessidades de formação em ADA no seio do DoD, o
desenvolvimento em conjunção com o SEI de material para cursos de Engenharia de Software
em ADA e definir planos de formação e reciclagem, tudo isto em cooperação com a indústria.
AUR (Automation of User's Requirements) - Projecto incluído no programa STARS, cuja
finalidade é a de desenvolver técnicas de especificação e validação dos requisitos de
aplicações, por forma a que estes sejam traduzidos fácilmente (semiautomáticamente) para
programas fonte em ADA.
CAEDE (CArleton Embedded system Design Environment) - Ambiente de projecto para ADA. A
versão de Setembro de 1984 [1] incluía um sistema de captura gráfica da estrutura lógica do
sistema a projectar. A informação capturada era armazenada numa base de dados do projecto,
a partir da qual era gerado código fonte em ADA. Este ambiente foi desenvolvido em Prolog.
CAIS (Common APSE Interface Set) - Documento de definição das interfaces do KAPSE, cuja
primeira versão foi publicada em Novembro de 1985.
CAMP (Common ADA Missile Packages) - Projecto incluido no programa STARS, com o intuito
de utilizar os conceitos de reutilização no desenvolvimento de software para mísseis.
CREASE (Catalog of Resources for Education in ADA and Software Engeneering) - Lista de
cursos, seminários, programas de treino, livros e outras publicações sobre ADA e conceitos de
Engenharia de Software suportados pela linguagem. É publicada pelo AJPO e actualizada
anualmente com a informação recebida das empresas que fornecem esses serviços e das
editoras.
DARPA (Defence Advanced Research Projects Agency) - Instituição de investigação no âmbito
do DoD, em sistemas cruciais de defesa.
DIANA - Linguagem intermédia para utilização em compiladores e outras ferramentas de
programação para ADA[22]. Foi desenvolvida nos Tartan Laboratories Inc. em Pittsburg.
DoD (United States Department of Defense) - Departamento de Defesa dos Estados Unidos.
Provocou o arranque e suportou financeiramente o projecto de desenvolvimento da linguagem
ADA.
DoD Software Initiative - nome por que era conhecido inicialmente o programa STARS.
Embedded Computers - Computadores que fazem parte/controlam sistemas maiores como
submarinos, aviões, navios, automóveis ou mesmo fogões de microondas.
HOLWG (High Order Language Working Group) - Grupo constítuido em 1974 por
representantes dos diversos ramos das forças armadas e organismos de defesa norte
americanos, com o objectivo global de desenvolver uma metodologia sistemática para melhorar
o uso do software pelos militares.
IDL (Interface Description Language) - Linguagem de especificação de dados que permite uma
considerável abstração dos pormenores de representação. Um tradutor de IDL pode
automatizar a conversão das especificações para código ADA.
Ironman - Quarto documento de requisitos da linguagem a desenvolver, publicado em 1977,
tendo servido de base para a primeira fase da competição em que se envolveram quatro
equipas de projecto na definição da nova linguagem.
KAPSE ( Kernel ADA Programming Suport Environment) - Núcleo do ambiente de apoio à
programação em ADA. Implementa a interface com o sistema operativo, base de dados e
comunicações.
KIT (KAPSE Interface Team) - equipa governamental formada pelo AJPO com o fim de
desenvolver as interfaces do KAPSE.
KITIA (KAPSE Interface Team from Industry and Academia) - equipa representando a indústria
e as universidades, com um fim idêntico ao do KIT.
MAPSE (Minimal ADA Programming Support Environment) - camada do ambiente de apoio ao
desenvolvimento em ADA que, utilizando os serviços do KAPSE, fornece um conjunto de
ferramentas essenciais à programação (editor, compilador, linker, etc).
Methodman - Documento que descreve os requisitos de uma metodologia de desenvolvimento
de software. Foi publicado pelo DoD em 1982.
PACT (Pilot ADA Capabilities Transition) - Projectos conduzidos no âmbito do programa
STARS, SEI e AJPO. São desenvolvidos na indústria, sob contrato e destinam-se a promover a
inserção de novas tecnologias no processo de desenvolvimento, obtendo-se assim 'feedback'
das potencialidades reais (resultantes da prática) dessas mesmas tecnologias, suportadas pela
ADA.
PCTE (Portable Common Tool Environment) - Iniciativa europeia (Bull, ICL, Nixdorf, Olivetti e
Siemens) para definir um ambiente de desenvolvimento para ADA, com as desejáveis
qualidades de generalidade e portabilidade.
SEI (Software Engineering Institute) - Instituição de investigação e desenvolvimento, criada em
Dezembro de 1984 e sediada na Universidade de Carnegie-Mellon em Pittsburgh. É suportada
pelo governo dos E.U.A. e resultou de um concurso formal realizado a partir de Junho de 1984.
O seu propósito é o de actuar como catalizador nos processos de transição dos resultados da
investigação para a sua utilização prática em grandes projectos, em tudo o que diga respeito à
Engenharia de Software.
SIGADA (Special Interest Group on ADA) - Grupo criado sob os auspícios da ACM (Association
of Computer Machinery) e que resultou dum anterior comité técnico criado em 1981, o ACM
ADATec. Em 1986 o SIGADA já tinha 3800 membros, com reuniões efectuando-se
trimestralmente, patrocinando conferências e organizando grupos de trabalho em áreas de
investigação de ponta, como por exemplo o ARTEWG.
SJPO (Stars Joint Program Office) - Instituição encarregue de levar a bom termo o programa
STARS do DoD.
STARS (Software Technology for Adaptable Reliable Systems) - É um programa do DoD
iniciado em 1983 cujos objectivos são a melhoria da produtividade, qualidade e fiabilidade do
software, incentivo ao desenvolvimento e utilização de software reutilizável, bem como a
redução do tempo e custos de desenvolvimento do software de defesa.
Steelman - Quinto e último documento de requisitos, publicado em 1978, o qual serviu de base
para a segunda parte da competição no projecto de definição da linguagem (entre as duas
equipas finalistas).
Strawman - Primeiro documento de especificação dos requisitos a que deveria obdecer uma
linguagem de alto nível para servir a generalidade dos projectos desenvolvidos no DoD. Foi
elaborado em 1975 pelo Dr. David A. Fisher do IDA (Institute of Defense Analyses).
Tinman - Terceiro documento de requisitos da linguagem que o DoD necessitava. Foi
publicado em 1976 e resultou da revisão provocada pelos comentários e sugestões recebidas
sobre o "Woodenman".
Woodenman - Segundo documento de requisitos da linguagem a desenvolver, publicado em
fins de 1975 e resultante da revisão provocada pelos comentários e sugestões recebidas sobre
o "Woodenman".
Apêndice C - Não há bela sem senão
A ADA não foge ao ditado, até porque a perfeição não existe! Tendo nascido e desenvolvido
numa época de grande evolução tecnológica, além de ser herdeira de muitos dos paradigmas
das linguagens dos anos 70, ela é alvo de críticas de vários quadrantes, algumas das quais se
irão expor de seguida.
Niklaus Wirth, o inventor do Pascal e Modula-2, exprimiu assim a sua opinião [24]:
"A linguagem ADA é pouco económica. Ela atira-nos com demasiados conceitos. Contudo,
receio que a tendência seja no sentido de sistemas cada vez mais complexos. É aí que o uso
de linguagens de alto nível, com muitos testes redundantes, prova ser não só benéfico, mas
indispensável"
Espera-se que o surto de utilização da ADA venha a suscitar o aparecimento de uma indústria
de desenvolvimento de software, em particular no que respeita às bibliotecas de funções.
Contudo, poderá estar nesse fenómeno, uma razão para a ruína da ADA como linguagem
standard e comum. Com efeito, dado que o desenvolvimento de programas envolve a
utilização de pacotes de funções por exemplo para entradas/saídas e para operações
matemáticas complexas, cada pequena comunidade ADA irá utilizar bibliotecas de um dado
fabricante (eventualmente desenvolvidas ou adaptadas localmente).
O resultado será que os programas desenvolvidos numa instalação x, não terão portabilidade
(a menos que se levem a reboque todas as bibliotecas utilizadas, o que não parece ser uma
boa solução), pois, por exemplo utilizam as funções ASIN, ACOS e ATAN, enquanto que na
comunidade Y se utilizam as funções SIN-1, COS-1 e TAN-1 e na comunidade Z as funcões
ARCSIN, ARCCOS, e ARCTAN.
Outro aspecto importante é o de que, uma vez que com a ADA se pretendem obter fiabilidades
próximas dos 100%, não se deveria correr o risco, como se receia que esteja a acontecer, de
se traduzirem bibliotecas já existentes (escritas noutras linguagens), com o pretexto de que
elas têm servido bem nos últimos 10 a 20 anos e esperar que a interacção com os utilizadores
permita melhorar a sua fiabilidade. A experiência acumulada com outras linguagens [21], indica
que a influência dos utilizadores não permite melhorar a fiabilidade para além dos 85 a 95%.
Algumas características indesejáveis das linguagens dos anos 60, perduram ainda no seio da
ADA, como o sejam a estrutura de controlo "go to" e a possibilidade de existência de variáveis
globais sem restrições de acesso. Outros factores em seu detrimento são a possibilidade de
efeitos colaterais ("side-effects") devido à invocação de funções, ocorrência de excepções
durante a avaliação de expressões e a falta de uma ordem explícita de avaliação dos
operadores de uma expressão.
O facto de os pressupostos tecnológicos em que se baseou o projecto de definição da
linguagem ADA, quer a nível de hardware, quer a nível de software, sofrerem de alguma
obsolescência, por via do rápido desenvolvimento nos últimos anos, limita actualmente a
ambição de generalidade que a linguagem possuía à partida. Assim, faltam na linguagem
mecanismos que suportem eficazmente o desenvolvimento de sistemas distribuídos e sistemas
em tempo-real. Para evitar esta situação, alguns compiladores correntes, apresentam
características não incluídas no manual de referência da linguagem [7] para suportar esses
tipos de sistemas. Um dos assuntos ainda em aberto é o encadeamento de tarefas ("Task
Scheduling") [1].
Um dos argumentos mais fortes da ADA, tem sido a sua normalização. Já se referiu até, que o
DoD proibiu a utilização interna de subconjuntos ou extensões da linguagem.
Contudo a normalização também apresenta o "reverso da medalha". As inadequações de uma
norma propagam-se a todos os seus utilizadores e a outras normas que o usem como ponto de
partida. A ADA encontra-se precisamente nesta situação uma vez que os esforços do DoD na
definição de um ambiente padronizado de apoio à programação em ADA (APSE), foram
conduzidos no sentido da obrigatoriedade de utilização da ADA para o desenvolvimento das
ferramentas de apoio [27]. Além disso, uma vez adoptada uma norma, ela pode ser inflexível,
evitando o progresso. Esta desvantagem é particularmente sensível dado o rápido
desenvolvimento tecnológico em curso, em particular nas arquitecturas de computadores.

Documentos relacionados