^^Linguaggi di programmazione; tipi

Traditionally, we distinguish between

by virtue of 3 important constructs:

  1. the ability to define variables which store information for later use,
  2. conditional logic (if some condition is met, then perform some specific action, otherwise don't),
  3. looping (keep doing something again and again until some condition is met).

Once one has those three constructs in a language then one can do pretty much whatever can be specifically defined.

3 major styles: imperative, functional, logic.
 

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.

Linguaggi imperativi

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.).

Linguaggi strutturati

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)

Linguaggi orientati ad oggetti

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).

Linguaggi orientati agli eventi

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.

Linguaggi funzionali

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).

Linguaggi logici

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.

Linguaggi dichiarativi

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.