Qual é a diferença entre paradigmas de programação declarativas e processuais?
-
06-07-2019 - |
Pergunta
Qual é a diferença entre as marcas declarativa e processual de programação paradigmas? Poderia dar alguns exemplos?
O que existem outros paradigmas de programação?
Solução
Imperativo
Existem várias sub-paradigmas do paradigma de programação imperativa, como o processual ou orientada a objetos paradigmas de programação.
No paradigma programação imperativa, você descreve o algoritmo passo-a-passo, em vários graus de abstração.
Exemplos de linguagens que suportam o paradigma processual programação:
- C (ea maioria dos outros idiomas legados)
- PHP, principalmente
- Em certo sentido, todos os principais idiomas
Object-Oriented
Ele normalmente se refere a idiomas que apresentam um hierarquia de tipos que herdam ambos os métodos e estado de tipos base para tipos derivados, mas também inclui o inusitado JavaScript com base em protótipo.
São exemplos de linguagens de programação que suportam o paradigma OO:
- Java
declarativa
Existem várias sub-paradigmas do paradigma de programação declarativa, como o funcional ou a lógica paradigmas de programação.
No paradigma de programação declarativa, você descreve um resultado ou um objetivo, e você obtê-lo através de um " preto caixa ". O oposto de imperativa.
Exemplos de linguagens que suportam o paradigma de programação declarativa programação:
- yacc
- Treetop
- SQL
- Expressões Regulares
- lex
- XSLT
- marcação, troff, CSS, VHDL
Funcional
A programação funcional enfatiza a aplicação de funções sem efeitos colaterais e sem estado mutável. Os sistemas declarativas acima exibem determinados aspectos da programação funcional.
Exemplos de linguagens que suportam o paradigma funcional declarativa programação:
- Haskell
- OCaml
- Esquema
- Erlang
- F #
- Scala
Outras dicas
A programação declarativa é onde você dizer o que quiser sem ter que dizer como fazê-lo. Com programação procedural, você tem que especificar passos exatos para obter o resultado.
Por exemplo, SQL é mais declarativo do que processual, porque as consultas não especificar passos para produzir o resultado.
Deixe-me dar um exemplo do mundo real:. Eu preciso de uma xícara de chá
Processual:
- Vá para a cozinha
- Obter açúcar, leite e chá,
- Mix-los, e aqueça em fogo até ferver
- Coloque isso em um copo e trazê-lo para me
declarativa:
- Get me uma xícara de chá.
Em uma linguagem procedural, você define todo o processo e fornecer os passos como fazê-lo. Você apenas fornecer ordens e definir como o processo será servido.
Em uma linguagem declarativa, você apenas definir o comando ou ordem, e deixá-lo estar no sistema como completar essa ordem. Você só precisa do seu resultado, sem cavar em como deve ser feito.
programação procedural:
Na programação processual, quando o programa é iniciado, ele segue um conjunto de instruções. As instruções podem mudar com base em algum índice arquivo ou memória, mas no geral, não variam muito. a entrada para o programa não é tipicamente de entrada do usuário em tempo real, mas sim a partir de um conjunto pré-reunidos de dados.
Programação declarativa:
Em declarativa Evento de programação orientada centraliza em torno de um corpo de dados com ações opcionais o programa pode tomar sobre ele. Por exemplo, cada "evento" em um processador de texto é qualquer mouse ou teclado (ou arquivo) mudanças que afetam os dados, o documento (s). Eles não precisam ser realizados em qualquer ordem. programação orientada a eventos assume a forma de pequenos programas (manipuladores de eventos) que todo o trabalho em um conjunto comum de dados, de modo que cada pequeno programa pode usar os mesmos dados, o documento neste exemplo.
Na abordagem processual você codificar a sua instrução para alcançar o resultado. Na abordagem declarativa de definir o que precisa ser resolvido como o conhecimento de resolver o problema. Ter um olhar para exemplo abordagem processual ou declarativa I implementado em ambas as abordagens .
Como seria ver no exemplo, na abordagem declarativa, você não precisa instruir como resolver o problema.