01 aula1 habib
TRANSCRIPT
![Page 2: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/2.jpg)
Conteúdo Programático
• 1. O que é Paradigma?
• 2. O que é Paradigma de Programação?
• 3. Características de Paradigma de Programação
• 4. História
• 5. Por que estudar LP’s?
• 6. Para que servem as LP’s?
• 7. Propriedades Desejáveis
• 8. Por que tanta linguagem?
![Page 3: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/3.jpg)
O que é um Paradigma?
• É um modelo imperativo de uma realidade
• Permite organizar as ideias com vista:• Ao atendimento dessa realidade
• À determinação de qual é a melhor forma de atuar sobre essa realidade
![Page 4: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/4.jpg)
O que é Paradigma de Programação?
• Modelo, padrão ou estilo de programação suportado
por linguagens que agrupam certas características
comuns.
• Uma linguagem de programação é um método
padronizado para expressar instruções para um
computador. É um conjunto de regras sintáticas e
semânticas usadas para definir um programa de
computador.
![Page 5: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/5.jpg)
Características de Paradigmas de Programação
• Gramática e significado bem definidos [sintaxe: gramática (forma); semântica: significado]
• Implementável (executável) com eficiência ‘‘aceitável’’
• Universal: deve ser possível expressar todo problema computável
5
![Page 6: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/6.jpg)
Propriedades Desejáveis
• Legibilidade
• Regibilidade
• Confiabilidade
• Eficiência
• Facilidade de aprendizado
• Ortogonalidade
• Reusabilidade
• Modificabilidade
• Portabilidade
6
![Page 7: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/7.jpg)
Por que tantas Linguagens?
• Propósitos diferentes
• Avanços tecnológicos
• Interesses comercias
• Cultura e background científico
7
![Page 8: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/8.jpg)
PARADIGMA ESTRUTURADO
![Page 9: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/9.jpg)
O Paradigma Estruturado
• Primeiro paradigma a surgir.
• Também conhecido como Imperativo ou Procedural.
• Centrado no conceito de um estado (variáveis) e ações (comandos).
• O estado é representado por um conjunto de associações de
identificadores (variáveis globais e locais ativas do programa) em valores.
• A diferença fundamental com relação ao paradigma funcional é que esta
associação é dinâmica, sendo constantemente modificada durante a
execução de um programa.
• O elemento central de um programa estruturado é o comando, que pode
ser primitivo ou composto
![Page 10: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/10.jpg)
Modelo do Paradigma Estruturado
Entrada
Estado
SaídaPrograma
![Page 11: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/11.jpg)
Elementos
• Definição de tipos de dados
• Expressões e atribuições
• Estruturas de controle de fluxo
• Definição de sub-rotinas
![Page 12: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/12.jpg)
Vantagens do modelo imperativo
• Eficiência
• Paradigma dominante e bem estabelecido
• Modelagem natural de aplicações do mundo real
• Possui tipagem fraca e também muito flexível
• É fácil de se entender.
![Page 13: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/13.jpg)
Desvantagens do paradigma imperativo
• Relacionamento indireto entre E/S resulta em:
• difícil legibilidade
• facilita introdução de erros em sua manutenção
• Foca em como a tarefa deve ser feita e não em o que deve ser
feito.
• Tende a gerar códigos confusos, onde tratamento dos dados são
misturados com o comportamento do programa
![Page 14: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/14.jpg)
Alguns exemplos de linguagens do
modelo imperativo
• Ada
• Algol
• Basic
• C
• PHP
• Cobol
• Fortran
• Pascal
• Python
![Page 15: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/15.jpg)
O Paradigma Orientado a Objetos
• Não é um paradigma no sentido estrito: é uma
subclassificacão do imperativo
• Diferença na metodologia
• Concepção e modelagem.
• Aplicação:
• é estruturada em módulos (classes)
• que agrupam um estado (atributos)
• e operações (métodos) sobre este
• Classes podem ser estendidas e/ou usadas como tipos
![Page 16: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/16.jpg)
Modelo Computacional do Paradigma Orientado
a Objetos
Entrada Programa Saída
Estado
......
......
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
![Page 17: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/17.jpg)
Vantagens do Paradigma Orientado a Objetos
• Todas as do paradigma estruturado
• Estimula:
• Modularidade
• Reusabilidade
• Extensibilidade
• Aceitação comercial crescente.
![Page 18: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/18.jpg)
Problemas do Paradigma OO
• Semelhantes aos do paradigma estruturado
• Amenizadas pelas facilidades de estruturação
![Page 19: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/19.jpg)
Alguns exemplos de linguagens do
modelo OO
• Exemplos:
• C++
• C#
• Java
• VB.NET
• Object Pascal
• Objective-C
• Python
• Smalltalk
• ActionScript, ColdFusion, Javascript, PHP (a partir da versão 4.0), Perl (a partir da versão 5) e Visual Basic (a partir da versão 4) são exemplos de linguagens de programação com suporte a orientação a objetos.
![Page 20: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/20.jpg)
PARADIGMA PARALELO E
DISTRIBUÍDO
![Page 21: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/21.jpg)
Introdução
• Poder de processamento das máquinas está crescendo rapidamente.
• Grande parte das máquinas são interligadas por redes
• Sistemas e aplicações estão cada vez mais complexos.
![Page 22: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/22.jpg)
Paradigma paralelo
• Consiste em executar simultaneamente várias partes de uma mesma aplicação.
• Tornou-se possível a partir do desenvolvimento de sistemas operacionais multi-
tarefa, multi-thread e paralelos.
• As aplicações são executadas paralelamente:• Em um mesmo processador.
• Em uma máquina multiprocessada.
• Em um grupo de máquinas interligadas que se comporta como uma só máquina.
![Page 23: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/23.jpg)
Paradigma Distribuído
• Consiste em executar aplicações cooperantes em máquinas diferentes.
• Tornou-se possível a partir da popularização das redes de
computadores.• Intranets
• Internet
• Outras redes públicas ou privadas
![Page 24: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/24.jpg)
Diferenças entre sistemas paralelos e distribuídos
Paralelo Distribuído
Fortemente acoplados Fracamente acoplados
Sistemas paralelos são mais previsíveis Mais imprevisíveis
Troca de mensagens são praticamente em tempo
real
Troca de mensagens influenciada pela rede
Maior controle sobre os recursos computacionais Menor controle sobre os recursos computacionais
![Page 25: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/25.jpg)
Vantagens
• Ambos
• Maior poder computacional
• Aumenta a vazão
• Compartilhamento de recursos
• Mais confiáveis
• Reutilização
• Para os sistemas distribuídos
• Separação física possibilita independência
• Escalável
• Para os sistemas paralelos
• Diminui a latência
![Page 26: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/26.jpg)
Desvantagens
• Sistemas distribuídos:
• Heterogeneidade do sistema
• Sincronização das cópias ou cache (se houver);
• Aumento da vazão implica em aumento do uso da rede;
• Transparência no acesso paralelo não é fácil de se implementar.
• Gerenciamento do sistema
• Controle de acesso aos recursos compartilhados
• Falhas da rede podem comprometer o sistema.
• Segurança e sigilo.
![Page 27: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/27.jpg)
FUNCIONAL
![Page 28: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/28.jpg)
Paradigma funcional
• Paradigma de programação baseada em funções
matemáticas.
• Soluções elegantes, concisas e poderosas.
• Resultados das funções dependem apenas dos valores de
entrada.
• Forte fundamentação teórica.
![Page 29: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/29.jpg)
Paradigma funcional
• Ausência de estados
• Tudo é função
Entrada SaídaProgram
a
![Page 30: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/30.jpg)
Paradigma funcional
• Por que estudar o paradigma funcional?• Visão clara de conceitos fundamentais
• Abstração
• Recursão
• Genericidade, sobrecarga, etc.
• Ajuda na programação em outros paradigmas
• Possibilita• Alta produtividade
• Programas mais concisos
• Menos erros
![Page 31: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/31.jpg)
Paradigma funcional
• Vantagens:• Alto nível de abstração
• Programas pequenos, claros e rápidos.
• Desvantagens
• Podem vir a ser menos eficientes.
• Exemplos:
• Lisp, ML, Miranda e Haskell
![Page 32: 01 aula1 habib](https://reader034.vdocuments.com.br/reader034/viewer/2022042514/55d5ecefbb61eb32228b458a/html5/thumbnails/32.jpg)
Tendências
• Integração de paradigmas
• Aumentar o domínio da aplicação
• Cautela
• Não viole princípios básicos