Sistemas de Computação

Propaganda
Introdução à
Computação: Sistemas
de Computação
Beatriz F. M. Souza
([email protected])
http://inf.ufes.br/~bfmartins/
Computer Science Department
Federal University of Espírito Santo
(Ufes),
Vitória, ES – Brazil
1
Sistemas de Computação – Revisão
Aula Passada
• Sistemas de Computação – Parte 3:
– Software Básico:
• Sistemas Operacionais.
2
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• Linguagens de Programação - Classificação:
– Quanto ao paradigma da programação:
• Imperativas:
– Estruturada;
– Orientada a Objetos;
– Concorrente;
• Declarativa:
– Funcional;
– Lógica.
22
Sistemas de Computação
• Linguagens de Programação - Classificação:
– Quanto ao paradigma da programação:
23
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• Linguagens de Programação - Classificação:
– Estruturada versus Orientada a Objetos:
29
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação
• 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
Sistemas de Computação – 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
Download