O documento discute paradigmas de programação, incluindo imperativo, funcional, lógico e orientado a objetos. Ele explica que diferentes linguagens suportam diferentes paradigmas e que escolher o paradigma correto para cada problema é importante para o sucesso de um programador.
2. 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
3. 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
4. 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
5. 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
7. 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
8. 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
9. 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
10. 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
11. 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
12. 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
13. 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
14. 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