Domanda

Qual è la differenza tra i paradigmi di programmazione dichiarativa e procedurale ? Potresti fornire alcuni esempi?

Quali altri paradigmi di programmazione esistono?

È stato utile?

Soluzione

imperativo

Esistono diversi sotto-paradigmi del paradigma di programmazione imperativa, come il procedurale o il orientato agli oggetti paradigmi di programmazione.

Nel paradigma della programmazione imperativa, descrivi l'algoritmo passo dopo passo, a vari gradi di astrazione.

Esempi di linguaggi di programmazione che supportano il paradigma procedurale:

  • C (e la maggior parte delle altre lingue legacy)
  • PHP, principalmente
  • In un certo senso, tutte le principali lingue

Object-Oriented

Si riferisce in genere a linguaggi che presentano una gerarchia di tipi che ereditano sia i metodi che lo stato da tipi di base a tipi derivati, ma include anche l'insolito JavaScript basato su prototipo.

Esempi di linguaggi di programmazione che supportano il paradigma OO:

  • Java

dichiarativa

Esistono diversi sotto-paradigmi del paradigma di programmazione dichiarativa, come i paradigmi di programmazione logica o funzionale.

Nel paradigma della programmazione dichiarativa, descrivi un risultato o un obiettivo e lo ottieni tramite un " scatola nera " ;. Il contrario di imperativo.

Esempi di linguaggi di programmazione che supportano il paradigma della programmazione dichiarativa:

  • yacc
  • Cima di albero
  • SQL
  • Espressioni regolari
  • lex
  • XSLT
  • markup, troff, CSS, VHDL

Funzionale

La programmazione funzionale enfatizza l'applicazione di funzioni senza effetti collaterali e senza stato mutevole. I sistemi dichiarativi sopra mostrano alcuni aspetti della programmazione funzionale.

Esempi di linguaggi di programmazione che supportano il paradigma funzionale dichiarativo:

  • Haskell
  • OCaml
  • Schema
  • Erlang
  • F #
  • Scala

Altri suggerimenti

La programmazione dichiarativa è dove dici ciò che vuoi senza dover dire come farlo. Con la programmazione procedurale, è necessario specificare i passaggi esatti per ottenere il risultato.

Ad esempio, SQL è più dichiarativo che procedurale, poiché le query non specificano i passaggi per produrre il risultato.

Lascia che ti dia un esempio nel mondo reale: ho bisogno di una tazza di tè.

Procedurale:

  1. Vai in cucina
  2. Prendi zucchero, latte e tè,
  3. Mescolali e scaldali sul fuoco fino a quando non bolle
  4. Mettilo in una tazza e portamelo

dichiarativo:

  1. Portami una tazza di tè.

In un linguaggio procedurale, definisci l'intero processo e fornisci i passaggi per farlo. Devi solo fornire ordini e definire come sarà servito il processo.

In un linguaggio dichiarativo, basta impostare il comando o l'ordine e lasciare che sia nel sistema come completare quell'ordine. Hai solo bisogno del tuo risultato senza scavare nel modo in cui dovrebbe essere fatto.

Programmazione procedurale:

Nella programmazione procedurale, all'avvio del programma, segue una serie di istruzioni. Le istruzioni possono cambiare in base ad alcuni contenuti di file o memoria, ma nel complesso non variano ampiamente. l'input per il programma non proviene in genere dall'input dell'utente in tempo reale, ma piuttosto da un insieme di dati pre-raccolti.

Programmazione dichiarativa:

Nella programmazione guidata dagli eventi dichiarativi si concentra su un insieme di dati con azioni opzionali che il programma può intraprendere su di esso. Ad esempio, ogni "evento" in un elaboratore di testi sono presenti modifiche al mouse o alla tastiera (o al file) che incidono sui dati, sui documenti. Non devono essere eseguiti in alcun ordine. La programmazione basata su eventi prende la forma di piccoli programmi (gestori di eventi) che funzionano tutti su un insieme comune di dati, in modo che ogni piccolo programma possa utilizzare gli stessi dati, il documento in questo esempio.

Nell'approccio procedurale codifichi le tue istruzioni per ottenere il risultato. Nell'approccio dichiarativo definisci ciò che deve essere risolto come conoscenza per risolvere il problema. Dai un'occhiata a Approccio procedurale o dichiarativo che ho implementato in entrambi gli approcci .

Come si vedrebbe nell'esempio, nell'approccio dichiarativo, non è necessario indicare come risolvere il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top