GRUPO: ELISA FERNANDES KEITH CARVALHO LUCAS VILLAR NAYANE GETIRANA VALMON GAUDENCIO   SistemasTecnoLife.blogspot.com Paradigmas de linguagem de programação
ALUNA: ELISA CRAVO FERNANDES SistemasTecnoLife.blogspot.com Introdução à LP’s
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? Modelo, padrão É um modelo imperativo de uma realidade Permite organizar as idéias 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
História A primeira linguagem de programação para computadores foi provavelmente Plankalkül, criada por Konrad Zuse na Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programação. A primeira linguagem de programação de alto nível amplamente usada foi Fortran, criada em 1954.
Por que estudar LP’s ? Programação é central para computação Linguagens de consulta a banco de dados têm muitos dos conceitos de linguagens de programação Linguagens de comando de sistemas operacionais têm muitos dos conceitos de linguagens de programação Linguagens de descrição de hardware têm muitos dos conceitos de linguagens de programação  Processamento de linguagem natural é relacionado a processamento de linguagens de programação
Para que servem as LP’s ? Permitem que programadores tenham uma maior produtividade, ajudando-os a expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina).  Tornam os programas menos dependentes de computadores ou ambientes computacionais específicos
Propriedades Desejáveis em uma LP Legibilidade Regibilidade Confiabilidade Eficiência Facilidade de aprendizado Ortogonalidade Reusabilidade Modificabilidade Portabilidade
Por que tantas LP’s ? Propósitos diferentes Avanços tecnológicos Interesses comercias Cultura e background científico
ALUNO: LUCAS VILLAR SistemasTecnoLife.blogspot.com Paradigma Imperativo e Orientado a Objeto
O Paradigma Imperativo Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado Paradigma também denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturação Primeiro paradigma a surgir Ainda é muito utilizado
Modelo Computacional do Paradigma Imperativo Entrada Programa Saída Estado
Vantagens do modelo imperativo Eficiência (embute modelo de Von Neumann) Modelagem “natural” de aplicações do mundo real Paradigma dominante e bem estabelecido
Desvantagens do paradigma imperativo Relacionamento indireto entre E/S resulta em: difícil legibilidade erros introduzidos durante manutenção descrições demasiadamente operacionais  focalizam o  como  e não  o que
Alguns exemplos de linguagens do modelo imperativo Ada Algol  Basic  C Cobol Fortran Pascal Python
O Paradigma Orientado a Objetos Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo A diferença é mais de metodologia quanto à concepção e modelagem do sistema  A grosso modo, uma 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 (cujos elementos são objetos)
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 estilo imperativo Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade Aceitação comercial crescente.
Problemas do Paradigma OO Semelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação
Alguns exemplos de linguagens do modelo OO Ada Algol  Basic  C Cobol Fortran
ALUNO VALMON GAUDENCIO DA SILVA BARBOSA SistemasTecnoLife.blogspot.com Paradigma Paralelo e Distribuído
Paradigma Concorrente – (Paralelo e Distribuído) Paradigma Concorrente Paradigma Paralelo e Distribuído + Vantagens e Dificuldades + Suporte Computacional
Panorama Atual
Paradigma Concorrente Se bem utilizado, o paralelismo resulta em um melhor desempenho dos programas. +  Mais threads --> processador melhor utilizado No entanto, podem ocorrer problemas no acesso concorrente a dados e recursos. +  Dados podem se tornar inconsistentes ao serem acessados concorrentemente (ex.: duas pessoas editando o mesmo arquivo) +  Alguns recursos não podem ser compartilhados (ex.: dois programas usando a impressora)
Como prevenir que tarefas concorrentes interfiram umas nas outras.   1 bool saque( int quantia ) 2 { 3   if( balanco > quantia ) 4  { 5     balanco = balanco - quantia; 6     return true; 7   } 8   else 9   { 10      return false; 11   } 12  }
Paradigma paralelo O que é? Consiste em executar simultaneamente várias partes de uma mesma aplicação. Tornou-se possível a partir do desenvolvimento de sistemas operacionais multitarefa e paralelos. 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 O que é? Consiste em executar aplicações cooperantes em máquinas diferentes. Tornou-se possível a partir da popularização das redes de computadores. Aplicações são executadas em máquinas diferentes interligadas por uma rede. Intranets Internet Outras redes públicas ou privadas
Diferenças Acoplamento Sistemas paralelos são fortemente acoplados: compartilham hardware ou se comunicam através de um barramento de alta velocidade Sistemas distribuídos são fracamente acoplados Previsibilidade O comportamento de sistemas paralelos é mais previsível; já os sistemas distribuídos são mais imprevisíveis devido ao uso da rede e a falhas. Influência do Tempo Sistemas distribuídos são bastante influenciados pelo tempo de comunicação pela rede; em geral não há uma referência de tempo global. Em sistemas paralelos o tempo de troca de mensagens pode ser desconsiderado. Controle Em geral em sistemas paralelos se tem o controle de todos os recursos computacionais; já os sistemas distribuídos tendem a empregar também recursos  de terceiros.
Vantagens Usam melhor o poder de processamento. Apresentam um melhor desempenho. Permitem compartilhar dados e recursos. Podem apresentar maior confiabilidade. Permitem reutilizar serviços já disponíveis. Atendem um maior número de usuários. ...
Dificuldades Desenvolver, gerenciar e manter o sistema. Controlar o acesso concorrente a dados e a recursos compartilhados. Evitar que falhas de máquinas ou da rede comprometam o funcionamento do sistema. Garantir a segurança do sistema e o sigilo dos dados trocados entre máquinas. Lidar com a heterogeneidade do ambiente. ...
Plataformas de Execução Um S.O. multitarefa permite simular o paralelismo em um único processador, alternando a execução de processos. Um processador com núcleo múltiplo permite paralelismo real entre processos, executando múltiplas instruções por ciclo.
Plataformas de Execução Uma Placa-Mãe Multiprocessador permite que cada processador execute um processo. Um Cluster é uma solução de baixo custo para processamento de alto desempenho.
ALUNA: KEITH CARVALHO SistemasTecnoLife.blogspot.com Paradigma funcional
Linguagem funcional É um paradigma de programação baseada em funções matemáticas. Um programa pode ser visto como um mapeamento de valores de entrada em valores de saída.
Entrada Programa Saída Estado Entrada Programa Saída
O mapeamento é feito de forma direta. O programa é uma função tipicamente composta por sub-funções mais simples. Programação funcional exclui atribuição e controle, portanto LISP não é uma linguagem funcional pura. O relacionamento entre funções é bastante simples: uma função pode chamar outra ou o resultado de uma função pode ser usado como argumento de outra.
Em programação funcional, variáveis, comandos e efeitos colaterais são excluídos. Programas são escritos por meio de expressões, funções e declarações. Paradigma funcional tem sido mais usado academicamente que no desenvolvimento de software. O interpretador de linguagem funcional atua como uma calculadora: lê, calcula e mostra o resultado.
Em resumo: •  Programação Imperativa : Uso de variáveis, comandos e procedimentos. •  Programação Funcional : Uso de expressões e funções.
Pascal    program  fatorial2;    uses  crt;    var  n:integer;         function  fat(n:integer):integer;      var  f,i:integer;      begin       f:=1;      i:=1;        while  (i<n)  do        begin         i:=i+1;         f:=f*i        end ;       fat:=f      end ;       begin     read(n);      if  n>=0  then  writeln(fat(n))      else  writeln('valor inválido')    end .
Common Lisp:   (defun fatorial (n)  (if (= n 0)  1  (* n (fatorial (- n 1)))))
Vantagens do Paradigma funcional As linguagens funcionais fornecem um alto nível de abstração, o que faz com que os programas funcionais sejam mais pequenos, claros, rápidos.
Desvantagem do Paradigma funcional Os programas funcionais podem ser menos eficientes.
Exemplos: Lisp, ML, Miranda e Haskell Lisp: A primeira LP funcional criada por john Macharthy no fim dos anos 50. Haskell: surgiu no fim dos anos 80.  http://www.haskell.com.br
ALUNA: NAYANE GETIRANA SistemasTecnoLife.blogspot.com Paradigma Lógico
O que é Lógica de programação? Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. Programação em lógica é uma teoria que representa um modelo abstrato de computação, e faz uso da lógica matemática.
O que é uma seqüência Lógica? Nada mais é que uma série de instruções, que são um conjunto de regras ou normas definidas para a realização ou emprego de algo.
Características Uma das características principais das linguagens para programação em lógica é sua semântica declarativa.
Principais linguagens lógicas Prolog Mercury Sparcl
Os ‘meios’ gerados pelos paradigmas de programação. No meio gerado pela programação em lógica, um programa não contem instruções explícitas à máquina. Em vez disso, ele estabelece ‘fatos’ e ‘regras sobre a área do problema como um conjunto de axiomas lógicos, que são ‘interpretados’ como ‘programas’.
Exemplo: fatorial(0,1). fatorial(N,Fat):-N>0, N1 is N-1, fatorial(N1,Fat1), Fat is Fat1*N*
Vantagens Em princípio, todas do paradigma funcional Permite concepção da aplicação em um alto nível de abstração (através de associações entre E/S) Problemas Em princípio, todos do paradigma funcional Linguagens usualmente não possuem tipos,  nem são de alta ordem
Histórico: Origem de LPs FORTRAN (1957)  aplicações numéricas LISP (1959)  programação funcional ALGOL (1960) programação estruturada COBOL (1960) aplicações comerciais BASIC (1964) ensino para leigos C++ (1985) disseminação da programação orientada a objetos PASCAL (1971) ensino de programação estruturada; simplicidade C (1972) implementação de UNIX PROLOG (1972) programação lógica SMALLTALK (1972) programação orientada a objetos ADA (1983) programação concorrente JAVA (1995) mais simples e confiável que C++; internet
 

Apresentação final

  • 1.
    GRUPO: ELISA FERNANDESKEITH CARVALHO LUCAS VILLAR NAYANE GETIRANA VALMON GAUDENCIO SistemasTecnoLife.blogspot.com Paradigmas de linguagem de programação
  • 2.
    ALUNA: ELISA CRAVOFERNANDES SistemasTecnoLife.blogspot.com Introdução à LP’s
  • 3.
    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?
  • 4.
    O que éum Paradigma? Modelo, padrão É um modelo imperativo de uma realidade Permite organizar as idéias com vista: Ao atendimento dessa realidade À determinação de qual é a melhor forma de atuar sobre essa realidade
  • 5.
    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.
  • 6.
    Características de Paradigmasde 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
  • 7.
    História A primeiralinguagem de programação para computadores foi provavelmente Plankalkül, criada por Konrad Zuse na Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programação. A primeira linguagem de programação de alto nível amplamente usada foi Fortran, criada em 1954.
  • 8.
    Por que estudarLP’s ? Programação é central para computação Linguagens de consulta a banco de dados têm muitos dos conceitos de linguagens de programação Linguagens de comando de sistemas operacionais têm muitos dos conceitos de linguagens de programação Linguagens de descrição de hardware têm muitos dos conceitos de linguagens de programação Processamento de linguagem natural é relacionado a processamento de linguagens de programação
  • 9.
    Para que servemas LP’s ? Permitem que programadores tenham uma maior produtividade, ajudando-os a expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Tornam os programas menos dependentes de computadores ou ambientes computacionais específicos
  • 10.
    Propriedades Desejáveis emuma LP Legibilidade Regibilidade Confiabilidade Eficiência Facilidade de aprendizado Ortogonalidade Reusabilidade Modificabilidade Portabilidade
  • 11.
    Por que tantasLP’s ? Propósitos diferentes Avanços tecnológicos Interesses comercias Cultura e background científico
  • 12.
    ALUNO: LUCAS VILLARSistemasTecnoLife.blogspot.com Paradigma Imperativo e Orientado a Objeto
  • 13.
    O Paradigma ImperativoProgramas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado Paradigma também denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturação Primeiro paradigma a surgir Ainda é muito utilizado
  • 14.
    Modelo Computacional doParadigma Imperativo Entrada Programa Saída Estado
  • 15.
    Vantagens do modeloimperativo Eficiência (embute modelo de Von Neumann) Modelagem “natural” de aplicações do mundo real Paradigma dominante e bem estabelecido
  • 16.
    Desvantagens do paradigmaimperativo Relacionamento indireto entre E/S resulta em: difícil legibilidade erros introduzidos durante manutenção descrições demasiadamente operacionais focalizam o como e não o que
  • 17.
    Alguns exemplos delinguagens do modelo imperativo Ada Algol Basic C Cobol Fortran Pascal Python
  • 18.
    O Paradigma Orientadoa Objetos Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo A diferença é mais de metodologia quanto à concepção e modelagem do sistema A grosso modo, uma 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 (cujos elementos são objetos)
  • 19.
    Modelo Computacional doParadigma 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
  • 20.
    Vantagens do Paradigma Orientado a Objetos Todas as do estilo imperativo Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade Aceitação comercial crescente.
  • 21.
    Problemas do ParadigmaOO Semelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação
  • 22.
    Alguns exemplos delinguagens do modelo OO Ada Algol Basic C Cobol Fortran
  • 23.
    ALUNO VALMON GAUDENCIODA SILVA BARBOSA SistemasTecnoLife.blogspot.com Paradigma Paralelo e Distribuído
  • 24.
    Paradigma Concorrente –(Paralelo e Distribuído) Paradigma Concorrente Paradigma Paralelo e Distribuído + Vantagens e Dificuldades + Suporte Computacional
  • 25.
  • 26.
    Paradigma Concorrente Sebem utilizado, o paralelismo resulta em um melhor desempenho dos programas. + Mais threads --> processador melhor utilizado No entanto, podem ocorrer problemas no acesso concorrente a dados e recursos. + Dados podem se tornar inconsistentes ao serem acessados concorrentemente (ex.: duas pessoas editando o mesmo arquivo) + Alguns recursos não podem ser compartilhados (ex.: dois programas usando a impressora)
  • 27.
    Como prevenir quetarefas concorrentes interfiram umas nas outras. 1 bool saque( int quantia ) 2 { 3   if( balanco > quantia ) 4  { 5     balanco = balanco - quantia; 6     return true; 7   } 8   else 9   { 10     return false; 11  } 12 }
  • 28.
    Paradigma paralelo Oque é? Consiste em executar simultaneamente várias partes de uma mesma aplicação. Tornou-se possível a partir do desenvolvimento de sistemas operacionais multitarefa e paralelos. 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.
  • 29.
    Paradigma Distribuído Oque é? Consiste em executar aplicações cooperantes em máquinas diferentes. Tornou-se possível a partir da popularização das redes de computadores. Aplicações são executadas em máquinas diferentes interligadas por uma rede. Intranets Internet Outras redes públicas ou privadas
  • 30.
    Diferenças Acoplamento Sistemasparalelos são fortemente acoplados: compartilham hardware ou se comunicam através de um barramento de alta velocidade Sistemas distribuídos são fracamente acoplados Previsibilidade O comportamento de sistemas paralelos é mais previsível; já os sistemas distribuídos são mais imprevisíveis devido ao uso da rede e a falhas. Influência do Tempo Sistemas distribuídos são bastante influenciados pelo tempo de comunicação pela rede; em geral não há uma referência de tempo global. Em sistemas paralelos o tempo de troca de mensagens pode ser desconsiderado. Controle Em geral em sistemas paralelos se tem o controle de todos os recursos computacionais; já os sistemas distribuídos tendem a empregar também recursos de terceiros.
  • 31.
    Vantagens Usam melhoro poder de processamento. Apresentam um melhor desempenho. Permitem compartilhar dados e recursos. Podem apresentar maior confiabilidade. Permitem reutilizar serviços já disponíveis. Atendem um maior número de usuários. ...
  • 32.
    Dificuldades Desenvolver, gerenciare manter o sistema. Controlar o acesso concorrente a dados e a recursos compartilhados. Evitar que falhas de máquinas ou da rede comprometam o funcionamento do sistema. Garantir a segurança do sistema e o sigilo dos dados trocados entre máquinas. Lidar com a heterogeneidade do ambiente. ...
  • 33.
    Plataformas de ExecuçãoUm S.O. multitarefa permite simular o paralelismo em um único processador, alternando a execução de processos. Um processador com núcleo múltiplo permite paralelismo real entre processos, executando múltiplas instruções por ciclo.
  • 34.
    Plataformas de ExecuçãoUma Placa-Mãe Multiprocessador permite que cada processador execute um processo. Um Cluster é uma solução de baixo custo para processamento de alto desempenho.
  • 35.
    ALUNA: KEITH CARVALHOSistemasTecnoLife.blogspot.com Paradigma funcional
  • 36.
    Linguagem funcional Éum paradigma de programação baseada em funções matemáticas. Um programa pode ser visto como um mapeamento de valores de entrada em valores de saída.
  • 37.
    Entrada Programa SaídaEstado Entrada Programa Saída
  • 38.
    O mapeamento éfeito de forma direta. O programa é uma função tipicamente composta por sub-funções mais simples. Programação funcional exclui atribuição e controle, portanto LISP não é uma linguagem funcional pura. O relacionamento entre funções é bastante simples: uma função pode chamar outra ou o resultado de uma função pode ser usado como argumento de outra.
  • 39.
    Em programação funcional,variáveis, comandos e efeitos colaterais são excluídos. Programas são escritos por meio de expressões, funções e declarações. Paradigma funcional tem sido mais usado academicamente que no desenvolvimento de software. O interpretador de linguagem funcional atua como uma calculadora: lê, calcula e mostra o resultado.
  • 40.
    Em resumo: • Programação Imperativa : Uso de variáveis, comandos e procedimentos. • Programação Funcional : Uso de expressões e funções.
  • 41.
    Pascal    program fatorial2;    uses  crt;    var  n:integer;         function  fat(n:integer):integer;      var  f,i:integer;      begin       f:=1;      i:=1;        while  (i<n)  do        begin         i:=i+1;         f:=f*i        end ;       fat:=f      end ;       begin     read(n);      if  n>=0  then  writeln(fat(n))      else  writeln('valor inválido')    end .
  • 42.
    Common Lisp: (defun fatorial (n) (if (= n 0) 1 (* n (fatorial (- n 1)))))
  • 43.
    Vantagens do Paradigmafuncional As linguagens funcionais fornecem um alto nível de abstração, o que faz com que os programas funcionais sejam mais pequenos, claros, rápidos.
  • 44.
    Desvantagem do Paradigmafuncional Os programas funcionais podem ser menos eficientes.
  • 45.
    Exemplos: Lisp, ML,Miranda e Haskell Lisp: A primeira LP funcional criada por john Macharthy no fim dos anos 50. Haskell: surgiu no fim dos anos 80. http://www.haskell.com.br
  • 46.
    ALUNA: NAYANE GETIRANASistemasTecnoLife.blogspot.com Paradigma Lógico
  • 47.
    O que éLógica de programação? Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. Programação em lógica é uma teoria que representa um modelo abstrato de computação, e faz uso da lógica matemática.
  • 48.
    O que éuma seqüência Lógica? Nada mais é que uma série de instruções, que são um conjunto de regras ou normas definidas para a realização ou emprego de algo.
  • 49.
    Características Uma dascaracterísticas principais das linguagens para programação em lógica é sua semântica declarativa.
  • 50.
    Principais linguagens lógicasProlog Mercury Sparcl
  • 51.
    Os ‘meios’ geradospelos paradigmas de programação. No meio gerado pela programação em lógica, um programa não contem instruções explícitas à máquina. Em vez disso, ele estabelece ‘fatos’ e ‘regras sobre a área do problema como um conjunto de axiomas lógicos, que são ‘interpretados’ como ‘programas’.
  • 52.
    Exemplo: fatorial(0,1). fatorial(N,Fat):-N>0,N1 is N-1, fatorial(N1,Fat1), Fat is Fat1*N*
  • 53.
    Vantagens Em princípio,todas do paradigma funcional Permite concepção da aplicação em um alto nível de abstração (através de associações entre E/S) Problemas Em princípio, todos do paradigma funcional Linguagens usualmente não possuem tipos, nem são de alta ordem
  • 54.
    Histórico: Origem deLPs FORTRAN (1957) aplicações numéricas LISP (1959) programação funcional ALGOL (1960) programação estruturada COBOL (1960) aplicações comerciais BASIC (1964) ensino para leigos C++ (1985) disseminação da programação orientada a objetos PASCAL (1971) ensino de programação estruturada; simplicidade C (1972) implementação de UNIX PROLOG (1972) programação lógica SMALLTALK (1972) programação orientada a objetos ADA (1983) programação concorrente JAVA (1995) mais simples e confiável que C++; internet
  • 55.