La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggi di Programmazione

Presentazioni simili


Presentazione sul tema: "Linguaggi di Programmazione"— Transcript della presentazione:

1 Linguaggi di Programmazione
Paradigmi imperativo e dichiarativo

2 Iniziamo a conoscere alcuni concetti fondamentali
Un algoritmo è un insieme finito di azioni da eseguire per risolvere un problema. Un linguaggio di programmazione è un linguaggio formale (cioè descritto da regole) utilizzato per implementare gli algoritmi. Un programma è la “traduzione” di un algoritmo mediante un opportuno linguaggio di programmazione.

3 Dall’ algoritmo al programma
Sequenza per la risoluzione di un problema: Individuare un procedimento risolutivo. Scomporre il procedimento in un insieme ordinato di azioni (ALGORITMO) Rappresentare i dati e l’algoritmo attraverso un insieme di regole comprensibili (PROGRAMMA)

4 Il programmatore Analizza il problema riducendolo in termini astratti, non riferiti ad elementi reali e concreti. Individua una strategia risolutiva e costruisce un algoritmo Codifica l’algoritmo in modo tale da renderlo comprensibile al calcolatore. Analizza il risultato dell’elaborazione evidenziando eventuali errori nella strategia risolutiva, ovvero le azioni che portano alla soluzione del problema, nella “traduzione” dell’algoritmo.

5 Classificazioni dei linguaggi di programmazione
Esistono numerose famiglie di linguaggi di programmazione riconducibili a diversi criteri, alcuni di questi sono: Periodo storico Program domain Livello di astrazione Paradigma di programmazione

6 Classificazione in base al periodo storico
Molti linguaggi sono stati sviluppati a partire dagli anni ’50; alcuni di essi sono ancora oggi utilizzati. Un linguaggio vecchio, se è stato molto usato nel passato, sarà usato anche nel futuro perchè se il software funziona non viene rottamato. Anche i nuovi linguaggi, che si pensa siano più moderni rispetto a quelli vecchi, spesso hanno una parte significativa delle loro istruzioni ereditata dai vecchi.

7 Classificazione in base al campo di applicazione (program domain)
Applicazioni scientifiche: sono caratterizzate da semplici strutture dati e grandi quantità di calcoli. Es.: C++ Applicazioni gestionali: sono caratterizzate da sofisticate caratteristiche di input/output. Es.: COBOL Programmazione di sistemi: sono caratterizzate dalla necessità di operare a basso livello, esecuzione efficiente.Es.: Assembly

8 Classificazione in base al livello di astrazione
La struttura interna dei computer prevede soltanto la programmazione in linguaggio macchina (LM) cioè una sequenza di 0 e 1. I primi linguaggi rendevano la programmazione difficoltosa e soggetta a molti errori. Con il tempo, le istruzioni in linguaggio macchina vengono sostituite con codici alfanumerici derivanti dalla lingua inglese fino ad arrivare a linguaggi indipendenti dall’hardware. Una ulteriore evoluzione si ha con l’introduzione di linguaggi che hanno l’obiettivo di avvicinarsi al linguaggio naturale o con un livello si astrazione maggiore dei precedenti.

9 Classificazione in base al livello di astrazione
Con il termine alto o basso livello, non si intende la qualità o la potenza del linguaggio, ma è riferito alla sua comprensione. Un linguaggio di programmazione di basso livello, si intende un linguaggio molto vicino alla macchina (il linguaggio macchina o l'Assembler) . Invece un linguaggio di programmazione di alto livello, sono più sofisticati ed astratti, slegati dal funzionamento fisico della macchina (Pascal, C, Java, etc.).

10 Vediamo un esempio… Linguaggio Basso Livello Linguaggio Alto Livello
.MODEL SMALL .STACK 100h .DATA STRINGA DB "Hello, world", 13, 10, '$' .CODE .STARTUP MOV MOV DS, AX MOV DX, OFFSET STRINGA MOV AH, 09H INT 21H MOV AX, 4C00H INT 21H END Linguaggio Alto Livello #include <stdio.h> main() { printf(‘’Hello, World’’); }

11 Classificazione in base al paradigma
Un paradigma è: Un modello di riferimento (schema, esempio, traccia) Un insieme di regole di programmazione, valide per più di un linguaggio In informatica, un paradigma di programmazione è uno stile fondamentale di programmazione, ovvero un insieme di strumenti concettuali forniti da un linguaggio di programmazione per la stesura di un programma.

12 Classificazione in base al paradigma
Nel caso dei linguaggi di programmazione, il paradigma rappresenta una “famiglia” e i linguaggi ad esso appartenenti ne seguono le regole. Per paradigmi di programmazione si intendono i “modi” in cui vengono specificati i programmi. Non si tratta tanto del tipo di linguaggio usato, ma del contesto più ampio al quale un certo linguaggio appartiene.

13 Classificazione I numerosi linguaggi di programmazione esistenti possono essere classificati sulla base del modello di programmazione che è necessario adottare per utilizzarli.

14 Linguaggi imperativi Un linguaggio imperativo è caratterizzato dal concetto di comando (“imperio”) e dalla descrizione sequenziale delle istruzioni che dovranno essere eseguite “una dopo l'altra”. Nei linguaggi imperativi deve essere il programmatore a specificare “come” va risolto il problema, indicando tutte le istruzioni necessarie per giungere all’obiettivo. Scrivere un programma in un linguaggio imperativo significa essenzialmente occuparsi di cosa la macchina deve fare per ottenere il risultato che si vuole, e il programmatore è impegnato nel mettere a punto gli algoritmi necessari a manipolare i dati.

15 Linguaggi imperativi Esempio di programmazione imperativa:
1. LEGGI numero1; 2. LEGGI numero2; 3. SOMMA risultato = numero1 + numero2; 4. MOSTRA risultato; Fanno parte dei linguaggi imperativi alcune sotto-categorie tra cui: Linguaggi procedurali, secondo cui il programma viene organizzato in procedure. Linguaggi orientati agli oggetti (Object-oriented), in cui l’elemento di base è l’oggetto, metafora degli oggetti del problema reale.

16 Linguaggi dichiarativi
Nei linguaggi dichiarativi il programmatore si occupa di definire “cosa” vuole, non il come, compito che viene demandato alla macchina. Invece di programmare i passi che l’elaboratore deve eseguire, si specifica cosa si vuole che avvenga. Alcuni esempi possono essere l’SQL e l’XSLT. Anche l’HTML può essere inteso come dichiarativo, perché descrive cosa la pagina dovrebbe contenere, titolo, testo, immagini, ma non come si deve fare per visualizzare la pagina sullo schermo del computer.

17 Linguaggi dichiarativi
Si può paragonare la programmazione dichiarativa all'allenamento di una squadra di calcio. Come allenatore, non giocate effettivamente in una partita. Vi limitate a dire ai giocatori ciò che volete che facciano. Come lo fanno dipende da ciò che accade durante la partita. La differenza fra un computer e una squadra di calcio è che il computer farà esattamente quello che gli dite di fare, mentre una squadra non è detto che lo faccia.

18 Linguaggi dichiarativi
Esempio (html): <table border="1"> <tr> <td>Nome:</td> <td>Sergio</td> </tr> <td>Cognome:</td> <td>Porco</td> </table>

19 Linguaggi dichiarativi
Esempio (SQL): Il linguaggio SQL si basa sul linguaggio naturale, tant’è che i comandi derivano direttamente dal vocabolario inglese. Se siamo interessati solo al nome e all' della tabella teatro (Fig. 1), possiamo selezionarli in questo modo: select nome, from teatro Il risultato è la tabella di Fig. 2: Fig. 1 Fig. 2

20 Linguaggi dichiarativi
I linguaggi dichiarativi sono divisi in tre categorie: Linguaggi logici, in cui si utilizzano assiomi, combinati con le regole della logica, per arrivare al risultato (verità o falsità di un affermazione data come problema). Linguaggi funzionali, in cui sono le funzioni gli elementi di base, ed il problema viene risolto valutandole (fornendo gli argomenti necessari). Database, in cui si utilizzano appositi costrutti (select, insert) per gestire i dati.

21 Linguaggi Imperativi vs Linguaggi Dichiarativi
Un confronto immediato tra i due tipi di linguaggio potrebbe presentarsi come la realizzazione di una ricetta in cucina. Nel caso del linguaggio imperativo bisogna indicare passo dopo passo tutte le operazioni da effettuare al “cuoco”! Con un linguaggio dichiarativo ci si limita a dire qual è il risultato che si vuole ottenere senza specificare i vari passaggi.

22 Esempio: Problema come prendere l'ascensore. Linguaggio imperativo
Attendere che l'ascensore arrivi al piano di chiamata. Aprire la porta dell'ascensore. Entrare nell'ascensore. Chiudere la porta dell'ascensore. Spingere il tasto corrispondente al piano da raggiungere. N.B.: Ai fini del risultato, conta l'ordine in cui sono elencate le azioni da intraprendere. Linguaggio dichiarativo Se l'ascensore è arrivato e la porta è aperta, allora si può entrare nell'ascensore. Se si vuole aprire la porta dell'ascensore, bisogna aspettare che l'ascensore arrivi. Se si è entrati e la porta è aperta, allora la si può chiudere. Se si è entrati e la porta è chiusa, allora si deve spingere il tasto corrispondente al piano da raggiungere. N.B.: L'ordine in cui le regole sono elencate non cambia il risultato.

23 Compilatori e interpreti
Affinché un programma scritto in un qualsiasi linguaggio di programmazione sia comprensibile (e quindi eseguibile) da parte di un calcolatore, occorre tradurlo dal linguaggio originario al linguaggio della macchina. Ogni traduttore è in grado di comprendere e tradurre un solo linguaggio. Il traduttore converte il testo di un programma scritto in un particolare linguaggio di programmazione (sorgente) nella corrispondente rappresentazione in linguaggio macchina (programma eseguibile). Compilatore: Il programma compilatore analizza e traduce nella sua interezza il programma sorgente. Il risultato della compilazione è un programma oggetto. Solo dopo la traduzione dell’intero programma è possibile eseguirlo. Interprete: Il programma interprete analizza e traduce istruzione per istruzione in linguaggio macchina. Non appena una istruzione è interpretata può essere eseguita.


Scaricare ppt "Linguaggi di Programmazione"

Presentazioni simili


Annunci Google