Programação de Computadores Curso Engenharia Química Modalidade Superior Professora Michelle Nery
Agenda Introdução a Programação História e Avanços
História do Computador 2000 a.c. foi criado o ábaco, capaz de realizar operações algébricas elementares. 3
Ábaco É um instrumento digital de cálculo, feito de contas que deslizam em arames. Inventado na Babilônia, hoje Iraque, por volta de 2400 A.C. Inicialmente era usado para registrar valores, somar e subtrair. Posteriormente, foram inventados métodos para multiplicação, divisão, extração de raízes e representação de números decimais e negativos. 4
Régua de Cálculo Inventada em 1621 pelo matemático inglês William Outgred, a régua de cálculo continuou sendo usada por cientistas e engenheiros até a década de 1970. Inicialmente usada para multiplicar e dividir, mais tarde foram inventadas réguas para exponenciação, cálculo de logaritmos, extração de raízes e operações trigonométricas. 5
6 Primeiras Calculadoras Mecânicas
Relógio de Cálculo Em 1623, Wilhelm Schikard construiu a primeira máquina de calcular mecânica (que chamava de relógio de cálculo ). Ela somava e subtraía números de até 6 dígitos, através de um sistema baseado em rodas dentadas. A máquina foi perdida e só redescoberta em 1935. 7
Máquina de Blaise Pascal 1642 Blaise Pascal desenvolveu uma máquina de somar e subtrair, chamada de Pascalina. Ela somava e subtraia números de até 8 dígitos. Foram construídas 50 dessas máquinas. 8
Calculadora de Leibniz 1672 - Gottfried Wilhelm Leibniz desenvolveu uma máquina de somar, subtrair, multiplicar e dividir. 9
Arithmometer Em 1820, Charles Xavier Thomas projetou e construiu uma máquina capaz de efetuar as 4 operações aritméticas básicas: a Arithmometer (Aritmômetro). Esta foi a primeira calculadora realmente comercializada com sucesso, mais de 1500 unidades. 10
Cartões Perfurados 1801 - Joseph-Marie Jacquard desenvolveu cartões perfurados, o primeiro dispositivo de armazenamento. 11
Tear Mecânico Ainda novo, foi dada uma tarefa a Jacquard, de alimentar os teares com novelos e linhas coloridas para formar os desenhos nos tecidos que estavam sendo fiados. Uma tarefa puramente manual e chata, pois ele tinha que ficar trocando os fios e as linhas a cada passagem da laçadeira. Jacquard percebeu que as mudanças seguiam uma certa lógica e inventou um processo de cartões perfurados que definiam padrões nas laçadeiras e assim o trabalho do tecelão seria trocado para algo automático. 12
Tear Mecânico 1804. 13
A Máquina Diferencial Em 1822, Charles Babbage, um matemático inglês que estudou em Cambridge, recebeu uma bolsa do governo para projetar uma calculadora com capacidade para até a vigésima casa decimal. Babbage inventou a Máquina Diferencial, pois estava preocupado com os erros contidos nas tabelas matemáticas de sua época, construiu um modelo para calcular tabelas de funções (logaritmos, funções trigonométricas, etc.) sem a intervenção de um operador humano. 14
A Máquina Diferencial A máquina não chegou a funcionar de forma satisfatória por causa de problemas nas engrenagens. Em 1991, ela foi reconstruída e funcionou perfeitamente. 15
A Máquina Analítica 1833 Charles Babbage e Ada Augusta - condessa de Lovelace, construíram a máquina analítica (calculadora algébrica). Foi o primeiro projeto de um computador de propósito geral, que usava cartões perfurados para armazenar os dados de entrada e o programa. Ada Lovelace chegou a escrever programas para essa máquina e hoje é considerada a primeira programadora. 16
A Máquina de Tabulação Em 1880, Hermann Hollerith, baseado nas ideias de Babbage e Jacquard, constrói uma máquina de tabulação, que é usada no censo norte-americano de 1890. Essa máquina usava cartões perfurados como entrada e contava os valores dos cartões através de um sistema de relays mecânicos. 17
18 A Máquina de Tabulação
Computadores Uma sucessão de computadores cada vez mais potentes e flexíveis surgem nas décadas de 30 e 40. Em 1931, o primeiro computador analógico de propósito geral é construído no MIT por Vannevar Bush, o Analisador Diferencial. Video em https://ub.fnwi.uva.nl/computermuseum//vbush_tbl.php 19
Computadores 1942 - John Atanasoff e Clifford Berry desenvolveram o primeiro computador eletrônico (calculadora). 20
Computadores 1944 - Howard Aiken (apoiado pela IBM) desenvolveu o primeiro computador eletromecânico (Mark 1) baseado na máquina analítica de Babbage. 21
Computadores Em 1944, Alan Turing constrói dez computadores Colossus I, também utilizando válvulas e usa o equipamento para decifrar códigos militares alemães. Os alemães desenvolveram uma máquina denominada Enigma para codificar suas instruções militares. A cifra implementada pela Enigma era considerada inquebrável inicialmente. As ideias de Turing permitiram generalizar uma maneira que qualquer mensagem cifrada com a Enigma pudesse ser decifrada. 22
Computadores 23
Computadores 1946 - ENIAC (Computador Integrador Numérico Electrónico) desenvolvido por John Eckert e John Mauchly, usado para computar trajetórias táticas que exigissem conhecimento substancial em matemática. 24
História do Computador 1951 - Eckert e Mauchly desenvolveram o UNIVAC (Universal Automatic Computer), primeiro computador disponível comercialmente. 25
História do Computador A partir dos anos 70 o computador passou a ser chamado de microcomputador. Eles não apresentavam teclado, nem vídeo, nem impressora. Eles eram ligados a um aparelho chamado teletipo (teletype). O teletipo era uma máquina de escrever que continha uma leitora e uma perfuradora de fita de papel. Os furos da fita representavam as instruções dos programas. 26
Evolução dos Computadores 27
Evolução dos Computadores 1ª Geração (1940-1952): Uso de válvulas eletrônicas. Grandes, caras, lentas e queimavam com grande facilidade. O computador tinha apenas uso científico. A programação era feita diretamente em linguagem de máquina. As operações de cálculos eram realizadas em milesegundos (39.000 adições/segundos). A única forma de armazenar dados era através de cartões perfurados. 28
Evolução dos Computadores 1ª Geração (1940-1952): Z1, Z2, Z3 (relés), Konrad Zuse1935 ABC (válvulas), Atanosoff 1936 MARK-1, 1941, 120 m 2, 10 multiplicações em 3 segundos ENIAC, 1946, 30 toneladas, 18000 válvulas, 5000 somas/s 29
Evolução dos Computadores 2ª Geração (1952-1964): Revolução dos transistores. Cada transistor substituía dezenas de válvulas. Desta maneira os computadores tornaram-se menores e mais velozes. O transistor, assim como a válvula, realizava um processamento de cada vez. O computador começa a ser utilizado nas grandes empresas. A linguagem de programação foi simplificada, designada de ASSEMBLER. As operações de cálculos eram realizadas em milionésimos de segundos (204.000 adições/segundos). Fitas e tambores magnéticos passam a ser usados como memória. Exemplo: IBM 1401. 30
Evolução dos Computadores 2ª Geração (1952-1964): TX-0, 1957 PDP-1, Digital, 1º computador comercial 31
Evolução dos Computadores 3ª Geração (1964-1971): Utilização dos Circuitos Integrados, uma técnica de microcircuitos. Os computadores podiam realizar vários processamentos simultâneos. A programação dos computadores era feita por linguagens orientadas para o problema específico. As operações de cálculos eram realizadas em bilionésimos de segundos (1.280.000 adições/segundos). 32
Evolução dos Computadores 3ª Geração (1964-1971): IBM 360, 1965 IBM 370, PDP-11, sucesso universitário 33
Evolução dos Computadores 4ª Geração (1971-1981): Surgimento do microprocessador, a redução no tamanho dos computadores foi muito grande. Surgem muitas linguagens de alto-nível e nasce a teleinformática, transmissão de dados entre computadores através de rede. Exemplos: Os microcomputadores atuais. 34
Evolução dos Computadores 4ª Geração (1971-1981): Intel 4004, 1971, 4 bits Intel 8008, 1972 Altair 8800, 1974, montado em kits Apple, 1976, TV+Teclado, BASIC escrito por Bill Gates IBM-PC, 1981, computador pessoal, (projeto aberto, processador 8088 Intel, 16 bits, 4.77 MHz, 16 kb RAM, US$ 4400. 35
Arquitetura Básica John von Neumann (1903 1957) 36
História da Programação 37
História da Programação Ada Lovelace, foi a pessoa que começou a programar. Sim, uma mulher: primeira programadora da história. Ada Augusta Byron King, a Condessa de Lovelace, escreveu um programa para ser utilizado na máquina analítica de Charles Babbage. Essa máquina é considerada o ponto de partida dos computadores eletrônicos. A Máquina de Babbage foi apresentada como proposta (já que era difícil de ser construída) em 1833, patrocinada pela Universidade de Cambridge. 38
História da Programação 39
História da Programação O algoritmo que Ada escreveu entre 1842 e 1843 calculava a sequência de Bernoulli, conhecida também como a Lei dos Grandes Números. Caso se conheça a probabilidade de ocorrência de um evento num experimento aleatório, será possível indicar quais são as expectativas da frequência da sua ocorrência uma vez que o mesmo experimento seja repetido um número considerável de vezes sob condições semelhantes. Cara ou coroa, por exemplo. Teorema bastante estudado na teoria dos jogos. 40
História da Programação Há quem duvide que Ada é a primeira programadora. Se voltarmos um pouco no tempo, em 1804 especificamente, encontramos a história de Joseph-Marie Jacquard, um francês que inventou otear Mecânico. Esse famoso indivíduo pode ser considerado o pai da programação. 41
História da Programação É complicado afirmar mesmo quem foi o primeiro programador. Jacquard com o Tear Mecânico ou Ada que registrou academicamente o processo de se conceber um algoritmo, além de já tratar de sua implementação em uma máquina de fato. Na dúvida, digamos que Ada é a mãe da programação e Jacquard o pai. 42
Um Pouco de História 43
Década de 40 Os primeiros computadores eletrônicos eram monstruosos. A programação era em código binário. A manutenção era difícil: As válvulas queimavam regularmente 44 {avfl, gfn}@cin.ufpe.br
Início da década de 50 Linguagens Assembly É considerada uma linguagem de baixo nível, o utilizador necessita de entender o funcionamento da máquina para conseguir lidar com tal linguagem. Permitia programas maiores, reusáveis, e re-alocáveis. O código de máquina era produzido por um Assembler. 45 {avfl, gfn}@cin.ufpe.br
Meio da Década de 50 Surge FORTRAN É considerada a primeira linguagem de alto-nível. Desenvolvimento independente da plataforma. Aplicada na solução de problemas na ciência e na engenharia. Outras linguagens da época: Algol58, Cobol, Lisp, Basic. 46 {avfl, gfn}@cin.ufpe.br
Década de 60 Fortalecimento da Programação Estruturada Pascal Sem go to! Fortemente tipada (obrigatoriedade da declaração dos tipos) Procedimentos alinhados Simula Primeira linguagem com objetos, classes e subclasses 47 {avfl, gfn}@cin.ufpe.br
Década de 70 (1/2) C Sucessora de B, que veio de BCPL Construções de alto-nível Ada Incentivada pelo Departamento de Defesa Usada em programação de sistemas embarcados 48 {avfl, gfn}@cin.ufpe.br
Década de 70 (2/2) SmallTalk Rica graficamente GUI Orientada a Objetos Objetos se comunicam via troca de mensagens Prolog 49 {avfl, gfn}@cin.ufpe.br
Década de 80 C++ Primeira linguagem Orientada a objetos amplamente adotada. Implementada como um pré-processador para o compilador C. Haskel Avaliação Preguiçosa Polimorfismo Paramétrico Inferência de Tipos 50 {avfl, gfn}@cin.ufpe.br
Década de 90 O estouro da Internet! HTML A linguagem da World WideWeb. É uma linguagem de marcação, e não de programação. Linguagens Script São as chamadas linguagens interpretadas. Perl, JavaScript, VBScript. 51 {avfl, gfn}@cin.ufpe.br
Década de 90 Java Orientada a objetos, compilada e interpretada (bytecodes) 1996 Java 1.0 1997 Java 1.1 e 1.2 (Swing, Collection) 1998 Java 1.2 2000 Java 1.3 2014 Java 7u51 52 {avfl, gfn}@cin.ufpe.br
Década 2000 Java 2004 Java 1.5 (tipos parametrizados, enumeradores) XML Padrão de integração Microsoft.NET Múltiplas linguagens C++, C#, Visual Basic, Cobol, Fortran Uma máquina virtual comum 53 {avfl, gfn}@cin.ufpe.br
Árvore Evolucionária das Linguagens de Programação 54 {avfl, gfn}@cin.ufpe.br
55
Exercícios Descreva no seu caderno um cronograma da evolução dos computadores juntamente com as linguagens de programação. Quais são as linguagens de programação mais usados nos dias atuais, e descreva sua objetividade? 56