SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
PARADIGMAS DE LINGUAGEM
DE PROGRAMAÇÃO
Eduardo Habib Bechelane Maia
habib@div.cefetmg.br
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?
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
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.
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
Propriedades Desejáveis
• Legibilidade
• Regibilidade
• Confiabilidade
• Eficiência
• Facilidade de aprendizado
• Ortogonalidade
• Reusabilidade
• Modificabilidade
• Portabilidade
6
Por que tantas Linguagens?
• Propósitos diferentes
• Avanços tecnológicos
• Interesses comercias
• Cultura e background científico
7
PARADIGMA ESTRUTURADO
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
Modelo do Paradigma Estruturado
Entrada
Estado
SaídaPrograma
Elementos
• Definição de tipos de dados
• Expressões e atribuições
• Estruturas de controle de fluxo
• Definição de sub-rotinas
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.
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
Alguns exemplos de linguagens do
modelo imperativo
• Ada
• Algol
• Basic
• C
• PHP
• Cobol
• Fortran
• Pascal
• Python
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
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
Vantagens do Paradigma Orientado a Objetos
• Todas as do paradigma estruturado
• Estimula:
• Modularidade
• Reusabilidade
• Extensibilidade
• Aceitação comercial crescente.
Problemas do Paradigma OO
• Semelhantes aos do paradigma estruturado
• Amenizadas pelas facilidades de estruturação
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.
PARADIGMA PARALELO E
DISTRIBUÍDO
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.
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.
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
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
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
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.
FUNCIONAL
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.
Paradigma funcional
• Ausência de estados
• Tudo é função
Entrada Saída
Program
a
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
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
Tendências
• Integração de paradigmas
• Aumentar o domínio da aplicação
• Cautela
• Não viole princípios básicos

Weitere ähnliche Inhalte

Was ist angesagt?

Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programaçãoAlbertoVach
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoElaine Cecília Gatto
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de ProgramaçãoNatanael Simões
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programaçãoessa
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagensPaulo Muniz
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de ProgramaçãoBeDMK
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoJessica Ribeiro
 
Programação 1
Programação 1Programação 1
Programação 1essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoAdriano Teixeira de Souza
 
Orientação a Aspectos em PHP
Orientação a Aspectos em PHPOrientação a Aspectos em PHP
Orientação a Aspectos em PHPFlávio Lisboa
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcionalPéricles Miranda
 

Was ist angesagt? (20)

Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagens
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 
Programação 1
Programação 1Programação 1
Programação 1
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Orientação a Aspectos em PHP
Orientação a Aspectos em PHPOrientação a Aspectos em PHP
Orientação a Aspectos em PHP
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 

Andere mochten auch

Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
Integrando aplicações com redis
Integrando aplicações com redisIntegrando aplicações com redis
Integrando aplicações com redisFelipe Monteiro
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Otávio Santana
 
Redis – What, Why, When, How?
Redis – What, Why, When, How?Redis – What, Why, When, How?
Redis – What, Why, When, How?Kinn Julião
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com RedisWaldyr Felix
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQLEric Silva
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBPaulo Bischof
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoAllisson Azevedo
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Ismar Silveira
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à práticaMario Guedes
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisSistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisMauro Duarte
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with PythonJeff Knupp
 
Banco de dados de grafos
Banco de dados de grafosBanco de dados de grafos
Banco de dados de grafosPriscila Mayumi
 
Developing RESTful Web APIs with Python, Flask and MongoDB
Developing RESTful Web APIs with Python, Flask and MongoDBDeveloping RESTful Web APIs with Python, Flask and MongoDB
Developing RESTful Web APIs with Python, Flask and MongoDBNicola Iarocci
 

Andere mochten auch (20)

Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Integrando aplicações com redis
Integrando aplicações com redisIntegrando aplicações com redis
Integrando aplicações com redis
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra)
 
Redis – What, Why, When, How?
Redis – What, Why, When, How?Redis – What, Why, When, How?
Redis – What, Why, When, How?
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com Redis
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQL
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
 
549891
549891549891
549891
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação Django
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à prática
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisSistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with Python
 
Banco de dados de grafos
Banco de dados de grafosBanco de dados de grafos
Banco de dados de grafos
 
Developing RESTful Web APIs with Python, Flask and MongoDB
Developing RESTful Web APIs with Python, Flask and MongoDBDeveloping RESTful Web APIs with Python, Flask and MongoDB
Developing RESTful Web APIs with Python, Flask and MongoDB
 

Ähnlich wie 01 aula1 habib

Lógica de Programação - Procedimento
Lógica de Programação - ProcedimentoLógica de Programação - Procedimento
Lógica de Programação - ProcedimentoWesley R. Bezerra
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwareTiago Barros
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksJonata Weber
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de SoftwareAdilmar Dantas
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
Treinamentos Avançados em Informática
Treinamentos Avançados em InformáticaTreinamentos Avançados em Informática
Treinamentos Avançados em InformáticaEder Carneiro
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseDr. Spock
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 

Ähnlich wie 01 aula1 habib (20)

Lógica de Programação - Procedimento
Lógica de Programação - ProcedimentoLógica de Programação - Procedimento
Lógica de Programação - Procedimento
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de Software
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de Software
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Treinamentos Avançados em Informática
Treinamentos Avançados em InformáticaTreinamentos Avançados em Informática
Treinamentos Avançados em Informática
 
Cursos Season
Cursos SeasonCursos Season
Cursos Season
 
Cursos Season
Cursos Season Cursos Season
Cursos Season
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software Enterprise
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
Métricas de Código
Métricas de CódigoMétricas de Código
Métricas de Código
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Framework usar ou não usar
Framework usar ou não usarFramework usar ou não usar
Framework usar ou não usar
 

01 aula1 habib

  • 1. PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO Eduardo Habib Bechelane Maia habib@div.cefetmg.br
  • 2. 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?
  • 3. 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
  • 4. 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.
  • 5. 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
  • 6. Propriedades Desejáveis • Legibilidade • Regibilidade • Confiabilidade • Eficiência • Facilidade de aprendizado • Ortogonalidade • Reusabilidade • Modificabilidade • Portabilidade 6
  • 7. Por que tantas Linguagens? • Propósitos diferentes • Avanços tecnológicos • Interesses comercias • Cultura e background científico 7
  • 9. 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
  • 10. Modelo do Paradigma Estruturado Entrada Estado SaídaPrograma
  • 11. Elementos • Definição de tipos de dados • Expressões e atribuições • Estruturas de controle de fluxo • Definição de sub-rotinas
  • 12. 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.
  • 13. 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
  • 14. Alguns exemplos de linguagens do modelo imperativo • Ada • Algol • Basic • C • PHP • Cobol • Fortran • Pascal • Python
  • 15. 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
  • 16. 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
  • 17. Vantagens do Paradigma Orientado a Objetos • Todas as do paradigma estruturado • Estimula: • Modularidade • Reusabilidade • Extensibilidade • Aceitação comercial crescente.
  • 18. Problemas do Paradigma OO • Semelhantes aos do paradigma estruturado • Amenizadas pelas facilidades de estruturação
  • 19. 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.
  • 21. 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.
  • 22. 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.
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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.
  • 28. 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.
  • 29. Paradigma funcional • Ausência de estados • Tudo é função Entrada Saída Program a
  • 30. 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
  • 31. 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
  • 32. Tendências • Integração de paradigmas • Aumentar o domínio da aplicação • Cautela • Não viole princípios básicos