1/23/2009. Quais as forças que atuam sobre a asa de uma nova aeronave sendo projetada? Onde fica a rua do porto?

Documentos relacionados
WebMedia 2009 Minicurso 3 Parte 3: Modelagem Parte 3 MODELAGEM 1

CP Compiladores I Prof. Msc.. Carlos de Salles

1/26/2009. Metamodelo MMA. Metamodelo MMB. Modelo A2. Modelo A. Modelo B. Transformação M2M

Introdução à Programação

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Linguagens de Domínio Específico

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

Autômatos e Linguagens

Projeto de Compiladores

Compiladores. Conceitos Básicos

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Conceitos de Linguagens de Programação

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

Compiladores 02 Analise léxica

Compiladores I Prof. Ricardo Santos (cap 1)

Compiladores. Introdução

V.2 Especificação Sintática de Linguagens de Programação

Projeto de Compiladores

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica

Compiladores. Fabio Mascarenhas

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Linguagens de Programação

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

Paradigmas de Linguagem de Programação. Aspectos Básicos

Sergio Roberto de Mello Canovas Carlos Eduardo Cugnasca WTA 2015

Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas. Prof. Valdemar Neto INF-UFG

Linguagens de Programação Aula 3

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Compiladores. Lex e Yacc / Flex e Bison. Ferramentas Flex/Bison

Compiladores Análise Semântica

Hierarquia de Chomsky e sua relação com os autômatos

CAP. VI ANÁLISE SEMÂNTICA

Nomes, vinculações e escopos

Visão Geral... e conceitos básicos

Compiladores. Análise Léxica

1.1. Declaração do Problema e Limitações dos Trabalhos Relacionados Um Framework Conceitual para SMAs

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Requisitos de sistemas

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

Capítulo 1. Aspectos Preliminares

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Análise e projeto de sistemas

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

Q d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )

FACULDADE LEÃO SAMPAIO

UML (Unified Modelling Language)

Nomes, vinculações e escopos

Compiladores Aula 1. Celso Olivete Júnior.

UML. Adriano J. Holanda 21/3/

3 Tecnologias Relacionadas

Linguagens e Compiladores

COMPILADORES PROGRAMA E BIBLIOGRAFIA

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

Linguagens de Programação Classificação

Introdução parte II. Compiladores. Mariella Berger

Compiladores. Prof. Bruno Moreno

XML - Extensible Markup Language

Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador

As fases de um compilador

3. Linguagem de Programação C

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Linguagens de Domínio Específico

Unidade: Introdução à POO (Programação Orientada a Objetos)

DIAGRAMAS UML NA VERIFICAÇÃO FORMAL DE SOFTWARE

Técnicas para Reutilização de Software

As fases de um compilador

Formas de Gerência de Dados XML

INF1013 MODELAGEM DE SOFTWARE

Interfaces de Vanguarda do Compilador

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Introdução as Máquinas de Autômatos

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Projeto de Linguagem. Linguagens de Programação

Compiladores - JACC. Fabio Mascarenhas

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Analisador Léxico parte II

Projeto de Banco de Dados. Componentes de um Sistema de Informação. Arquitetura de SI. Sistema de Informação (SI) SI nas Organizações

Compiladores Ficha de exercícios práticos

LINGUAGEM E TECNICAS DE PROGRAMAÇÃO

Construção de Compiladores

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Transcrição:

Onde fica a rua do porto? Siga reto nessa rua mesmo, depois vire à direita no semáforo. Passe um posto de gasolina, é a terceira rua! www.oliverdominguez.com Quais as forças que atuam sobre a asa de uma nova aeronave sendo projetada?

Como ficará a ocupação urbana da capital Xangai em 2020? Pedro tem dois irmãos Daqui a cinco anos, o mais novo terá a metade da idade de Pedro Daqui a dez anos, o mais velho terá o triplo da idade do mais novo Quantos anos tem Pedro e os irmãos? O uso de modelos pode ajudar a respondê-las Modelos abstraem detalhes Modelos representam conceitos Modelos possuem informação útil Modelos são fáceis de compreender Outras propriedades... 2

/23/2009 maps.google.com 3

Idade de Pedro hoje = x Idade do irmão mais novo hoje = y Idade do irmão mais velho hoje = z Sistema y+5 = (x+5)/2 z+0 = (y+0)3 Modelo de Classes Modelo de interface Requisitos Rabiscos Modelo de Dados Modelo de Casos de Uso Modelo de Componentes Um modelo de um sistema é uma descrição ou especificação daquele sistema e seu ambiente, para um determinado propósito. Um modelo é frequentemente apresentado como uma combinação de desenhos e texto. O texto pode ser em uma linguagem de modelagem ou uma linguagem natural. 4

Modelos devem servir de entrada para geradores, transformadores, etc... Portanto, precisam ser automaticamente intepretáveis Por uma máquina Capacidade cognitiva limitada Devem ser Estruturados Formalmente definidos Sintaticamente corretos Completos Não ambíguos... Calculadora Some 56 com treze, e depois quarenta e cinco. Do total, subtraia cinquenta e sete. Tudo isso vezes meia-meia. 56 +3 +45-57 66 Software que entende um modelo Realiza ações Demonstração - calculadora 5

Preciso de: Um formato que o computador entenda Um analisador Dentro da ciência da computação Compiladores Linguagens Autômatos Linguagem natural Ainda está distante... Análise-Síntese Lê um programa em uma linguagem de origem Escreve um programa equivalente em uma linguagem de destino Exibe erros Analisador três fases Análise linear Caracteres são lidos, da esquerda para a direita Agrupados em tokens (sequência de caracteres que possuem um significado coletivo) Análise hierárquica Tokens são agrupados em coleções que possuem um significado Análise semântica Verificações para garantir que os componentes do programa fazem sentido 6

Análise linear Análise léxica ou scanning posicao := inicial + taxa 60. Identificador posicao 2. Sinal de atribuição := 3. Identificador inicial 4. Sinal de soma + 5. Identificador taxa 6. Sinal de multiplicação 7. Número 60 Expressões regulares Definem as combinações de caracteres que caracterizam um token Tokens: { Sinal de Atribuição = :=, Sinal de Soma = +, Sinal de Multiplicação =, Número = ( - )?[0-9]+, Identificador = [a-za-z][a-za-z0-9] } posicao := inicial + taxa 60 Tokens: { Sinal de Atribuição = :=, Sinal de Soma = +, Sinal de Multiplicação =, Número = ( - )?[0-9]+, Identificador = [a-za-z][a-za-z0-9] } 7

posicao igual inicial mais taxa vezes 60 Tokens: { Sinal de Atribuição = igual, Sinal de Soma = mais, Sinal de Multiplicação = vezes, Número = ( - )?[0-9]+, Identificador = [a-za-z][a-za-z0-9] } Análise hierárquica Análise sintática ou parsing Atribuição Identificador posicao := + Identificador inicial Identificador taxa Número 60 Regras sintáticas Atribuição Identificador := ; Identificador Número + ; 8

posicao := inicial + taxa 60 Atribuição Identificador := ; Identificador Número + ; Atribuição Identificador posicao := inicial + taxa 60 + Identificador taxa 60 inicial Identificador taxa Número 60 posicao := inicial + taxa 60 Atribuição Identificador := ; Identificador Número + ; Atribuição Identificador posicao Identificador inicial := + Identificador taxa Número 60 Programa prog { (Comando ; ) } ; Comando Atribuição Laço Se; Atribuição Identificador := ; Identificador Número + ; Laço... prog { a = 2; b = a + 5; se (b < 4) a = 0; } 9

Análise semântica Checagens diversas (tipo, declaração, etc) prog { a = 2.573f; b = a + 5; se (a == 5 && c < 4) a = 0; } Sintaxe abstrata vs sintaxe concreta Atribuição Identificador posicao := + Identificador inicial Identificador taxa Número 60 Sintaxe abstrata vs sintaxe concreta Atribuição Identificador t id t2 Identificador t3 id2 Identificador id3 Número n 0

id t id2 t2 id3 t3 n posicao := inicial + taxa 60 Sintaxe abstrata Voltada ao compilador Estrutura Formalismo Validade Computabilidade Sintaxe concreta Voltada ao programador Aparência Legibilidade Expressividade Muito mais detalhes Implementação Otimizações Técnicas/abordagens Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman - Compiladores Princípios, Técnicas e Ferramentas Editora: Ltc, 995

Modelo Representação, abstração, especificação... Sistema / ambiente Propósito Linguagem de modelagem Linguagem Interpretada por uma máquina Técnicas de compiladores Objeto Linguagem Sintaxe abstrata Tamanho Peso Sintaxe concreta Alavanca Comprimento Força Ponto de apoio Pessoa Idade Objeto o ( Tamanho (3,4,2) Peso 20kg ) Pessoa p ( Idade 20 ) Objeto o ( Tamanho (3,4,2) Peso 20kg ) Pessoa p ( Altura,80 ) public class Objeto { int larg, alt, prof; float peso; } public class pessoa { int altura; } 2 Tarefa impossível! São necessárias: -3 pessoas (>,70) -6 alavancas (> 5.5m) 3 20kg 4 7 2

AST Parsing Ações semânticas Objeto o ( Tamanho (3,4,2) Peso 20kg ) Pessoa p ( Altura,80 ) Geração de código Execução canônica Cálculos Demonstração São boas para modelos hierárquicos (árvore) Classes, Tabelas, Objetos, Atributos, etc São boas para aspectos de algoritmos Sequência de passos, comandos Expressões regulares Funcionam bem com sistemas de controle de versões (CVS, SVN,...) 3

Linguagens textuais Árvores Sempre que é necessária uma referência Precisa percorrer a árvore novamente Demonstração Utilizar um modelo Orientado a Objetos Sintaxe abstrata Ainda precisa percorrer várias vezes a árvore Porém, uma vez lida, a informação fica mais fácil de ser consultada Demonstração public class Endereco { String rua; int numero; } Pessoa public class Pessoa { String nome; enderecoprofissional Endereco enderecoresidencial; Endereco enderecoprofissional; } Endereco rua:string numero:int enderecoresidencial 4

public class Pessoa { String nome; Endereco enderecoresidencial; Endereco enderecoprofissional; } Pessoa public class Endereco { String rua; int numero; } enderecoprofissional Endereco rua:string numero:int?? enderecoresidencial Programas Sentenças Palavras Caracteres Regras Léxicas Sintáticas Parsers precisavam ser implementados à mão Tabela de símbolos Máquina de estados Otimizações Obs: para linguagens complexas, ainda é necessário 5

Compiler Compiler Ou geradores de compiladores Parser generators YACC, ANTLR,... Regras (léxica + sintática) CC Parser Código Ferramentas para Modelagem Textual Parser + Metamodelo Eclipse TCS Textual Concrete Syntax Xtext (OpenArchitectureWare) Regras (léxica + sintática) CC Parser API metamodelo Código Facilita a construção de interpretadores Maior flexibilidade Poder computacional Facilidade de manutenção Mudanças nas regras são propagadas para o parser e metamodelo Demonstração Xtext 6

XML (extensible Markup Language) SAX Simple API for XML À base de eventos Árvore é percorrida e eventos são disparados quando elementos são encontrados DOM Document Object Model Modelo OO do documento Vantagens Parsers já existem! Permite a checagem de metadados XMLSchema / DTD Consulta facilitada (XPath) Desvantagens Baixa legibilidade Prejudica seu poder expressivo Ainda é uma árvore! Demonstração Para as linguagens que são naturalmente grafos Modelos estruturais (arquiteturas, topologias, etc) Diagramas blocos e setas Orientação a Objetos Entidade-Relacionamento Muitos outros Sintaxe abstrata orientada a objetos 7

Sintaxe Abstrata Concreta Sintaxe abstrata Modelo orientado a objetos Estrutura dos modelos (classes, relacionamentos, herança, atributos,...) MetaModelo atributos ClasseUML lados AssociaçãoUML AtributoUML tipo:string 2 LadoAssociaçãoUML multiplicidade: String participante AgregaçãoUML referencia:boolean Produto:ClasseUML Cliente:ClasseUML produto fabricante:string email:string preço:currency fone:string Compra:ClasseUML data:date depto comprador Departamento:ClasseUML obj:cliente nome = João 0/03/2008 email=joao@email.com fone=6 3627 46 obj2:cliente nome = Pedro email=pedro@bol.com fone= 342 566 obj3:produto nome = Secadora fabricante = Brastemp preço = R$ 2600,00 depto = Eletrodomésticos obj4:departamento nome = Eletrodomésticos 8

AssociaçãoUML atributos ClasseUML lados Metamodelo AtributoUML 2 tipo:string LadoAssociaçãoUML AgregaçãoUML multiplicidade: String referencia:boolean participante Produto:ClasseUML Cliente:ClasseUML produto Modelo fabricante:string email:string preço:currency fone:string Departamento:ClasseUML Compra:ClasseUML data:date depto comprador obj:cliente nome = João 0/03/2008 email=joao@email.com obj3:produto Informação fone=6 3627 46 nome = Secadora fabricante = Brastemp preço = R$ 2600,00 obj2:cliente depto = Eletrodomésticos obj4:departamento nome = Pedro nome = Eletrodomésticos email=pedro@bol.com fone= 342 566 M2 AssociaçãoUML atributos ClasseUML lados Metametadados AtributoUML 2 tipo:string LadoAssociaçãoUML AgregaçãoUML multiplicidade: String referencia:boolean participante Cliente:ClasseUML email:string fone:string M comprador Produto:ClasseUML produto Metadados fabricante:string preço:currency Departamento:ClasseUML Compra:ClasseUML data:date depto obj:cliente nome = João 0/03/2008 email=joao@email.com obj3:produto Dados fone=6 3627 46 nome = Secadora fabricante = Brastemp preço = R$ 2600,00 obj2:cliente depto = Eletrodomésticos nome = Pedro email=pedro@bol.com fone= 342 566 M0 obj4:departamento nome = Eletrodomésticos atributos Entidade Relacionamento Atributo Papel cardinalidade: {,N} participante 3 papéis Cliente Fabricante Nome N Produto Nome Departamento Nome E-mail Tabela Clientes ID Nome E-mail João joao@email.com 2 Pedro pedro@email.com Tabela Produtos ID Nome Fabricante DeptoID Secadora Brastemp 2 Fogão Dako 2 Tabela Departamentos ID Nome Eletrodomésticos 2 Cozinha Restrição de chave estrangeira Produtos(DeptoID) Departamentos(ID) 9

Objeto tipo Mensagem ordem:int conteudo:string de para Classe 5: verifica() 4: envia(txt) s:sms c:central 3: conecta(nro) : new() :AplicativoMIDP 2: enviatexto( 92-8282, Mensagem ) public class SMS { public Central c; public void enviatexto(string nro, String txt) { c.conecta(nro); c.envia(txt); c.verifica(); } } public class Central { public void conecta(string nro) {... } public void envia(string txt) {... } public void verifica() {... } } public class AplicativoMIDP { void main{ SMS s = new SMS(); s.enviatexto( 92-8282, Mensagem ); } } Metamodelo Colaboração UML Mensagem ordem:int conteudo:string Objeto tipo Classe de para Metamodelo E-R atributos Entidade Relacionamento Atributo Papel cardinalidade: {,N} participante 3 papéis Metamodelo Classes UML atributos ClasseUML lados AssociaçãoUML AtributoUML tipo:string 2 LadoAssociaçãoUML multiplicidade: String participante AgregaçãoUML referencia:boolean M3 Metametamodelo Metametametadados Metametamodelo M2 Metamodelo Metametadados Metamodelo UML Metamodelo E-R M Modelo Metadados Modelo de classes Modelo E-R Modelo de colaboração M0 Informação Dados objetos objetos tabelas tabelas programas 20

Deve ser rica o bastante para descrever modelos de vários domínios Portanto, deve ser capaz de descrever a si mesma MOF Meta-Object Facility OMG Diagrama classes UML simplificado Ecore Eclipse EMF MOF adaptado para maior eficiência MetaGME MIC Vanderbilt Generic Modeling Environment Sintaxe abstrata Voltada ao computador Metamodelo Sintaxe concreta Voltada ao ser humano Ícones Caixas Linhas Setas Cores... Múltiplas sintaxes concretas Exemplo Diagrama de sequência Diagrama de colaboração 2

GME Demonstração Através de API Como no exemplo no início desta apresentação Benefícios da orientação a objetos Métodos Coleções Referências Builder Object Network (GME) Originalmente em C++ Existe uma versão em Java Demonstração Visual (estrutura) Analisar a tarefa Linguagem Abstrata Concreta Analisar o domínio do problema Domínio Modelo Textual (hierarquia, algoritmo) Gerar código Simular Experimentar Problema Testar Analisar 22

Especialista do domínio Especialista em TI finanças medicina economia jogos turismo geologia esportes Problema MODELOS componentes classes subrotinas frameworks bits código máquina padrões bytes objetos Solução Como definir linguagem Ferramentas para linguagem Visual Textual E quanto à UML? Modelagem de software não é sinônimo de UML? É a linguagem mais conhecida Com maior suporte de ferramentas Grande documentação Supre as principais necessidades Análise, casos de uso, negócio, aspectos estáticos e dinâmicos, componentes, implantação... 23

Um organograma Um circuito elétrico Um esquema físico de BD Uma GUI Mesmo com perfis Ainda tem pouca capacidade expressiva Fica preso à semântica da UML No contexto do MDD É uma falha grave Domínios técnicos (horizontais): aspectos técnicos comuns a diversas aplicações Distribuição GUI Persistência Domínios funcionais (verticais): aspectos de negócio, organizacionais Bancos Finanças Seguros Aeronáutica Sistemas automotivos Sistemas embarcados Diesel Controladores de motor Gas 24

Sistemas web E-Commerce Aplicações ebusiness E-Banking Sistema Persistência GUI Comunicação Transações Segurança E-commerce Web Compras Cartão de crédito Boleto Fórum Showroom Sistemas automotivos Linguagens de modelagem de propósito geral GPL General Purpose Language Sistemas embarcados Controladores de motor Diesel Gas Sistemas web E-Commerce Aplicações ebusiness E-Banking 25

Focada Em um problema Em uma organização Em um projeto Linguagem pequena, normalmente declarativa, que oferece poder expressivo focado em um domínio de problema em particular Arie van Deursen, Paul Klint, and Joost Visser. Domain-specific languages: An annotated bibliography. SIGPLAN Notices - ACM Press, 35(6):2636, 2000. Sistemas embarcados Sistemas automotivos Controladores de motor Diesel Gas Linguagens de modelagem de propósito geral GPL General Purpose Language Linguagens específicas de domínio DSL Domain-Specific Language Sistemas web E-Commerce Aplicações ebusiness E-Banking Eficiência Produtividade Dificuldade na implementação GPL DSL Aplicabilidade (nro. de cenários) Facilidade de utilização (ferramentas prontas) 26

Eficiência Produtividade Tecnologia de DSL MDA Ferramentas atuais Dificuldade na implementação Aplicabilidade (nro. de cenários) Facilidade de utilização (ferramentas prontas) GPL DSL Flexibilidade Proximidade do domínio Possibilidade de customização ) Defina uma gramática para a linguagem SQL abaixo SELECT tabela. campo, tabela. campo2, tabela2. campo3 FROM tabela, tabela2 WHERE tabela. campo = tabela2.campo AND tabela. campo2 = tabela2. campo2 Exemplo: Consulta : SELECT Campos From Tabelas...; Campos:... 27

2) Esboce o metamodelo OO criado para esta linguagem Exemplo: Consulta Campos... Preciso ler arquivos de dados Os arquivos estão em um formato texto Cada linha do arquivo é uma sequência de campos separados por um caractere qualquer Cada linha pode ser um tipo de registro diferente, os três primeiros caracteres indicam o tipo Cada registro possui um identificador, localizado nos três caracteres após o tipo Podem existir referências entre os registros, indicadas através do identificador PES00:João:END00:6-4242-5535 PES002:Carlos:END002:2-5324-0098 END00:Rua treze de maio:35:jardim II:São Carlos:SP PES003:Maria:END00:6-3565-233 END002:Rua central:000:centro:são Paulo:SP DEP00:Pedrinho:0:PES00 DEP002:Paulinho:5:PES00 DEP003:Sofia::PES003 28

Defina uma linguagem textual para descrever os tipos de registros (estilo JavaBeans) Defina uma linguagem textual para descrever o formato do arquivo, relacionando-a com os tipos de registros Defina o metamodelo para a seguinte linguagem visual: Início Questão 5 Questão 2 Resposta Resposta 4 Resposta 5 Resposta 8 Resposta 2 Questão 6 Questão Questão 3 Resposta 6 Resposta 9 Mensagem 2 Resposta 3 Questão 4 Mensagem Resposta 7 Defina o metamodelo para definir conexões físicas de rede, com os elementos: Computador Nome Endereço IP HUB Nome Portas Roteador Nome Endereço IP Portas 29

Sugestões: Qual linguagem de metamodelagem é melhor? Ecore, MOF ou MetaGME? É possível criar modelos visuais fora do padrão blocos e setas? É possível combinar modelos visuais e textuais? Quanto está custando o kg da picanha bovina? Sério! Vai ter coffe break?? Estamos sozinhos no universo? Soluções de valor zero matematicamente interessantes da função zeta de Riemann todas tem uma forma a + bi? Os matemáticos conseguirão libertar os poderes das equações de Navier-Stokes? 30