Análise de Dados em Oc. Física Aula 1 - Introdução Paulo S. Polito, Ph.D. polito@usp.br Instituto Oceanográfico da Universidade de São Paulo P. S. Polito (IOUSP) Análise de Dados em Oc. Física 1 / 26
Roteiro 1 Hardware Evolução Como Funciona 2 Software Linguagem de Máquina Linguagens de Programação Compiladores e Interpretadores Vantagens e Desvantagens P. S. Polito (IOUSP) Análise de Dados em Oc. Física 2 / 26
Roteiro Hardware 1 Hardware Evolução Como Funciona 2 Software Linguagem de Máquina Linguagens de Programação Compiladores e Interpretadores Vantagens e Desvantagens P. S. Polito (IOUSP) Análise de Dados em Oc. Física 3 / 26
Computadores Hardware Evolução Analisar dados implica em armazenar e processar informação. ENIAC, IBM 360, laptop, IBM roadrunner. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 4 / 26
Tendências Hardware Evolução Moravec, H.: When will computer hardware match the human brain? Journal of Evolution and Technology. 1998. Vol. 1. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 5 / 26
Hardware Como Funciona O Modelo de von Neumann (1940) CPU: Unidade Central de Processamento Unidade de Controle, Unidade de Aritmética e Lógica (ALU), Registradores, Input/Output básico. Input: rede, teclado, leitor de DVD, mouse, scanner. Output: rede, impressora, monitor, gravador de CD, DVD. Memória volátil, de trabalho: RAM, cache. Memória permanente: HD, USB drive, mídia de CD/DVD. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 6 / 26
Hardware Como Funciona Um Esquema de Placa mãe CPU, memória RAM. Controle audio, vídeo, discos. Controle de interfaces serial, USB, firewire. Controle de comunicação via modem, ethernet. BIOS (boot). P. S. Polito (IOUSP) Análise de Dados em Oc. Física 7 / 26
Hardware Como Funciona Na Prática... Além da placa mãe, no gabinete vão: HD, CD, DVD. Coolers (ventiladores). Fonte de alimentação (110V 3.5, 5 e 12V). Cabos, fios, conectores e jumpers. Placas de vídeo, audio, rede etc. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 8 / 26
Hardware Como Funciona Dentro da CPU Podemos dividir a CPU em três blocos: Unidade de controle: é quem organiza para onde os números são enviados e coordena o processamento, como um maestro. Unidade de aritimética e lógica: é quem efetivamente faz as contas, como os músicos. Que contas são essas? + = > <. Só isso. Memória temporária: acumuladores, guardam o resultado das contas; registradores de dados, guardam os números que serão usados nas contas; registradores de endereço, guardam endereços de memória; registradores de uso geral. memória cache, intermedia a troca de dados entre a CPU e a memória RAM. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 9 / 26
Hardware Há memórias e memórias Como Funciona As memórias que nossos programas usam para guardar dados são externas à CPU: Volátil (i.e. perde se desligar): RAM Permanente (i.e. não se perde ao desligar): discos, DVD, SSD, fita Os dados ficam na CPU durante as contas. Em termos relativos: Registradores/acumuladores é extremamente reduzida (Bytes), caríssima e rápidíssima. Cache é muito limitada (MB), caríssima e rápidíssima. RAM é pequena (MB), cara e rápida. SSDs são pequenos (GB), caros e rápidos. HDs são grandes (TB), baratos e lentos. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 10 / 26
Roteiro Software 1 Hardware Evolução Como Funciona 2 Software Linguagem de Máquina Linguagens de Programação Compiladores e Interpretadores Vantagens e Desvantagens P. S. Polito (IOUSP) Análise de Dados em Oc. Física 11 / 26
Software Linguagem de Máquina Porque Binários? A parte importante é a prateada, são camadas de silício. Nelas temos uns 2 milhões de transistores. Transistores e circuitos de memória tem 2 estados: ligado e desligado. ligado =1 e desligado=0, por isso o sistema binário é associado ao hardware. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 12 / 26
Software Linguagem de Máquina Instruções em Código Binário Computadores operam internamente com 0s e 1s por causa do hardware. Por exemplo: Para guardar o número 97 no registrador AL (memória dentro da CPU) fazemos: 10110000 01100001 em binário. O circuito da CPU é tal que quando recebe os bits 10110000 ele conecta o que vem a seguir com uma memória chamada registrador AL. 10110000 01100001 é o mesmo que B0 61 em hexadecimal, que é o mesmo que MOV AL 61h em linguagem assembly; 61 em hexadecimal é o mesmo que 97 em decimal. Em geral imprime se o código em hexadecimal por ser mais compacto. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 13 / 26
Instruções em Código Hexa Software Linguagem de Máquina 20 primeiras linhas do editor de programas Emacs: P. S. Polito (IOUSP) Análise de Dados em Oc. Física 14 / 26
Software Linguagem de Máquina Conversão Decimal Binário Hexa Geralmente opera se com 8,16,32 ou 64 bits. Vamos converter o número binário de 16 bits 0000 0101 0001 1001 em decimal: bit 10 9 8 7 6 5 4 3 2 1 0 2 bit 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 = 1024 512 256 128 64 32 16 8 4 2 1 bin 1 0 1 0 0 0 1 1 0 0 1 O resultado em decimal é 1024 + 256 + 16 + 8 + 1 = 1305. A conversão para hexadecimal fica mais fácil, basta separar o binário em blocos de 4 bits e converter cada bloco: bin 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 hex 0 5 1 9 Portanto 0000 0101 0001 1001 (bin) = 1305 (dec) = 519 (hex) P. S. Polito (IOUSP) Análise de Dados em Oc. Física 15 / 26
Software Linguagens de Programação Assembly Language Há várias arquiteturas de processadores (Intel 8086, AMD-V, Motorola 68020 etc.) cujo circuito eletrônico interno varia. Cada um tem um conjunto de opcodes ou operações básicas, como esse MOV em MOV AL 61h. Cada um desses opcodes depende da arquitetura e corresponde a um único número binário (e.g. 10110000). O conjunto dessas instruções forma uma assembly language. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 16 / 26
Software Um Exemplo em Assembly name "add-sub" org 100h mov al, 5 mov bl, 10 add bl, al sub bl, 1 mov cx, 8 print: mov ah, 2 mov dl, 0 test bl, 10000000b... Linguagens de Programação... jz zero mov dl, 1 zero: int 21h shl bl, 1 loop print mov dl, b int 21h mov ah, 0 int 16h ret Essa é uma linguagem de baixo nível por operar quase diretamente no processador. Seria demorado, tedioso e difícil escrever um programa para processamento científico em assembly (ou assembler). P. S. Polito (IOUSP) Análise de Dados em Oc. Física 17 / 26
Software Linguagens de Programação Compiladores como Tradutores Todos os programas que são efetivamente executados pela CPU são escritos com esse conjunto de operações binárias. Todas as linguagens de programação traduzem expressões mais fáceis de se entender (programas) para o código binário executável. Por praticidade escrevemos as instruções em linguagens simplificadas e muito resumidas (e.g. C, C++, FORTRAN, COBOL, Pascal). Cada instrução é convertida pelo compilador em instruções em código binário. O conjunto dessas instruções forma um programa executável. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 18 / 26
Software Compiladores, em resumo... Linguagens de Programação P. S. Polito (IOUSP) Análise de Dados em Oc. Física 19 / 26
Software Compiladores e Interpretadores Diferença entre Compilador e Interpretador Os compiladores lêem o arquivo texto com o código fonte todo. Se este estiver correto eles geram um código objeto binário. O binário pode ser executado independente da existência do compilador. Existem também os interpretadores, programas que executam as instruções uma a uma ou em pequenos blocos. Cada instrução ou bloco é convertido pelo interpretador em instruções em código binário e estas são executadas. Não é gerado um código binário em um arquivo independente. Neste caso a execução é controlada pelo interpretador que se mantém ativo na memória. E.g.: Javascript, PHP, Perl, Python, Matlab, Octave, Mathematica. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 20 / 26
Software Compiladores e Interpretadores Interação com o Interpretador Os comandos ou instruções podem ser digitados na linha de comando ou salvos num arquivo texto (programa fonte) e executados de uma só vez. Note que internamente a execução é sempre feita comando a comando ou bloco a bloco. Algumas linguagens geram, ainda que internamente, pedacinhos de código intermediário compilado e otimizado. O interpretador controla a alocação de memória e o uso dos recursos do sistema. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 21 / 26
Software Interpretadores, em resumo... Compiladores e Interpretadores P. S. Polito (IOUSP) Análise de Dados em Oc. Física 22 / 26
Comparando Códigos Software Vantagens e Desvantagens Mais linguagens em: www.roesler-ac.de/wolfram/hello.htm /* in C, Ansi-style */ #include <stdio.h> #include <stdlib.h> int main(void) { puts("hello World!"); return EXIT_SUCCESS; }! in Fortran 90 and 95 program Hello write(*,*) "Hello World! end program Hello % in MATLAB disp( Hello World ); # in Octave printf("hello World\n"); P. S. Polito (IOUSP) Análise de Dados em Oc. Física 23 / 26
Software Linguagens e Necessidades Vantagens e Desvantagens Em geral, programas similares em linguagens compiladas são mais longos que em linguagens interpretadas. Isto se deve a: simplicidade léxica e sintática das linguagens interpretadas, facilidade de testar comandos passo a passo no interpretador e necessidade de declarar variáveis para o compilador. Em geral, programas similares em linguagens compiladas são mais rápidos que em linguagens interpretadas. Isto acontece pois: o gerenciamento de memória por parte do interpretador demora, o interpretador disputa recursos com o programa e o compilador gera um código binário otimizado. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 24 / 26
Software Vantagens e Desvantagens A Ferramenta Adequada Em geral, a escolha fica entre FORTRAN e Matlab, embora hajam iniciativas interessantes na utilização de Octave e Python. FORTRAN combina precisão, velocidade, uso eficiente de memória, paralelização do processamento e portabilidade (open source). Use o para: modelagem numérica; análise estatística (e.g. EOF) de grande volume de dados; interpolação; processamento de quantidades massivas de dados, O[100GB]+. Chega a ser 1000 vezes mais rápido que o Matlab. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 25 / 26
Software Vantagens e Desvantagens A Ferramenta Adequada Em geral, a escolha fica entre FORTRAN e Matlab, embora hajam iniciativas interessantes na utilização de Octave e Python. Matlab apresenta facilidade de programação, visualização e análise estatística, além de um grande número de programas específicos para oceanografia. Use o para: Controle de qualidade; Análise estatística em geral; Processamento de séries temporais e imagens; I/O em formatos específicos; Visualização de dados. P. S. Polito (IOUSP) Análise de Dados em Oc. Física 26 / 26