by virtue of 3 important constructs:
Once one has those three constructs in a language then one can do pretty much whatever can be specifically defined.
Functional programming, logic programming are considered to be a declarative style of programming because the emphasis is on specifying what needs to be done rather than exactly how to do it.
il programma è costituito da una sequenza di istruzioni che modificano il contenuto della memoria dell'elaboratore o determinano le modalità di esecuzione di altre istruzioni; assume un ruolo fondamentale l'istruzione di assegnazione. Sono imperativi la maggior parte dei linguaggi più diffusi (Pascal, Basic, Fortran, C, Cobol, ecc.).
la programmazione strutturata ha lo scopo di semplificare la struttura dei programmi, limitando l'uso delle strutture di controllo a pochi casi semplici. L'uso del salto incondizionato (GOTO) viene sostituito da istruzioni di controllo del flusso più strutturate (WHILE,FOR,UNTIL)
il programma è considerato l'effetto dell'interazione di un insieme di oggetti (insiemi di dati e algoritmi che manipolano questi dati) che comunicano con l'esterno mediante messaggi. Oltre a linguaggi specializzati che implementano i principi di tale metodologia (Smalltalk), sono nate delle estensioni dei linguaggi già esistenti, che li integrano (ad es. C++ per il C, CLOS per il Lisp).
in un ambiente event driven non esiste più una sequenza determinata di comandi da eseguire ma una serie di reazioni che il sistema ha rispondendo a determinati stimoli esterni o interni.
il programma è considerato come il calcolo del valore di una funzione; in un linguaggio funzionale puro l'assegnazione esplicita è completamente assente e si utilizza solo il passaggio dei parametri. Rivestono particolare importanza la ricorsione, ossia l'utilizzo di funzioni che richiamano se stesse e, come struttura dati, la lista (sequenza ordinata di elementi). Il più importante rappresentante di questa categoria è il Lisp (LISt Processing).
Pure logic programming is the approach of doing nothing more than making
statements about the problem (and desired solutions). This is done by stating a
set of axioms which describe the problem and the attributes required of
something for it to be considered a solution. The ideal of logic programming is
that there should be an infrastructure which can take the raw axioms and use
them to find or check solutions. All solutions are formal logical consequences
of the axioms supplied, and “running” the system is equivalent to the
construction of a formal proof of each solution.
The seminal “logic programming” language was Prolog.
il programma è considerato come la dimostrazione della verità di una
proposizione; il sorgente è costituito da una sequenza di asserzioni di fatti e
regole. Non è indicato esplicitamente il flusso di esecuzione, ma dato un
obiettivo di partenza (il goal) è il sistema che cerca di individuare i fatti e
le regole rilevanti.
La parte dichiarativa (il cosa fare) e la parte procedurale (il come) sono
nettamente separate, favorendo la leggibilità del programma.
I linguaggi logici risultano adatti a risolvere problemi che riguardano entità
e le loro relazioni.