Paradigma funcional
- Especifica-se o que se quer construir e não como deve ser
construido
definição matemática
fatorial x= {1, se x=0 ; x * fatorial (x-1), se x dif 0 }.
linguagem funcional
DEF fatorial;
fatorial n =1 ,
n=0
fatorial n =n *
fatorial (n-1) , n =/ 0
- Em linguagem funcional não se chama programa e sim Script que é um
conjunto de equações.
não existe ordem sequencial das operações.
- Em programação funcional a equação x = x + 1 não tem
solução.
- Função é um conjunto de equações.
o lado esquerdo de cada uma contém um padrão que pode ser casado com o
parametro real.
- Mapeamento de valores de entrada em valores de saida
entrada --> saida
- O programa é tipicamente composto por sub-funções.
uma função pode chamar outra.
o resultado de uma função pode ser usado como argumento de
outra.
- Programas são escritos por meio de expressões , funções e
declarações.
quanto mais rica em expressões menor a necessidade por variaveis e
comandos.
- Estilo declarativo: não há o conceito de estado nem
comandos como atribuicão
- A repetição deve ser feita por meio de recursão e não por
meio de laços.
- A falta de armazenamento é compensada pela inclusão de
conceitos como funções de alta ordem e avaliação preguiçosa.
- Funções de alta ordem
funções cujos parametros ou resultado é uma função
- Funções de 1a ordem
valores e resultados não são funções
- Modificação de valores é proibida
- Existe um conjunto de funções primitivas.
existe um conjunto de formas funcionais para construir formas complexas
a partir das primitivas, uma operação de aplicação de funções e alguma
estrutura para representar os dados.
- A implementação da linguagem é por interpretação
- A execução consiste em avaliar as especificações.
Paradigma imperativo
- O modelo computacional das linguagens imperativas foi
definido por von Neumann:
Processador, armazenamento e sequencia .
- Variaveis são posiçoes de memória que armazenam valores
- A notação matemática tem uma semântica estática: nomes são
definidos apenas uma vez e seu valor depende do contexto da equação que
os define.
- A semantica de uma instrução de atribuição simples exige o
exame de declarações locais, conhecimento das regras do escopo da
linguagem e possivelmente o exame de programas em outros arquivos para
determinar os tipos de variaveis na instru;cão de atribuição
- Variaveis
Paradigma lógico
- Consite de declarações em vez de atribuições e instruções
de fluxo de controle.
- declarações --> instruções ou proposições em lógica
simbólica.
- a semantica pode ser determinada a partir da propria
instrução.
- Não é baseada em procedimentos
Paradigma
concorrência
- Concorrência fisica - diversas unidades do programa em mais
de um processador
- Concôrencia lógica - intercaladamente varias unidades em um
processador
- Sincronização (cooperação (esperar e liberar) e
competição) schedula a ordem de execução das tarefas (unidade
de um programa)
- Recursos compartilhados: semáforos (passar e liberar),
monitores (insere, remove e retem) e passagem de mensagens (sincrona e
assincrona).
- Uma tarefa pode ter varios estados: nova, executavel,
rodando, bloqueada e morta.
Outros paradigmas
- orientada a teste
- multiparadigma
- estruturada
- orientadas a objeto
- vetorial
- orientada a eventos
- orientada a aspecto