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.