Zusammenfassung der Ressource
INTRODUÇÃO AOS
PARADIGMAS DAS
LINGUAGENS DE
PROGRAMAÇÃO
- ASSIM COMO TODA A PARTE DE
HARDWARE, SOFREU VÁRIAS
MUDANÇAS AO LONGO DOS
ANOS, A FÓRMA COMO SE
PROGRAMA TAMBÉM
MODIFICOU-SE, DE ACORDO COM
A VISÃO DE CADA LINGUAGEM
PROJETADA. CRIOU-SE TAMBÉM
VÁRIOS PARADIGMAS DA
PROGRAMAÇÃO.
- QUAL O
SIGNIFICADO DE
PARADIGMA?
- O TERMO SIGNIFICA MODELO, OU
SEJA, A DEFINIÇÃO DE UM PADRÃO
A SER SEGUIDO.
- O CONCEITO NASCEU EM 1900 A
PRINCIPIO RELACIONAVA-SE
SOMENTE A LINGUAGEM E
COMUNICAÇÃO HUMANA, MAIS
TARDE FOI UTILIZADO TAMBÉM NA
COMPUTAÇÃO.
- O PARADIGMA DE
PROGRAMAÇÃO, DEFINE A FÓRMA
DE COMO FAZER A
ESTRUTURAÇÃO DAS INSTRUÇÕES
EM UMA DETERMINADA LING.
UTILIZADA PELO PROGRAMADOR,
AFIM DE DESENVOLVER UM PROG.
CAPAZ DE REALIZAR
DETERMINADAS TAREFAS.
- ATUALMETE É FORMADO
POR DOIS GRUPOS PRICIPAIS
E SUBDIVIDIDA EM NOVOS
GRUPOS
- 2-
PROGRAMAÇÃO
DECLARATIVA
- É UM TIPO DE LINGUAGEM QUE O PROGRAMADOR DESCREVE, "Q META UMA
TAREFA TEM", SEM ESCREVER O CÓDIGO P/ REALIZAÇÃO DA TAREFA.( EX:" Ñ
DESCREVE COMO ELA "DEVERÁ SERÁ REALIZADA"). SENDO O OPOSTO DA
IMPERATIVA.
- APRESENTA VÁRIAS VANTAGENS EM COMPARAÇÃO COM OUTRAS LINGUAGENS,
ONDE É PRECISO REALMENTE ESCREVER TODO O CÓDIGO Q DEFINE O PROGRAMA
E COMO ELE DEVE REALIZAR AS TAREFAS.
- SÃO PROGRAMAS FEITOS EM LING.DECLARATIVA SÃO MENORES SE COMPARADO
COM PROG. FEITOS EM LING.IMPERATIVA
- EXEMPLOS DE LINGUAGEM DECLARATIVA
- HTML
- SQL
- SITE UTILIZADO NA MINHA PESQUIZA SOBRE ESTE ASSUNTO P/ MINHAS FUTURAS
PESQUIZAS: http://pt.wingwit.com/P/computer-programming-languages/
86807.html#.VSqcKrVFDmQ
- PROLOG
- 2.1-
PROGRAMÃÇÃO
FUNCIONAL
- É UM PARADIGMA Q TRATA A COMPUTAÇÃO COMO
UMA AVALIAÇÃO DE "FUNÇÃO MATEMÁTICA",
EVITANDO "ESTADOS" OU "DADOS MÚTAVEIS".
- DESTA FÓRMA UMA FUNÇÃO PÓDE OU Ñ TER
"PARAMETROS" E UM SIMPLES VALOR DE RETORNO.
ONDE OS "PARAMETROS" SÃO OS "VALORES DE
ENTRADA" DA "FUNÇÃO" E O VALOR DE "RETORNO"
É O RESULTADO DA FUNÇÃO.
- A DEFINIÇÃO DE UMA "FUNÇÃO" DIZ COMO A
FUNÇÃO SERÁ AVALIADA EM COMPARAÇÃO A
OUTRAS FUNÇÕES.
- EXEMPLO
- A FUNÇÃO "f(x) = x^2 + 2 )
É DEFINIDA EM TERMOS
DE FUNÇÕES DE
"EXPONENCIAÇÃO" E
"ADIÇAO". DO MESMO
MODO A LING. DEVE
OFERECER FUNÇÕES
BÁSICAS Q Ñ REQUEREM
DEFINIÇÕES ADICIONAIS.
- EX: DE LING. Q'SE
UTILIZAM DESSA
ABORDAGEM
- APL, F#
- LISP, ML
- HASKELL
- OCAML
- VANTAGEM
- POSSUI MAIOR
TRANSPARENCIA
REFERENCIAL, JÁ
Q O PROG. É
COMPOSTO POR
FUNÇÕES,
FICANDO FÁCIL,
VERRIFICAR O
CÓDIGO.
- DESVANTAGEM
- Ñ OFERECE
ALOCAÇÃO
EXPLICITA DE
MEMÓRIA E
NEM
DECLARAÇÃO
EXPLICITA DE
VÁRIAVEIS,
NECESSÁRIOS
P/ SANAR
PROBLEMAS
REAIS.
- 2.2-
PROGRAMAÇÃO
LÓGICA
- É UM PARADIGMA Q FAZ USO DA LÓGICA MATEMÁTICA, P/ RESOLVER PROBLEMAS POR MEIO
DE VALORES OU OBJETOS E RELAÇÕES ENTRE OS MESMOS, FORMULANDO AS SUAS
PROPOSIÇÕES E REGRAS. (PROPOSTA PELA PRIMEIRA VEZ POR: "JOHN McCarthy" EM "1958"
P/ USO DENTRO DA PROGRAMAÇÃO).
- A "PRIMEIRA LING.D'PROG. LÓGICA" FOI O "PLANNER" A
QUAL PERMITIA A INVOCAÇÃO ORIENTADA A PADRÕES DE
PLANOS PROCEDIMENTAIS DE ASSERCÕES E OBJETIVOS.
FAZIA-SE NESCESSÁRIO DEVIDO AO SISTEMAS COM
"MEMÓRIA MUITO LIMITADAS", Q ERAM AS ÚNICAS
DISPONIVEIS QUANDO FOI DESENVOLVIDO A LING.
- USAVA "ESTRUTURAS
DE CONTROLE" DE
"BACKTRACKING", Q
APENAS UM CAMINHO
COMPUTACIONAL ERA
ARMAZENADO POR
VEZ.
- O "PROLOG" FOI A
"SEGUNDA" ELE FOI
DESENVOLVIDO NUMA
FÓRMA SIMPLIFICADA DO
"PLANNER", Q PERMITIA A
INVOCAÇÃO ORIENTADA A
PADRÕES APENAS APARTIR
DE OBJETIVOS (TBM FOI
BASEADO EM
"BACKTRACKING").
- APARTIR DO "PROLOG" FORAM
DESENVOLVIDAS AS SEGUINTES
LING:
- MERCURY, VISUAL PROLOG, OZ
E FRILL.
- APARTIR DO
"PLANNER" FORAM
DESENVOLVIDAS
OUTRAS LING. DENTRE
ELAS PODEMOS
DESTACAR:
- QA-4,
POPLER,CONNIVER
E QISP.
- VANTAGEM
- DESVANTAGEM
- PODE HAVER "EXPLOSÃO COMBINATORIAL" DA
BASE DE CONHECIMENTO LEVANDO AO
DESPERDÍCIO DE RECURSO COMPUTACIONAIS.
- MUITO UTEIS EM PROBLEMAS Q POSSAM
SER RESOLVIDOS POR MEIO DE DEDUÇÃO
OU INFERÊNCIA
- 2.3-
PROGRAMAÇÃO
RESTRITIVA
- NASCEU DA PROGRAMAÇÃO LÓGICA, MOTIVO PELO QUAL VÁRIOS
AUTORES A APONTAM COMO PARTE DA MESMA. HOJE JÁ EXISTEM
IMPLEMENTAÇÕES BASEADAS EM "PROG.FUNCIONAL" (COMO EM
"OZ") E NA "PROG.IMPERATIVA" (COMO EM "KALEIDOSCOP).
- SE REFERE AO USO DE RESTRIÇÕES NA CONSTRUÇÃO DAS
RELAÇÕES ENTRE VARIÁVEIS, DE FÓRMA GERAL AS RESTRIÇÕES SÃO
IMPLEMEMTADAS COMO UMA EXTENSÃO DE UMA LING. JÁ
EXISTENTE.
- SEU USO PÓDE SER NECESSÁRIO NOS PROBLEMAS CUJA SOLUÇÃO
POSSA SER RESTRITA A UM NÚMERO DE VALORES. ESSE TIPO DE
PROBLEMA É CHAMADO DE "CSP"(CONSTRAIT SATISFACTION
PROBLEM) NO QUAL SÃO DADOS:
- .UM CONJUNTO FINITO DE VARIÁVEIS
- .UMA FUNÇÃO Q MAPEIA CADA VARIÁVEL A UM DOMINIO FINITO
- .UM CONJUNTO FINITO DE RESTRIÇÕES
- 3.0- LING.
DE PROG.
MULTIPARADIGMA
- É A LING. Q SUPÓRTA MAIS DE UM PARADIGMA DE
PROG. A IDÉIA DESTA LING. DE PROG. É FORNECER UM
"FRAMEWORK" NO QUAL O PROGRAMADOR PÓDE
TRABALHARA COMO VÁRIOS ESTILOS DE PARADIGMAS
SIMULTANEAMENTE, MISTURANDO-OS LIVREMENTE.
- BASEIA-SE TAMBÉM NA IDÉIA DE QUE NENHUM
PARADIGMA POR SI SÓ, CONSEGUE RESOLVER A
TODOS OS PROBLEMAS DA MANEIRA MAIS ELEGANTE
OU MESMO EFICIENTE.
- UM EXEMPLO DE
LING.
MULTIPARADIGMA
É O:
- C++
- PERMITE A PROG. ESTRUTURADA, PROG.
ORIENTADA A OBJETO E PROG. CONCORRENTE.
- VANTAGEM
- DESVANTAGEM
- POR INCORPORAR
VÁRIAS LING. PODE
SER DE DIFICIL
COMPREENSÃO.
- O PROGRAMADOR PODE USAR O
PARADIGMA Q PREFERIR EM SUA
EMPLEMENTAÇÃO.
- OUTRAS
- GROOVY,
OZ,RUBBY E
SCALA
- 1-
PROGRAMAÇÃO
IMPERATIVA
- NO PARADIGMA
IMPERATIVO, HÁ
GRANDE
PREUCUPAÇÃO
COM O
DETALHAMENTO E
FUNCIONAMENTO
DO PROGRAMA
- É VISTO COMO UM
CONJUNTO DE
ROTINAS E
SUBROTINAS
(TAMBÉM
CONHECIDAS COMO
"PROCEDURAL OU
PROCIDIMENTAL")
ENFATIZAN-SE AS
MUDANÇAS DE
ESTADO DO PROG.
(REGIST. POR MEIO
DA VAR. GLOBAIS E
LOCAIS)
- A UM FOCO MAIOR EM COMO UM
"PROG. DEVE EXEC. UMA TAREFA",
AO INVÉS DE FOCAR "ENQUE O PROG.
DEVE FAZER.
- 1.1-
PROGRAMAÇÃO
ESTRUTURADA
- O PROGRAMADOR DEVE ESCREVER TODO O
SEU PROG. POR MEIO DE INSTRUÇÕES,
ESTRUTURAS DE DADOS E SUBROTINAS.
- ALGUMAS LING. DE PROG. CONSIDERADAS
ESTRUTURADAS SÃO:
- PASCAL,
C, COBOL
E
FORTRAN.
- VANTAGENS
- GERELMENTE SÃO LING.
FACEIS DE SEREM APRENDIDAS
, JÁ Q ENVOLVE UM MENOR
NÚMERO DE COCEITOS
DISTINTOS EM COMPARAÇÃO A
OUTROS PARADIGMAS.
PERMITE A MODULARIZAÇÃO:
"OU SEJA A DIVISÃO EM
MÓDULOS INDEPENDETES
LÓGICOS E FISICAMENTE,
FACILITANDO A CRIAÇÃO DE
SISTEMAS E A MANUTENÇÃO
DOS MESMOS". "UTEIS NOS
PROBLEMAS + SIMPLES.
- DESVANTAGENS
- APRESSENTA NIIVEIS MAIORES
DE DIFICULDADE, QUANDO
NECESSITA REPRESENTAR
SOLUÇÕES "PRÁTICAS NO
MUNDO REAL", Q NA SUA
MAIORIA SÃO MAIS
COMPLEXOS. APRESENTAM TBM
DIFICULDADES EM SE MANTER
QUANDO EMPREGADO EM
PROBLEMAS MAIS COMPLEXOS,
GERALMENTE PROBLEMAS
ONDE CONCEITOS COMO
HERANÇA E POLIMORFISMO
PODERIAM AUDAR A ABSTRAIR
PARTE DOS MESMOS.
- 1.2-
PROGRAMAÇÃO
ORIENTADA A
OBJETOS
- É CONSTITUIDO POR 4 PILARES
- ABSTRAÇAO
- CONSISTE EM UM DOS PONTOS MAIS
IMPORTANTES DENTRO DA LING. COMO
ESTAMOS REPRESENTANDO UM OBJETO
REAL, PRECISA SER IMAGINADO O Q ELE
IRA REALIZAR DENTRO DO SISTEMA. "3
PONTOS" PRECISAM SER "LEVADOS EM
CONCIDERAÇÃO".
- 1_ É PRECISO DAR UMA "IDENTIDADE"
"ÚNICA AO OBJETO A SER CRIADO DENTRO
DO SISTEMA, P/ Q Ñ HAJA CONFLITOS. (NA
MAIOR PARTE DAS LING. É UTILIZADO O
CONCEITO DE "PACOTES" OU
"NAMESPACES" ONDE O NOME PODE SER
REPETIDO DENTRO DO SISTEMA, MAIS
PRECISA SER ÚNICO DENTRO DO PACOTE.
- 2_ PRECISA-SE DEFENIR AS
"CARACTERISTICAS" E OS ELEMENTOS Q O
DEFINAM. ESSAS CARCT. SÃO NOMEADAS
"PROPRIEDADES". EX: (PROP. DE UM OBJ.
"CACHORRO" PODERIAM SER "TAMANHO",
"RAÇA" E "IDADE".
- 3_ É DEFINIR AS AÇÕES Q O OBJETO IRÁ
EXECUTAR. ESSES AÇÕES SÃO CHAMADAS
DE "MÉTODOS". ESSES POR SUA VEZ
PODEM SER BEM "VARIÁVEIS", DESDE
"ACENDER()" EM UM OBJETO "LÂMPADA"
ATÉ "LATIR" EM UM OBJ. "CACHORRO".
- ENCAPSULAMENTO
- É UMA DAS "PRINCIPAIS TÉCNICAS" Q
DEFINE A PROGRAMAÇÃO ORIENT. A
OBJ. ADICIONAM SEGURANÇA Á
APLICAÇÃO, POIS "ENCONDE" AS
"PROPRIEDADES", CRIANDO UMA
"ESPÉCIE DE CAIXA PRETA".
- A MAIOR PARTE DAS
LING.OR.OBJT. IMPLEMENTAM ESSE
"ENCAPSULAMENTO" BASEADO EM
PROPRIEDADES "PRIVADAS",
LIGADAS A MÉTODOS ESPEC.
CHAMADO "GETTERS" E "SETTERS".
ESSA ATITUDE EVITA O ACESSO
DIRETO AS PROPRIEDADES DO
OBJETO, ADICIONANDO UMA
CAMADA DE SEGURANÇA A
APLICAÇÃO.
- P/ FAZER UMA "COMPARAÇÃO"
COM O Q VEMOS NO "MUNDO
REAL", Q TEMOS ENCAPSULAMENTO
EM OUTROS ELEMENTOS.
"EX:"(QUANDO CLICAMOS NO
BOTÃO LIGAR DA TV, Ñ SABEMOS O
Q ESTÁ ACONTECENDO
INTERNAMENTE. PODEMOS DIZER
ENTÃO Q O PROCESSO ESTÁ
ENCAPSULADO).
- HERANÇA
- DEFINE A
POSSIBILIDADE DA
"REUTILIZAÇÃO DO
CÓDIGO",
INDEFINIDAS VEZES,
ESSA
CARACTRISTICA
"OTMIZA" A
PRODUÇÃO DA
APLICAÇÃO.
- EX: P/
ENTERDERMOS
VAMOS IMAGINAR
UMA FÁMILIA: "EX. A
"CRIANÇA HERDA" AS
"CARACTERISTICA"
DE SEUS "PAIS". OS
"PAIS" HERDAM
ALGO DOS "AVÓS", O
Q FAZ CONQUE A
CRIANÇA TBM O
FAÇA, ASSIM
SUCESSIVAMENTE.
- A HERANÇA PODE
VÁRIAR DE LING/LING,
EM ALGUMAS COMO,
"C++" HÁ A QUESTÃO
DA HERANÇA
"MULTIPLA", HERDADE
DE "VÁR. ANCESTRAIS".
- POLIMORFISMO
- OUTRO PONTO ESSÊNC.
DA PROGRAMAÇÃO
ORIENTADA A OBJETOS
- COMO VEMOS NA NATUREZA
EXISTEM ANIMAIS Q SÃO
CAPAZES DE ALTERAR SUA
FÓRMA CONFORME A
NESCESSIDADE E É DESSA IDÉIA
Q VEM O "POLIMORFISMO".
- COMO SABE-SE OS OBJETOS
"FILHOS" HERDAN AS "CARACT.
E AÇÕES DE SEUS ANSESTRAIS",
ENTRETANTO, EM ALGUNS
CASOS AS AÇÕES P/ UM MESMO
MÉTODO SEJA DIFERENTE.
(PORTANTO POLIMORFISMO
CONSISTE NA ALTERAÇÃO DO
FUNCIONAMENTO INTERNO DE
UM MÉTODO HERDADO).
- EXEMPLO COMUN: TENSE UM
OBJETO GENÉRICO
"REFRIGERADOR" Q POSSUI UM
MÉTODO AÇÃO, "LIGAR()". TEMOS
DOIS OBJETOS DISTINTOS "TV" E
"GELADEIRA" Q Ñ IRÃO LIGAR DA
MESMA FÓRMA. ASSIM
PRECISAMOS, P/ CADA UMA DAS
CLASSES FILHAS,REESCREVER O
MÉTODO "LIGAR()".
- VANTAGENS
- DESVANTAGENS
- APRESENTA UM MAIOR
NÚMERO DE CONCEITOS E
ABSTRAÇÕES NESCESSÁRIO
EM COMPARAÇÃO COM Á
PROGRAMAÇÃO
"ESTRUTURADA", O Q
DIFICULTA O
APRENDIZADO, DEVIDO
SUA COMPLEXIDADE.
- ATRAVÉS DESTE CONCEITO
CONCEGUIU-SE UMA
MELHOR ORGANIZAÇÃO DO
CÓDIGO, GERELMENTE
SEPARADO EM ""CLASSES" E
"BLIBLIOTÉCAS", OUTRA
VANTAGEM É O
REAPROVEITAMENTO DO
CÓDIGO POR MEIO DO
CONCEITO HERANÇA.
- 1.3-
PROGRAMAÇÃO
CONCORENTE
- ATRAVÉS DO DESENVOLVIMETO DE
NOVA TECNOLOGIAS, SURGIU UM
NOVO CONCEITO, "PARALELISMO",
POSSIBILITANDO A EXECUÇÃO DE
MAIS DE UMA TAREFA
PARALELAMENTE, SEJA POR VÁRIOS
NÚCLEOS DE PROCESSAMENTO OU
UM SÓ, EXECUTANDO ASSIM O
PARALELISMO "EMULADO.
- ASSIM A PROG. CONCORENTE VEIO, P/
ESTUDAR E ORIENTAR COMO CRIAR
PROGRAMAS VISANDO ESSE CENARIO,
ONDE VÁRIOS PROCESSOS SÃO
EXECUTADOS SIMULTANEAMENTE
DISPUTANDO ASSIM O USO DE
MEMÓRIA E A PRÓPRIA CAPACIDADE E
PROCESSAMENTO.
- VÁRIAS LING. OFERECEM SUPORTE A
PROGRAMAÇÃO CONCORENTE.
DENTRE ELAS ESTÃO:
- JAVA
- C, C++ E C#
- OBJECT PASCAL
- COMO VC DEVE
TER PERCEBIDO
UMA MESMA
LINGUAGEM
PÓDE OFERECER
SUPORTE A
MAIS DE UM
SUBPARADIGMA
- VANTAGENS
- GANHO NO
DESEMPENHO JÁ Q
HÁ UM MELHOR
APROVEITAMENTO
DE TODOS OS
RECURSOS
COMPUTACIONAIS
- DESVANTAGENS
- PROGRAMAÇÃO +
COMPLEXA, SUCETIVEIS A
EROS DA PRÓPRIA
CONCORRÊNCIA, DIFICIL
DEPURAÇÃO PELO
ASPECTO Q Ñ DETERMINA
Q SOLUÇÃO TOMAR.