UCPEL/CPOLI/BCC 364029 – Introdução à Ciência da Computação Exercício Prático 2 06 de maio de 2010 Instruções de Preenchimento: 1. Acesse o site da disciplina em: HTTP://infocat.ucpel.tche.br/disc/icc/ 2. Em “Notas de Aula”, no Box “Tarefas Realizadas” acesse e salve a versão digital deste documento, acrescentando o seu nome ao nome do arquivo salvo. 3. Use o editor de texto de sua preferência para completar os espaços das respostas. Seja objetivo e produza informação útil em condições de ser compartilhada em suas respostas. Introduza diagramas, links e imagens em seu documento quando for esclarecedor para as respostas. 4. Mude a apresentação a seu critério, visando melhorar a apresentação visual. 5. Gere um pdf do seu documento final e envie para [email protected] , com o Assunto “ICC – Trabalho” até a meia-noite de domingo 09/05/2010. 6. Este trabalho deve ser feito de forma absolutamente individual. As respostas de todos serão disponibilizadas on-line no site da disciplina para que possam ser fonte de informação para todos. Considere seu trabalho como a SUA contribuição. Respostas originais, criativas, . Questões: 1. O estudo da Ciência da Computação envolve vários conceitos importantes que precisam estar muito claros para os estudantes e profissionais da área. Escolha três dos conceitos abaixo, pesquise e escreva um parágrafo caracterizando e comentando o conceito. Indique suas referências (no mínimo três para cada conceito) a. Computador b. Computação c. Algoritmo d. Programa e. Processador f. Arquitetura g. Sistema Operacional h. Interface Conceito 1: Computador é uma máquina capaz de variados tipos de tratamento automático de informações ou processamento de dados. Um computador pode prover-se de inúmeros atributos, dentre eles armazenamento de dados, processamento de dados, cálculo em grande escala, desenho industrial, tratamento de imagens gráficas, realidade virtual, entretenimento e cultura. Em geral, entende-se por computador um sistema físico que realiza algum tipo de computação. Existe ainda o conceito matemático rigoroso, utilizado na teoria da computação. Conceito 2: Programas são simplesmente grandes listas de instruções para o computador executar, tais com tabelas de dados. Muitos programas de computador contêm milhões de instruções, e muitas destas instruções são executadas repetidamente. Apesar de existirem diferenças de projeto com CPU com um maior número de instruções e mais complexas, os computadores executam milhões de instruções simples combinadas, escritas por bons "programadores". Hoje em dia, muitos computadores aparentam executar vários programas ao mesmo tempo, o que é normalmente conhecido como multitarefa. Na realidade, a CPU executa as instruções de um programa por um curto período de tempo e, em seguida, troca para um outro programa e executa algumas de suas instruções. Isto cria a ilusão de vários programas sendo executados simultaneamente através do compartilhamento do tempo da CPU entre os programas. Este compartilhamento de tempo é normalmente controlado pelo sistema operacional. Nos casos em que o computador possui dois núcleos de processamento, cada núcleo processa informações de um programa, diminuindo assim o tempo de processamento. Conceito 3: é um programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema (definir qual programa recebe atenção do processador, gerenciar memória, criar um sistema de arquivos, etc.), além de fornecer uma interface entre o computador e o usuário. É o primeiro programa que a máquina executa no momento em que é ligada (num processo chamado de bootstrapping) e, a partir de então, não deixa de funcionar até que o computador seja desligado. O sistema operacional reveza sua execução com a de outros programas, como se estivesse vigiando, controlando e orquestrando todo o processo computacional. 2. Localize o ranking “Top 500 Supercomputers” e identifique os três supercomputadores mais poderosos da atualidade. Descubra os detalhes da suas arquiteturas. Visite o site dos fabricantes e das instalações. Verifique para que eles são utilizados. Insira uma tabela comparando suas principais características. Ranking Onde está? No TOP500 Oak Ridge National Laboratory 1 USA (Laboratório Nacional de Los Alamos) USA 3 Quantidade de Processadores Rmax Rpeak (TFlops) (TFlops) Jaguar - Cray XT5-HE Opteron Six Core 2.6 GHz / 2009 Potência Sistema Operacional Processador Area Aplicação 224162 1759.00 2331.00 6950.60 Linux AMD x86_64 Opteron Six Core 2600 MHz (10.4 GFlops) Pesquisa (1) BladeCenter QS22/LS21 Cluster, PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz, Voltaire Infiniband/2009/IBM 122400 1042.00 1375.78 2345.50 LInux PowerXCell 8i 3200 MHz (12.8 GFlops) Pesquisa (2) Cray XT5-HE Opteron Six Core 2.6 GHz/2009/Cray Inc. 98928 831.70 1028.85 Linux AMD x86_64 Opteron Six Core 2600 MHz (10.4 GFlops) Pesquisa Cray Inc. DOE/NNSA/LANL 2 Nome do computador/Ano da instalação ou última atualização/Fabricante National Institute for Computational Sciences/University of Tennessee USA Complementação da tabela: 1.ORNL, é um programa de pesquisas na área de ciência e teconologia, administrado pelo Departamento de Energia dos Estados Unidos. Os cientistas e engenheiros do ORNL dedicam-se basicamente ao desenvolvimento de conhecimento cientifico e criar soluções teconológicas para que a nação seja líder em áreas chave da ciência; aumentar a disponibilidade de tecnologias limpas, abundância de energia, restaurar e proteger o meio-ambiente e contribuir com a segurança nacional. 2. http://www.lanl.gov/ - os cientistas dedicam-se a pesquisa de novas tecnologias para detectar atividades nucleares, como testes nucleares; pesquisa nas áreas de meio ambiente e ecologia; estão também na área de supercomputadores; na saúde tentando encontrar a cura para doenças como HIV; engenharia e pesquisa tecnológica; e também no espaço, astronomia. 3. Instituto Nacional para Ciências da Computação da universidade do Tenssee – USA. (não consegui achar nada específico nem no site da Universidade do Tenessee) Vocabulário: 1. FLOPS(FLoating point Operations Per Second) é um acrônimo usado para medir a performance de um computador. 2. LINPACK Benchmarks, é um sistema para medir a performance de um computador, ou melhor, para medir a rapidez com que o computador resolve um sistema de equações lineares. IMAGEM DE UM TOP500 “JAGUAR” 3. O que é Computação em Nuvem? O conceito de computação em nuvem (em inglês, cloud computing) refere-se à utilização da memória e das capacidades de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grade. O armazenamento de dados é feito em servidores que poderão ser acessados de qualquer lugar do mundo, a qualquer hora, não havendo necessidade de instalação de programas, serviços ou de armazenar dados. O acesso a programas, serviços e arquivos é remoto, através da Internet - daí a alusão à nuvem. O uso desse modelo é mais viável do que o uso de unidades físicas. Num sistema operacional disponível na Internet, a partir de qualquer computador e em qualquer lugar, pode-se ter acesso a informações, arquivos e programas num sistema único, independente de plataforma. O requisito mínimo é um computador compatível com os recursos disponíveis na Internet). O PC torna-se apenas um chip ligado à Internet -- a "grande nuvem" de computadores -- sendo necessários somente os dispositivos de entrada (teclado, mouse) e saída (monitor). No Brasil - a tecnologia de computação em nuvem ainda é muito recente e está fora da realidade da maioria das organizações de médio e pequeno porte, pois a infraestrutura de telecomunicações do país é deficiente. Os primeiros testes foram implementados em 2007, sendo que somente em 2008 começou a ser oferecido comercialmente. A empresa Katri foi a primeira a desenvolver a tecnologia no Brasil, em 2002, batizando-a IUGU. Aplicada inicialmente no site de busca de pessoas físicas e jurídicas Fonelista. Durante o período em que esteve no ar, de 2002 a 2008, os usuários do site puderam comprovar a grande diferença de velocidade nas pesquisas proporcionada pelo processamento paralelo. Em 2009, a tecnologia evoluiu muito, e sistemas funcionais desenvolvidos no início da década já passam de sua 3ª geração, incorporando funcionalidades e utilizando de tecnologias como "índices invertidos" (inverted index). A empresa Indústria Virtual lançou em 2009 a versão 2.0 do sistema WebCenter e está popularizando a utilização da computação em nuvem, trazendo ferramentas que facilitam a utilização desses novos recursos, tanto por empresas como por pessoas físicas . COMPUTAÇÃO EM NUVEM 4. O que é Computação Quântica? Um computador quântico é um dispositivo que executa cálculos fazendo uso direto de propriedades da mecânica quântica, tais como sobreposição e interferência. Teoricamente, computadores quânticos podem ser implementados e o mais desenvolvido atualmente trabalha com poucos qubits de informação. O principal ganho desses computadores é a possibilidade de resolver em tempo eficiente, alguns problemas que na computação clássica levariam tempo impraticável (exponencial no tamanho da entrada), como por exemplo, a fatoração em primos de números naturais. A redução do tempo de resolução deste problema possibilitaria a quebra da maioria dos sistemas de criptografia usados atualmente. Contudo, o computador quântico ofereceria um novo esquema de canal mais seguro. Computadores quânticos são diferentes de computadores clássicos tais como computadores de DNA e computadores baseados em transístores, ainda que estes utilizem alguns efeitos da mecânica quântica. ESTRUTURA DOS COMPUTADORES QUÂNTICOS Em mecânica quântica, é possível que uma partícula esteja em dois ou mais estados ao mesmo tempo. Uma famosa metáfora denominada o gato de Schrödinger expressa esta realidade: imagine que um gato está dentro de uma caixa, com 50% de chances de estar vivo e 50% de chances de estar morto, para a mecânica quântica, até abrirmos a caixa e verificarmos como está o gato, ele deve ser considerado vivo e morto ao mesmo tempo. A esta capacidade de estar simultaneamente em vários estados chama-se superposição. Um computador clássico tem uma memória feita de bits. Cada bit guarda um "1" ou um "0" de informação. Um computador quântico mantém um conjunto de qubits. Um qubit pode conter um "1", um "0" ou uma sobreposição destes. Em outras palavras, pode conter tanto um "1" como um "0" ao mesmo tempo. O computador quântico funciona pela manipulação destes qubits. Um computador quântico pode ser implementado com alguns sistemas com partículas pequenas, desde que obedeçam à natureza descrita pela mecânica quântica. Pode-se construir computadores quânticos com átomos que podem estar excitados e não excitados ao mesmo tempo, ou com fótons que podem estar em dois lugares ao mesmo tempo, ou com prótons e nêutrons, ou ainda com elétrons e pósitrons que podem ter um spin ao mesmo tempo "para cima" e "para baixo" e se movimentam em velocidades próximas à da luz. Com a utilização destes, ao invés de nano-cristais de silício, o computador quântico é menor que um computador tradicional. Uma molécula microscópica pode conter muitos milhares de prótons e nêutrons, e pode ser usada como computador quântico com muitos milhares de qubits. A grande questão a ser resolvida hoje para a implementação destas máquinas é a capacidade de controlar este sistema, já que as interferências são grandes e o tempo de coerência dos estados das partículas, pequeno. O PODER DOS COMPUTADORES QUÂNTICOS Encontrar todos os fatores primos de um número grande pode ser uma tarefa muito difícil. Um computador quântico poderia resolver este problema muito rapidamente. Se um número tiver n bits (ou seja, se tiver o comprimento de n dígitos quando escrito em binário), então um computador quântico com um pouco mais de 2n qubits poderá encontrar os seus fatores. Também poderá solucionar um problema relacionado, chamado problema do logaritmo discreto. Esta capacidade poderia permitir a um computador quântico quebrar qualquer dos sistemas criptográficos atualmente em uso. A maior parte das cifras de chave pública mais populares poderiam ser quebradas com rapidez, incluindo formas da cifras RSA, ElGammal e Diffie-Helman. Estas cifras são utilizadas para proteger páginas web seguras, email encriptado e muitos outros tipos de dados. A quebra destes códigos poderia ter um impacto significativo. A única forma de tornar seguro um algoritmo com o RSA seria tornar o tamanho da chave maior do que o maior computador quântico que pudesse ser construído. Parece provável que possa sempre ser possível construir computadores clássicos com mais bits que o número de qubits no maior computador quântico, e se se verificar que isto é verdade, então algoritmos como o RSA poderão permanecer seguros. Se um computador quântico fosse baseado nos prótons e nêutrons de uma molécula, seria talvez demasiado pequeno para ser visível, mas poderia factorizar números inteiros com milhares de bits. Um computador clássico a correr algoritmos conhecidos também poderia factorizar estes números, mas para o conseguir fazer antes que o sol desaparecesse, teria de ser maior que universo conhecido. Seria algo inconveniente construí-lo. Não surpreendentemente, os computadores quânticos poderiam também ser úteis para correr simulações de mecânica quântica. O aumento de velocidade poderia ser tão grande como para factorizações. Isto poderia trazer grandes benefícios a muitos físicos. Atualmente se sabe que essa vantagem dos computadores quânticos existe apenas para os três problemas seguintes: fatoração, logaritmo discreto e simulações de física quântica. Existe outro problema em que os computadores quânticos têm uma vantagem maior, porém menos significativa, a busca quântica em base de dados, à qual é referida algumas vezes por square root speedup. Suponha que existe um problema como encontrar a senha para desencriptar um arquivo. O problema possui as quatro propriedades: A única forma de resolvê-lo é chutar respostas repetidamente e verificá-las Existem n respostas possíveis para se verificar Toda resposta possível gasta o mesmo tempo de verificação Não existem pistas indicando quais respostas sejam melhores. Gerar as possibilidades aleatoriamente é tão eficiente quanto verificá-las em alguma ordem especial Problemas com todas as quatro propriedades levarão uma média de n/2 tentativas para encontrar a resposta usando um computador clássico. O tempo gasto por um computador quântico seria proporcional à raiz quadrada de n. Isso pode representar um ganho enorme, encurtando o tempo para solução de alguns problemas de anos para segundos. Essa vantagem pode ser usada para atacar cifras simétricas tais como o 3DES e AES. Porém a defesa contra tal ataque é fácil, consistindo em dobrar o tamanho da chave para a cifra. Há também mais métodos complicados para tornar uma comunicação segura, tal como usar Criptografia Quântica. Atualmente não há outro problema prático conhecido para o qual os computadores quânticos mostrem um ganho expressivo sobre os computadores clássicos. As pesquisas continuam, e mais problemas podem, então, ser identificados. Embora computadores quânticos sejam algumas vezes mais rápidos que os computadores clássicos, eles não podem solucionar problemas que computadores clássicos não podem resolver, tendo tempo e memória suficientes. Uma Máquina de Turing pode simular um computador quântico, então um computador quântico nunca poderá solucionar um problema sem a capacidade de decisão parecido com o Problema da parada. A existência de computadores quânticos não pode refutar a tese de Church-Turing. 5. O que é Web Semântica? A Web semântica é uma extensão da Web atual, que permitirá aos computadores e humanos trabalharem em cooperação. A Web semântica interliga significados de palavras e, neste âmbito, tem como finalidade conseguir atribuir um significado aos conteúdos publicados na Internet de modo que seja perceptível tanto pelo humano como pelo computador. A idéia da Web Semântica surgiu em 2001, quando Tim Berners-Lee, James Hendler e Ora Lassila publicaram um artigo na revista Scientific American, intitulado: “Web Semântica: um novo formato de conteúdo para a Web que tem significado para computadores vai iniciar uma revolução de novas possibilidades.” O objetivo principal da Web semântica não é, pelo menos para já, treinar as máquinas para que se comportem como pessoas, mas sim desenvolver tecnologias e linguagens que tornem a informação legível para as máquinas. A finalidade passa pelo desenvolvimento de um modelo tecnológico que permita a partilha global de conhecimento assistido por máquinas (W3C 2001). A integração das linguagens ou tecnologias eXtensible Markup Language (XML), Resource Description Framework (RDF), arquiteturas de meta-dados, ontologias, agentes computacionais, entre outras, favorecerá o aparecimento de serviços Web que garantam a interoperabilidade e cooperação. Ultimamente tem-se associado Web Semântica a Web 3.0, como um próximo movimento da Internet depois da Web 2.0 que já inicia seu crescimento. DEMONSTRAÇÃO DA ESTRUTURA DA REDE SEMÂNTICA 6. Selecione um perfil profissional que você considera interessante na área de Ciência da Computação e descreva as atividades e o dia a dia associado a um profissional com este perfil. O Cientista da Computação é hoje um dos profissionais mais versáteis da área de Informática. Seus conhecimentos lhe permitem atuar em diferentes atividades e em múltiplos contextos, resolvendo questões que estão além do alcance dos profissionais de outras áreas. Pode criar e adaptar as características mais profundas de um sistema complexo, constituído, por vezes, por um grande número de computadores, às necessidades de seus usuários, deixando ainda uma gama de opções para eventuais alterações e adaptações futuras. Pode, também, contribuir por meio de pesquisas e estudos para o desenvolvimento da própria Computação, desenvolvendo teorias e aplicações para as novas tecnologias que surgem continuamente. Pode arcar ainda com quaisquer das tarefas comuns aos analistas de sistemas e projetistas de sistemas de informação. Acho muito interessante a área de pesquisa de novas tecnologias, por estar ainda muito no início do curso não tenho bem clara a área que quero seguir, sinceramente ainda não sei bem o que vou fazer quando me formar no curso, pois ainda não tenho vivência para definir o que vou fazer com o conhecimento que estou adquirindo. Como trabalho há muito tempo na área administrativa e em todas as empresas nas quais trabalhei e na empresa que ainda trabalho, sempre enfrentei uma dificuldade que foi a falta de um sistema integrado com a contabilidade. Seria algo bem específico para associar administração (gerencial e técnica) com a contabilidade, de forma que seja oferecido ao empresário (pequeno) um maior controle dos seus negócios de maneira simples e com uma ampla visão do “todo”. Deveria ser algo versátil e que possa ser acessado de qualquer local onde o empresário ou administrador estiver. São idéias meio vagas, mas penso muito nisso, em desenvolver algo “barato” e prático mas que seja muito funcional então, como tenho bastante experiência na área administrativa-financeira e um bom conhecimento de contabilidade acredito que vá me dedicar a isso mas também penso em que no decorrer do meu aprendizado eu possa mudar minha idéia. Gosto muito da área de pesquisa, sonho em fazer algo importante que ajude a sociedade de um modo geral, mas como disse preciso ainda ver se vou conseguir terminar o curso que é tão difícil e ver o que vou aprender para ter certeza do que quero e vou gostar de fazer. De qualquer maneira pretendo que com essa nova profissão eu conquiste a independência, o fim do medo, medo do desemprego...