UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Linguagens de Programação
Algumas linguagens
  C, C++, Java, D, Perl, Python, Lua, Bash, Prolog, Pascal,
  Basic, Fortran, COBOL, ASM, Lisp, Haskell, Modula-2,
  Oberon, Java, C#, PL/1, Ada, Smalltalk, Simula, Algol, Eiffel,
  Scheme, CLOS, Maude, Glass, Holo,...
Motivo?
  Propósitos diferentes
  Avanços tecnológicos
  Interesses comerciais
  Cultura e background científico
                                       Prof. Fabio Alexandre Spanhol, M.Sc.   2
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Paradigma
Noção Geral
  Modelo interpretativo ou conceitual de uma
  realidade
   • Ponto de Vista
   • Entendimento dessa realidade
   • Melhor forma de atuação
   • Conceitos Base
  Exemplos
   • Políticos: Liberalismo, fascismo, comunismo, socialismo, etc.
   • Econômicos: Monetarismo, Keynesianismo, etc.
   • Programação: Imperativo, funcional, OO, etc.
                                      Prof. Fabio Alexandre Spanhol, M.Sc.   3
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Paradigma
"Um paradigma é o que os
membros de uma comunidade
científica compartilham e uma
comunidade científica consiste
de pessoas que compartilham um
paradigma.“ Thomas Kuhn, The
Structure of Scientific Revolutions
(1962)


                                       Prof. Fabio Alexandre Spanhol, M.Sc.   4
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Paradigma de Programação
Programação
  Processamento de informação
Trata computacionalmente os problemas
encontrados no mundo real
  Fornece e determina a visão que o programador
  possui sobre a estruturação e execução do programa
  A forma com que o programador deve raciocinar e
  utilizar os recursos da linguagem
  Determina a forma com que o desenvolvedor do
  programa analisa os dados
                                      Prof. Fabio Alexandre Spanhol, M.Sc.   5
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Paradigma de Programação

                                                Realidade

                                                  Domínio




                                     Prof. Fabio Alexandre Spanhol, M.Sc.   6
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Paradigmas de Programação
 Paradigma imperativo
  Conceitos: estado, atribuição, sequenciação
  Linguagens: BASIC, Pascal, C, Algol, FORTRAN,
  Assembly, etc.


 Paradigma funcional
  Conceitos: função, aplicação, avaliação
  Linguagens: Lisp, ML, Ocaml, Haskell, etc.
                                      Prof. Fabio Alexandre Spanhol, M.Sc.   7
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Paradigmas de Programação
Paradigma lógico
  Conceitos: relação, dedução
  Linguagens: Prolog


Paradigma orientado a objetos
  Conceitos: objeto, mensagem
  Linguagens: Python, C++, Java, Eiffel, C#,
  Smalltalk, etc.


                                      Prof. Fabio Alexandre Spanhol, M.Sc.   8
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Paradigmas de Programação
Paradigma concorrente
  Conceitos: processo, comunicação (síncrona ou assíncrona)
  Linguagens: Occam, Ada, Java, Limbo, Pict, etc.




                                      Prof. Fabio Alexandre Spanhol, M.Sc.   9
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Modelos
Modelo imperativo                                       Modelo declarativo
 Linguagens expressam           Linguagens que não
  sequências de comandos          possuem os conceitos de
  que realizam transformações        sequências de comandos
  sobre dados                        atribuição
 Dominante e bem                linguagens funcionais: ênfase
  estabelecido                    em valores computados por
 Base: máquina de von            funções
  Neumann                        linguagens lógicas: ênfase
    orientadas a procedimentos   em axiomas lógicos
    orientadas a objetos
                                          Prof. Fabio Alexandre Spanhol, M.Sc.   10
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Modelos de execução
Sequencial                                          Concorrente
 Uma computação é                                       Múltiplas computações
 realizada após o término                               podem ser executadas
 da anterior                                            simultaneamente
 Controle de fluxo de                                   Computações paralelas
 execução interno ao                                         múltiplos processadores
 programa:                                                   compartilham memória
    sequência                                           Computações distribuídas
    seleção                                                  múltiplos computadores
    iteração                                                 conectados por uma rede de
                                                             comunicação
    invocações
                                     Prof. Fabio Alexandre Spanhol, M.Sc.                 11
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Qual usar?
O “grau de sucesso” de um
programador depende em parte:
  Coleção de paradigmas que domina
  Da habilidade em escolher o modelo
  conceitual (paradigma) mais indicado
  para analisar e resolver cada
  problema



                                      Prof. Fabio Alexandre Spanhol, M.Sc.   12
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Qual usar?
 Lembre-se
  Todo problema é um PREGO, se você tem
  apenas um martelo?




                                      Prof. Fabio Alexandre Spanhol, M.Sc.   13
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ




Referências
 SEBESTA, Robert W.
Conceitos de Linguagens
de Programaçao. Porto
Alegre: Bookman, 2011.




                                      Prof. Fabio Alexandre Spanhol, M.Sc.   14

Paradigmas de Linguagens de Programação

  • 1.
  • 2.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Linguagens de Programação Algumas linguagens C, C++, Java, D, Perl, Python, Lua, Bash, Prolog, Pascal, Basic, Fortran, COBOL, ASM, Lisp, Haskell, Modula-2, Oberon, Java, C#, PL/1, Ada, Smalltalk, Simula, Algol, Eiffel, Scheme, CLOS, Maude, Glass, Holo,... Motivo? Propósitos diferentes Avanços tecnológicos Interesses comerciais Cultura e background científico Prof. Fabio Alexandre Spanhol, M.Sc. 2
  • 3.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Paradigma Noção Geral Modelo interpretativo ou conceitual de uma realidade • Ponto de Vista • Entendimento dessa realidade • Melhor forma de atuação • Conceitos Base Exemplos • Políticos: Liberalismo, fascismo, comunismo, socialismo, etc. • Econômicos: Monetarismo, Keynesianismo, etc. • Programação: Imperativo, funcional, OO, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 3
  • 4.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Paradigma "Um paradigma é o que os membros de uma comunidade científica compartilham e uma comunidade científica consiste de pessoas que compartilham um paradigma.“ Thomas Kuhn, The Structure of Scientific Revolutions (1962) Prof. Fabio Alexandre Spanhol, M.Sc. 4
  • 5.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Paradigma de Programação Programação Processamento de informação Trata computacionalmente os problemas encontrados no mundo real Fornece e determina a visão que o programador possui sobre a estruturação e execução do programa A forma com que o programador deve raciocinar e utilizar os recursos da linguagem Determina a forma com que o desenvolvedor do programa analisa os dados Prof. Fabio Alexandre Spanhol, M.Sc. 5
  • 6.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Paradigma de Programação Realidade Domínio Prof. Fabio Alexandre Spanhol, M.Sc. 6
  • 7.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Paradigmas de Programação Paradigma imperativo Conceitos: estado, atribuição, sequenciação Linguagens: BASIC, Pascal, C, Algol, FORTRAN, Assembly, etc. Paradigma funcional Conceitos: função, aplicação, avaliação Linguagens: Lisp, ML, Ocaml, Haskell, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 7
  • 8.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Paradigmas de Programação Paradigma lógico Conceitos: relação, dedução Linguagens: Prolog Paradigma orientado a objetos Conceitos: objeto, mensagem Linguagens: Python, C++, Java, Eiffel, C#, Smalltalk, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 8
  • 9.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Paradigmas de Programação Paradigma concorrente Conceitos: processo, comunicação (síncrona ou assíncrona) Linguagens: Occam, Ada, Java, Limbo, Pict, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 9
  • 10.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Modelos Modelo imperativo Modelo declarativo  Linguagens expressam  Linguagens que não sequências de comandos possuem os conceitos de que realizam transformações  sequências de comandos sobre dados  atribuição  Dominante e bem  linguagens funcionais: ênfase estabelecido em valores computados por  Base: máquina de von funções Neumann  linguagens lógicas: ênfase  orientadas a procedimentos em axiomas lógicos  orientadas a objetos Prof. Fabio Alexandre Spanhol, M.Sc. 10
  • 11.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Modelos de execução Sequencial Concorrente Uma computação é Múltiplas computações realizada após o término podem ser executadas da anterior simultaneamente Controle de fluxo de Computações paralelas execução interno ao múltiplos processadores programa: compartilham memória sequência Computações distribuídas seleção múltiplos computadores iteração conectados por uma rede de comunicação invocações Prof. Fabio Alexandre Spanhol, M.Sc. 11
  • 12.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Qual usar? O “grau de sucesso” de um programador depende em parte: Coleção de paradigmas que domina Da habilidade em escolher o modelo conceitual (paradigma) mais indicado para analisar e resolver cada problema Prof. Fabio Alexandre Spanhol, M.Sc. 12
  • 13.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Qual usar? Lembre-se Todo problema é um PREGO, se você tem apenas um martelo? Prof. Fabio Alexandre Spanhol, M.Sc. 13
  • 14.
    UNIVERSIDADE TECNOLÓGICA FEDERALDO PARANÁ Referências SEBESTA, Robert W. Conceitos de Linguagens de Programaçao. Porto Alegre: Bookman, 2011. Prof. Fabio Alexandre Spanhol, M.Sc. 14