Introdução à Computação: Sistemas de Computação

Documentos relacionados
Paradigmas de Linguagens

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

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

Linguagens de Programação. Introdução. Carlos Bazilio

Linguagens de Programação

Linguagens de Programação

Introdução à Computação: Máquinas Multiníveis

Histórico de Linguagens de Programação

Fundamentos de Programação 1

Linguagens de Programação

Programação de Computadores

Revisão: linguagens de programação

Programação de Computadores

1 Introdução à Programação O que é? Para que serve?... 1

3. Linguagem de Programação C

Paradigmas de Programação

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

DELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA REFLEXÃO 5

Algoritmos e Programação

Linguagens de Programação Funcional

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Capítulo 1. Aspectos Preliminares

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

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

Introdução à Computação

Paradigmas de Linguagens

Algoritmos e Programação

Introdução à linguagem C

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

PROGRAMAÇÃO I. Introdução

Informática I. Aula 9. Aula 9-17/05/2006 1

Nomes, vinculações e escopos

Programação Imperativa. Lição n.º 1 Preliminares

Linguagens de Programação e Programação Funcional

Programação I Apresentação

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação

Linguagem de Programação e Compiladores

EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO

Programação I Aula 2 Apresentação da linguagem Python

Nomes, vinculações e escopos

LAPRO I. Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN. Prof. Dr. Rafael Garibotti

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Introdução à Computação: Máquinas Multiníveis

Programação de Computadores:

ao paradigma imperativo

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

Python - Variáveis e expressões

Paradigmas de Programação

Compiladores. Introdução

Laboratório de Programação 1 Algoritmos e a Lógica de Programação

Introdução à Computação: Sistemas de Computação

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

Introdução a Ciência da Computação

Fundamentos de Sistemas Operacionais

Noções de compilação

Linguagens de Programação Aula 3

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE GRADUAÇÃO

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Linguagens de Programação

História das Linguagens de Programação

Introdução à Computação MAC0110

Paradigmas de Linguagem de Programação. Linguagens de Programação Análise histórica e atual

Paradigmas de Programação

INFORMÁTICA APLICADA AULA 01 LINGUAGEM DE PROGRAMAÇÃO C++

Transcrição:

Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória, ES Brazil 1

Revisão Aula Passada Sistemas de Computação Parte 3: Software Básico: Sistemas Operacionais. 2

Torre de Babel: Existem entre 5000 e 6000 línguas faladas em nosso planeta; Cerca de 200 idiomas possuem mais de um milhão de falantes; O Mandarim por exemplo é falado por mais de 1,3 milhões de pessoas; Mas o que há em comum entre todos as línguas? Fonte:IBGE (site) 3

Comunicação: Toda comunicação exige uma linguagem comum baseada em um senso comum ; Linguagens Etimologia: Gramática: é o conjunto de regras individuais usadas para definição e uso de uma determinada língua; Sintaxe: é a parte da gramática de uma linguagem que estuda a disposição das palavras nas frases e das frases no discurso, e a sua relação lógica; Semântica: é o estudo do significado usado por seres humanos para se expressar através de uma linguagem. 4

Linguagens de Programação: A linguagem usada na computação também possui estes três elementos; E olhando para os níveis mais baixos de um computador teremos: Gramática => Microinstruções; Sintaxe => Zero-um-nês ; Semântica => Lógica. 5

Linguagens de Programação: As linguagens de programação também evoluíram com o tempo; Nos primeiros computadores a programação e seu uso eram confundidos, foi a partir das ideias de Turing que o conceito de programa e programação foi formalizado; Posteriormente com o uso de Máquinas Multiníveis e de suas linguagens permitiu uma visão abstrata da programação. 6

Linguagens de Programação Surge o Fortran: John W. Backus estava com preguiça de escrever programas em assembly; Criou então o Fortran (IBM Mathematical FORmula TRANslation System); IBM 704 entre 1953 e 1954; Programar ficou umas 20 vezes mais fácil. 7

Linguagens de Programação Fortran: O Fortran evoluiu em várias versões: Fortran II, III (até 1962); Fortran IV ou 66 (1965 e 1966); Fortran 77 (1976); Fortran 8x (1980); Fortran 90 (1990) e 95 (1995); Fortran 2003(ISSO/IEC 1539-1:2004) e 2008 (ISSO/IEC 1539-1:2010). 8

Linguagens de Programação Fortran: O Fortran possui vários dialetos (Absoft, Cray, GFortran, G95, IBM, Intel, Lahey/Fujitsu, Open Watcon, Pathscale, PGI, Silverfrost, Oracle, XL Fortran, Visual Fortran e outros); O Fortran influenciou o aparecimento de várias outras linguagens (ALGOL 58, BASIC, C, PL/I, PACT I, MUMPS, Fatfor). 9

Linguagens de Programação Surge o LISP: Surgiu em 1958 no Massachusets Institute of Technology (MIT); Criado pelo Professor John McCarthy; Uma notação simples, baseada em funções matemáticas; Baseado no conceito de listas; Sintaxe com muitos parênteses; Possui vários dialetos (Common Lisp, Scheme, Emacs Lisp, Autolisp, Arc, Clojure, Newlisp, Lush, Arc); 10

Linguagens de Programação LISP: Primeira linguagem funcional; LISP (LISt Processing); Foi usada em sistemas de mísseis americanos; Influenciou o aparecimento de outras linguagens funcionais como Logo, Smalltalck, Ruby, Dylan. 11

Linguagens de Programação Surgiu o ALGOL: A computação precisava de um padrão para algoritmos; Criou-se um comitê para tratar do assunto, que foi formado por: John Backus; C. A. R. Hoare; John McCarthy e outros. Desse comitê surgiu o ALGOL 58 (ALGOrithmic Language); Foi classificada posteriormente como linguagem Imperativa; 12

Linguagens de Programação Surgiu o ALGOL: Talvez a mais influente linguagem de programação; Considerada ancestral da maioria das linguagens modernas (chamadas de Algol-like); Muito mais amigável para seres humanos; Introduziu os blocos Begin-end ; Também evoluiu em várias versões. 13

Linguagens de Programação COBOL: COBOL (Common business-oriented Language) foi feita para negócios (Contadores, economistas, etc.); COBOL foi criada em 1958 por um comitê formado pela indústria, governo e academia; Linguagem imperativa e procedural; Atualmente existe uma versão orientada a objetos; 14

Linguagens de Programação COBOL: Possui muitos de dialetos (ACUCOBOL-GT, COBOL-IT, COBOL/2, DEC COBOL-10, DEC VAX COBOL, DOSVS COBOL, Fujitsu COBOL, Hitachi COBOL2002, HP3000 COBOL/II, IBM COBOL SAA, IBM COBOL/400, IBM COBOL/II, IBM Enterprise COBOL, IBM ILE COBOL, IBM OS/VS COBOL, ICL COBOL, iscobol, Micro Focus COBOL, Microsoft COBOL, Realia COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, Tandem (NonStop) COBOL85, Tandem (NonStop) SCOBOL, UNIVAC COBOL, Unisys MCP COBOL74, Unisys MCP COBOL85, Unix COBOL X/Open, Visual COBOL, Wang VS COBOL); Influenciou outras linguagens (AIMACO, C++, CONMTRAN, FACT, FLOW-MATIC, Smaltalk). 15

Linguagens de Programação Surgiu o C: Surgiu em 1972, e foi, durante muitos anos, a linguagem de programação mais popular; Criada por Dennis Ritchie da AT&T Bell Labs e usada na re-implemementação do UNIX; Linguagem de programação imperativa e procedural; A origem do nome é controversa, há duas versões: 1. Acredita que se deu o nome "C" à linguagem porque muitas das suas características derivaram de uma linguagem de programação anterior chamada "B ; 2. Baseia no fato que "C" é a segunda letra do nome da linguagem BCPL, da qual se derivou a linguagem B. 16

Linguagens de Programação C: Há diversas implementações (GCC, Clang, Intel C, MSVC, Pelles C, Watcon C); Vários dialetos (Cyclone, Unified Parallel C, Split-C, Cilk, C*); Influenciou numerosas linguagens (C++, C--, C#, Objective-C, Java, Rust, BitC, Perl, PHP, Python e inúmeras outras). 17

Linguagens de Programação - Classificação: Quanto ao nível de abstração: Linguagens de máquina: códigos binários; Linguagens de baixo nível: codificação com sintaxe próxima à linguagem de máquina, cujas instruções devem executar instruções de máquina com relação um para um; Linguagens de alto nível: aproxima-se da linguagem humana e está fundamentada em princípios da lógica matemática; 18

Linguagens de Programação - Classificação: Quanto à estrutura: Fracamente Tipada: permite operações entre tipos de dados diferentes (Smalltalk); Fortemente Tipada: Não permite operações entre tipos de dados diferentes (Pascal, Java); Dinâmicamente Tipada: Checa os tipos de dados em tempo de execução (Python, Ruby); Estaticamente Tipada: O tipo da variável é declarado em tempo de programação (C); 19

Linguagens de Programação - Classificação: Quanto à geração: Primeira geração: linguagens de máquina; Segunda geração: linguagens de baixo nível (assembly); Terceira geração: linguagens de alto nível, geralmente suportam variáveis, matrizes, instruções condicionais, instruções repetitivas, funções e procedimentos (C, Pascal, Fortran, Cobol); Quarta geração: linguagens que geram código a partir de expressões de alto nível; e linguagens de consulta (C++, Java, SQL); Quinta geração: linguagens lógicas para IA (Lisp, Prolog), sendo criadas para fazer deduções, inferências a partir de uma base de conhecimento. 20

Linguagens de Programação - Classificação: Quanto ao domínio da programação: Para aplicações científicas (Fortran); Para aplicações comerciais (COBOL); Para aplicações gerais (C); Para Inteligência Artificial (Lisp, Prolog); Para Scripting (shell script, Java Script, Pearl); Para propósitos especiais (XML, XMI, WSDL); 21

Linguagens de Programação - Classificação: Quanto ao paradigma da programação: Imperativas: Estruturada; Orientada a Objetos; Concorrente; Declarativa: Funcional; Lógica. 22

Linguagens de Programação - Classificação: Quanto ao paradigma da programação: 23

Linguagens de Programação - Classificação: Imperativas: A Programação Imperativa é um conceito baseado em estados, definidos por variáveis, e ações que são manipuladoras de estado, procedimentos; Pelo fato de permitir o uso de procedimentos como estruturação, também é conhecido como, Programação Procedural. 24

Linguagens de Programação - Classificação: Imperativas vantagens: Eficiência; Modelagem natural dos problemas reais; Dinâmica de mercado; Estão bem estabelecidas; Imperativas desvantagens: Foca no COMO e não no QUE precisa ser feito; Difícil legibilidade. 25

Linguagens de Programação - Classificação: Declarativa: A Programação Declarativa, ao contrário da Programação Imperativa que informa ao computador "COMO" as instruções devem ser executadas, preocupa-se em apenas dizer ao computador "O QUE precisa ser feito, cabendo ao computador decidir qual a melhor solução para essa solicitação. 26

Linguagens de Programação - Classificação: Declarativas vantagens: Facilidade de acesso a bases de conhecimento; Conversão de objetos complexos (Pessoa, Empregado, etc.) por binding ( ligação ) para trafegar em rede. Declarativas desvantagens: Produz códigos ilegíveis quando usada de forma funcional. 27

Linguagens de Programação - Classificação: Estruturada: Preconiza que todos os programas podem ser reduzidos a três estruturas: Sequência, decisão e iteração (ou repetição); Ex: C, Pascal, Cobol, etc. Orientada a Objetos: Está fundamentada em quatro pilares: Abstração, encapsulamento, herança e polimorfismo; Mantém a estrutura estruturada porém dentro de contextos específicos (classes, objetos e métodos); Ex: C++, Java, etc. 28

Linguagens de Programação - Classificação: Estruturada versus Orientada a Objetos: 29

Linguagens de Programação - Classificação: Concorrente: Fazem uso da execução concorrente (simultânea) de várias tarefas computacionais interativas; As tarefas podem ser implementadas como programas separados ou como um conjunto de threads criadas por um único programa; Essas tarefas podem ser executadas por um único processador, vários processadores em um equipamento, ou processadores distribuídos por uma rede; Diretamente relacionada à programação paralela; Ex: Java, C# (porque usam o modelo de memória compartilhada), Pascal Concorrente, etc. 30

Linguagens de Programação - Classificação: Funcional: Trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis; Ex: Lisp, Haskell, etc. Lógica: Faz uso da lógica matemática. John McCarthy em 1958, foi o primeiro a publicar uma proposta de uso da lógica matemática para programação; Ex: Planner, Prolog, etc. 31

Linguagens de Programação - Propriedades: Legibilidade: facilidade de leitura e compreensão; Redigibilidade: diferencia as linguagens de alto e baixo nível, trata da facilidade de desenvolvimento; Confiabilidade: possui mecanismos que permitem a verificação automática durante o processo de compilação e execução; Eficiência: resultam em aplicações mais ou menos capazes de lidar com situações extremas (tempo real, aplicações embarcadas, etc.); Curva de aprendizado: tempo necessário para o aprendizado até o domínio da linguagem; 32

Linguagens de Programação - Propriedades: Ortogonalidade: diz respeito à capacidade da linguagem permitir ao programador combinar seus conceitos básicos sem que se produzam efeitos anômalos na combinação; Reusabilidade: possibilidade de reutilizar o mesmo código para diversas aplicações (uso de arcabouços - frameworks); Modificabilidade: possibilidade de alterações no programa a partir de novos requisitos, sem que tais modificações impliquem em mudanças em outras partes; 33

Linguagens de Programação - Propriedades: Portabilidade: é desejável que programas escritos em uma determinada linguagem se comportem da mesma maneira independente da ferramenta utilizada para traduzi-los para a linguagem de máquina ou da arquitetura computacional sobre a que estão executados. 34

Próxima Aula Segunda Prova: Todos os assuntos abordados até aqui, desde a Primeira Prova. Preparem-se para a Segunda Prova! Até breve. 35

http://nemo.inf.ufes.br/ 36