Linguagens de Especificação Universidade Federal Fluminense Nú mer 1. Introdução Procurase analisar os diferenciais que estão por traz do sucesso das linguagens XML, UML, TEX, HTML, entre outras. As bases de uma nova geração de aplicações que serão na área da informação na rede Internet e em intranets. No inicio da era dos computadores, há 40 ou 50 anos, estes eram usados, sobre tudo, para processar dados e fazer cálculos. O nível d abstração na interação com as maquinas era baixo demais para a maioria das pessoas. Sua utilização era quase que restrita a laboratórios de tecnologia. Há hoje uma mudança radical deste cenário. Após a surpreendente evolução da microinformática nas ultimas duas décadas, que levou sobre maneira o nível de abstração da relação homem / máquina, contatase hoje que a maior contribuição visível dos computadores esta em sua utilização como ferramentas de armazenamento, organização, recuperação e intercambio de informações entre pessoas, empresas e ate entre programas. Enfim, hoje o computador e visto pela sociedade, cada vez mais, como uma ferramenta de comunicação, e não propriamente de calculo. A informação e o computador são parceiros antigos, mas a intensificação e democratização do seu uso, aliadas à abstração sempre crescente do nível de interação e troca de informações, criaram terreno propicio para a origem das chamadas linguagens chamadas de linguagens de especificação. Este fenômeno foi marcante na primeira década dos anos 90, com o aparecimento da Web. Estas linguagens permitem a construção de padrões públicos e abertos que esta sendo criados para se tentarem maiores avanços no tratamento da informação; elas minimizam o problema de transferência de um formato de representação para outro e liberam a informação das tecnologias de informação proprietárias. Estas linguagens identificam, de forma descritiva, cada “entidade informacional” digna de significado presente nos documentos, como, por exemplo, parágrafos, títulos, tabelas ou gráficos. A partir destas descrições, os programas de computador podem melhor compreender e, em conseqüência, melhor tratar ou processar a informação contida em documentos eletrônicos. A idéia duma linguagem de muito alta nível para especificação de sistemas informáticos não é de maneira nenhuma nova. Reconhecida a necessidade duma linguagem não procedimental que permita a especificação dos sistemas informáticos duma maneira tão afastada quanto possível das restrições impostas ao nível da implementação. Toda linguagem de especificação é baseada num determinado modelo dos sistemas informáticos. Em particular, esse modelo inclui um submodelo de componente de memorização (base de dados) e outro dos elementos funcionais (processos) responsáveis pela evolução do sistema. Nú mer 1.1. Marcação procedimental X Marcação descritiva Todo o sistema editor ou “processador” de textos tem de embutir, juntamente com o texto editado marcas que fornecem indicações de como esse texto deve ser apresentado ao usuário. As marcas podem estar escondidas do usuário, como nos editores do tipo WYSIWYG (“What You See Is What You Get”. O editor Word da Microsoft é um exemplo desse tipo de processador de textos.), ou devem ser explicitadas pelo usuário, que obterá seu documento no formato visual desejado somente após uma compilação do texto (TEX e LATEX são exemplos desse tipo de processador de texto). Marcas inseridas no documento de forma implícita (pelo programa, em resposta a determinado comando do usuário) ou explicita (pelo usuário) indicam como o processador deve dispor o texto na página. Estas marcas ou códigos são tipicamente específicos a um sistema de formatação proprietário. Cada software editor ou compilador de textos possui seu próprio conjunto de códigos com significado apenas para aquele sistema, que deverá rodar em um determinado sistema operacional ou em uma maquina especifica. Dizse destes sistemas que eles promovem uma marcação procedimental do texto, cada código indicando o procedimento a ser seguido para a apresentação do texto ao usuário. As linguagens baseadas em marcação descritiva usam marcas (ou tags) para qualificar cada objeto do texto, cumprindo um primeiro passo para transformálos em informação tratável por computador. Uma marca é tudo o que não for considerado conteúdo em um documento. A idéia básica é a de que o conteúdo do documento de vê estar separado do estilo usado em sua apresentação. Cabe, à aplicação que interpreta a linguagem de especificação, formatar o texto em tempo real e apresentálos aos usuários. 2. Linguagem de Especificação SGML 2.1. Os Princípios do SGML Standard Generalized Makrkup Language, ou simplesmente SGML, é uma (meta) linguagem criada há aproximadamente 30 anos como um esforço para se definir uma linguagem de marcas para a representação de informações em texto (Edward, 1997). A linguagem foi reconhecida como um padrão ISSO (8879) em 1986. SGML não é um conjunto predeterminado de marcas, e sim uma linguagem para se definirem quaisquer conjuntos de marcas, uma linguagem autodescritiva, cada documento SGML carrega consigo sua própria especificação formal, o Data Type Document (DTD). Nú mer O DTD é uma espécie de gramática formal criada a partir da notação Extended BackusNaur Form (EBNF), que define como as marcas devem ser interpretadas, quais as regras que restringem o uso de cada marca nos diferentes contextos do documento e, até mesmo, quando relevante for, a ordem em que as marcas devem aparecer no documento. Resumindo, SGML é uma linguagem para definir autras linguagens, ou ainda uma linguagem para conceber DTDs, tipos de documentos. 3. Linguagem de Especificação HTML 3.1. A origem e evolução de HTML No início dos anos 80, SGML passou a ser usada em várias organizações, ente as quais o CERN, Centro Europeu de Pesquisas Nucleares em Genebra, onde um pesquisador resolveu empregar a linguagem em seu programa de edição de hipertexto (Connolly et al., 1997). Assim, Tim BernersLee acabou inventando o WorldWide Web, graças a uma idéia revolucionária na época: o link (ou ligação) entre documentos que poderiam estar situados em qualquer lugar na rede de computadores de seu laboratório ou do mundo, através da Internet e do conceito de Universal Resource Locator (URL). HTML é um exemplo de linguagem originada de SGML. Ou seja, a definição formal (ou especificação, ou ainda o DTD) de HTML é construída em SGML. O HTML possui um grupo de tags predefinidos, concebidos com a função de organizar a informação a ser transferida por meio de páginas WEB. HTML é um padrão usado em milhares de aplicações, incluindo navegadores, editores, softwares de email, servidores de base de dados e outros. 3.2. Algumas caraterísticas de HTML O HTML não é uma linguagem de programação e sim uma linguagem de formatação, isto é, fornece elementos que indicam como um texto deve aparecer na página, tais como negrito e sublinhado. Também é possível inserir imagens, multimídia e outros recursos no texto. Nú mer Uma das principais características da linguagem HTML é que, diferente das outras, os arquivos HTML são escritos em texto comum legíveis para qualquer sistema operacional. A primeira coisa que se deve levar em conta ao projetar páginas para a web é que HTML não foi criada para controlar a aparência dos documentos, ao contrário dos processadores de texto e programas de layout de página. As tags de HTML apenas informam ao navegador o que são os elementos que estão na página. Cada navegador mostra a página de uma forma um pouco diferente, o que dificulta o trabalho de programação visual. Também, cada usuário pode modificar a configuração padrão de seu navegador para que o seu programa mostre o texto na fonte (tipo de caractere) que quiser. 3.3. Marcações básicas de HTML Como as páginas na Internet são documentos de texto comum, podese utilizar um editor de texto simples, como o Bloco de Notas do Windows. Existem editores de HTML que podem facilitar a confecção das páginas. É importante, também, que sejam gravados no formato texto e com a extensão .htm ou .html. Portanto, se for utilizado um processador de texto, como o Word, WordPerfect ou WordStar, o arquivo deve ser salvo no formato "somente texto". O navegador não vai entender um arquivo gravado nos formatos específicos dos processadores de texto (doc, por exemplo). A linguagem HTML utiliza marcações (tags) simples e em pares. O browser interpreta a marcação e a executa. As tags HTML estão sempre entre os sinais "menor que"(<) e "maior que" (>). Para as marcações em pares existe uma marcação de entrada (ou abertura) e de saída (ou fechamento). A diferença entre elas é de que, na de saída, colocase uma barra diagonal depois do "</". 3.4. HTML e a “guerra dos browsers” No início dos anos 90, nos seus primeiros anos de vida de 1992 a 1995, quando a Web literalmente “explodiu” no mundo todo, muitas organizações e empresas começaram a perceber que estavam bastante limitadas pela falta de flexibilidade de HTML no tocante às suas possibilidades em promover a troca mais efetiva de informações pela Web. HTML foi então estendida posteriormente a cada nova versão, de forma um tanto desorganizada, impulsionada pela conhecida guerra dos navegadores (ou browsers). E o que foi pior: estas extensões integram principalmente elementos puramente de apresentação (formato, estilo), que controlam a aparÊncia das informações nos navegadores. Como visto anteriormente, isso vai de encontro Nú mer ao paradigma das linguagens de especificação descritiva, no sentido em que estas procuram separar a estrutura e a semântica da informação de sua apresentação física (estilo). A introdução de formatação de estilo em HTML começou a tornar os documentos de difícil leitura para o homem. Tentando fazer o papel de árbitro nesta guerra, o WorldWide consortium (W3C) definiu versões mínimas que deveriam se interpretadas por todos os navegadores. O W3C é a organização que se encarrega do desenvolvimento e manutenção dos padrões da Web (para mais informações, visite www.w3c.org). Em uma de suas últimas publicação sobre HTML, o W3C incentiva a separação entre a estrutura e o visual dos documentos HTML, aspecto fundamental do paradigma, e desenvolveu as chamadas “ folhas de estilo” ou CSS (Cascading Style Sheet), que define como os elementos devem ser mostrados nos navegadores. 4. Linguagem de Especificação UML Unified Modeling Language (UML – Luinguagem de Modelagem Unificada) é uma linguagem de modelagem não proprietária de terceira geração. A Linguagem Unificada é um método aberto usado para especificar, visualizar, construir e documentar os artefatos de um sistema de software orientado a objetos. Basicamente a UML permite que desenvolvedores visualizem os produtos de seu trabalho em diagramas padronizados. Junto com uma notação gráfica, a UML também especifica significados, isto é, semântica. É uma notação independente de processos, embora o RUP (Rational Unified Process) tenha sido especificamente desenvolvido utilizando a UML. É importante distinguir entre um modelo UML e um diagrama (ou conjunto de diagramas) de UML – o último é uma representação gráfica da informação do primeiro, mas o primeiro pode existir independentemente. O XMI (XML Metadata Interchange) na sua versão corrente disponibiliza troca de modelos mas não de diagramas. 4.1. História do UML O UML tem origem na compilação das "melhores práticas de engenharia" que provaram ter sucesso na modelação de sistemas grandes e complexos. Sucedeu aos conceitos de booch, OMT (Rumbaugh) e OOSE (Jacobson) fundindoos numa Nú mer única linguagem de modelagem comum e largamente utilizada. O UML pretende ser a linguagem de modelagem padrão para modelar sistemas concorrentes e distribuídos. O UML ainda não é um padrão da indústria, mas esse objetivo está a tomar forma sob os auspícios do Object Management Group (OMG). O OMG pediu informação acerca de metodologias orientadas a objetos que pudessem criar uma linguagem rigorosa de modelização de software. Muitos líderes da indústria responderam na esperança de ajudar a criar o padrão. 5. Linguagem de Especificação XML A linguagem Extensible Markup Language (XML) é o resultado do trabalho de um grupo de especialistas estabelecido em 1986 pelo W#C, com o objetivo de propor uma simplificação de SGML que fosse voltada ‘as necessidades específicas da Web. XML é similar a HTML em vários aspectos, também é uma linguagem expressa em arquivos de texto puro (ASCII), concebida especialmente para armazenar e transmitir dados. Como uma representante do paradigma das linguagens de especificação, tratase de texto com marcas embutidas que qualificam cada unidade de informação (também referidas como entidade, elementos, ou objetos) contida no texto. Assim, um arquivo XML é constituído de elementos. Como sempre, cada elemento possui uma marca inicial (como <titulo> ou <title>), uma marca final (como </titulo> ou </title>) e a informação propriamente dita entra duas marcas. Porém, diferentemente de HTML, XML não propõe um número fixo de marcas. Um elemento XML pode ser marcado da forma que o autor do documento bem entender, ou seja, com o termo que melhor descreve a informação na sua opinião. As diversas entidades de informação contidas em um documento XML (definidas pelas marcas) são interpretadas por aplicações (um navegador Web, por exemplo) e organizadas em um modelo de Objetos onde permanecem acessíveis à aplicação. A aplicação pode assim ativar ações sobre entidades de informação. Também como já foi visto, ao invés de descrever como os dados devem ser mostrados, as marcas indicam o que cada dado significa. Qualquer agente (humano ou software) que receba este documento pode decodificálo e usar como lhe convier. Como acontece em HTML, em XML as marcas podem ser embutidas umas dentro de outras. Geralmente usase isso para determinar uma informação com significado mais específico dentro do texto. Nú mer Os aspectos semânticos das informações contidas em um documento só podem ser interpretados dentro do contexto de uma comunidade. Quanto maior a comunidade, menor é o conjunto de definições compartilhadas; quanto menor e mais focalizada a comunidade, maior será este conjunto. Como a semântica depende das definições estabelecidas em uma comunidade específica, é razoável que para se melhorar a comunicação nestas comunidades, deva existir uma abertura nas linguagens para as definições específicas de cada comunidade. XML torna isso possível, ou seja, tornase viável se capturem ontologias comunitárias sob a forma de DTD’s e assim promover uma descentralização natural do controle das especificações das linguagens de especificação. Acreditase que a emergência de estruturas de dados mais ricamente anotadas (ou especificadas) pode ser o catalisador que falta para a concepção de novas aplicações que promoverão o armazenamento, compartilhamento e processamento de conhecimento. Esta abertura é o principal atrativo da linguagem XML. Inúmeras comunidades já estão usando XML para capturar os conhecimentos específicos de suas disciplinas. 6. Linguagem de Especificação TEX TEX consiste de um compilador (um programa que processa um arquivo texto escrito seguindo regras de uma linguagem específica, gerando um “arquivoresultado”), que processa um arquivo com extensão .TEX contendo seu documento escrito em algum formato aceito por TEX (os formatos mais usados são o “Plain TeX” e “LaTeX”), e gera um arquivo com mesmo nome mas com extensão .DVI, contendo seu documento pronto para ser visualizado na tela do computador ou impresso. Obviamente você necessita um editor de texto para escrever esse arquivo TEX. Estão disponíveis vários editores que se acomodam muito bem na edição de documentos (La)TeX, como por exemplo TeXnic Center, TeXshell, WinShell, Winedt, (X)Emacs, TeXtures (mac). TEX tornouse popular no meio científico por permitir transformar todo tipo de escrito em artigos, livros, relatórios, poesia, cartas, etc, e outros formatos poderiam ser completamente determinados pelo escritor através de uma rica linguagem de tipografia. Seu inseparável aliado, METAFONT, permitia desenhar todos os caracteres (letras e símbolos matemáticos mais diversos) para seus textos. Por essas qualidades, TEX tornouse o sistema de processamento de texto “Standard” em muitos institutos e laboratórios de pesquisa. Está disponível para uma vasta gama de plataformas, desde Nú mer mainframes, Unix e VMS workstations até microcomputadores como PC's e Macintoshes. Excelentes “previewers” estão disponíveis para estas plataformas. TEX chegou a uma versão muitíssimo estável. De fato os últimos “bugs” que foram descobertos não poderiam afetar usuários que usam TEX para seu fim, produzir páginas de texto, sendo sensíveis apenas aos desenvolvedores. Então Donald Knuth decidiu congelar o desenvolvimento de TEX. Hoje TEX está na versão 3.14159 (sexta versão, pois o numero da versão é contado pelo número de dígitos de pi). 7. Referências: http://www.latexproject.org. http://pt.wikipedia.org/wiki/XML http://pt.wikipedia.org/wiki/Linguagem_de_Modelagem_Unificada http://pt.wikipedia.org/wiki/Especial:Search?search=uml&go=Artigo www.geocities.com/wallstreet/floor/5815/guide.htm www.sgml.unet.com/ www.cs.caltech.edu/~adam/papers/xml/ascentofxml.html www.nedev.com/ned011998/ned01xml.t.html Nú mer