Linguaggi di programmazione

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Introduzione al linguaggio C++
Traduzione ed Interpretazione
Intelligenza artificiale
Software di base: Linguaggi di Programmazione
Recupero debito quarto anno Primo incontro
Evoluzione dei linguaggi di programmazione
Procedure e funzioni A. Ferrari.
LS Tron Classe 4TC – as 2006/07 LORGANIZZAZIONE DEI PROGRAMMI UD. 8 p. 282.
I linguaggi di programmazione
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di un’espressione La maggior.
Algoritmi e Programmazione
Programmazione II Docente: Francesca Levi
Generalità Linguaggio e Macchina Astratta
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Corso di Laurea in Informatica Gabriella Pasi e Carla Simone
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Semantiche dei linguaggi di programmazione
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2012.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Linguaggi di programmazione
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Introduzione al linguaggio C++ 5 lezioni
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
Semantica denotazionale algebrica di LW Idea intuitiva: i valori che vogliamo denotare sono: gli statements sono funzioni di trasformazioni di stato (interno)
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Unità Didattica 2 I Linguaggi di Programmazione
nome: sequenza di caratteri usata per denotare un oggetto
Programmazione logica
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Fondamenti di Informatica
Progettazione di una base di dati
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Macchine astratte, linguaggi, interpretazione, compilazione
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Linguaggi per COMUNICARE
1 Tecniche per il passaggio dei parametri. 2 Contenuti ¥la tecnica base (nei vari paradigmi) ¥ passaggio per costante, per riferimento, di funzioni, procedure.
Dal problema all’ algoritmo
la traduzione dei programmi
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Sottoprogrammi e funzioni
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Linguaggi di Programmazione
Lo stato  I domini della semantica restano invariati: Ide, Val (Int  { ,  }) Loc (locazioni di memoria), FunctDecl. ma definiamo 2 funzioni: Loc :
Elementi di semantica denotazionale ed operazionale
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Esercizi.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
1 Tipi di dato modificabili §a livello semantico, riconduciamo la modificabilità alla nozione di variabile l lo stato “modificabile” corrispondente sarà.
I linguaggi di programmazione -GALBIATI ALBERTO -ESPOSITO MATTIA.
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Linguaggi di programmazione Paradigmi di programmazione

Linguaggi: un po’ di storia Albori: Macchine a programma memorizzato, Programmi come dati Linguaggio Macchina Assemblatore FORTRAN (calcolo scientifico) COBOL (Data Processing) LISP (LISt Processing) ALGOL PL/I – ALGOL ‘68 (Linguaggio universale) Anni ’60: Formalizzazione della sintassi, Strutture a blocchi, implementazione del -calcolo

LISP Varie versioni della logica PROLOG ML L’era moderna: Programmazione strutturata, Metodologie, Astrazione, Linguaggi ad alto livello per la programmazione di sistema PASCAL C ADA Universale? Programmazione orientata agli oggetti C++ JAVA

Paradigmi 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 Parliamo di come viene organizzata la programmazione, con quali caratteristiche: stile, livello di dettaglio, “forma mentis” del programmatore

Programmazione imperativa Classico: i programmi sono sequenze di comandi che agiscono sui dati o sull’ordine di esecuzione delle istruzioni. In genere viene studiato per primo ed è per questo che viene percepito come “più naturale” Esempi di linguaggi imperativi: Assembly, FORTRAN, C, COBOL, Pascal Costrutti tipici: assegnamento, cicli, if-then-else, procedure con passaggio di parametri

Programmazione imperativa Il programmatore deve definire tutte le strutture dati e tutti gli algoritmi che operano su di esse Il programma non può gestire strutture dati parziali Meccanismi dinamici e chiamate di sottoprogrammi gestiti (anche se non sempre completamente) dal programmatore ...

Programmazione orientata agli oggetti Di recente formalizzazione. Ha avuto molto successo. I programmi definiscono delle astrazioni (classi) di elementi del dominio di applicazione del programma Le classi contengono informazioni sui dati ma anche il codice per gestirli (in genere di tipo imperativo) Esempi: C++, Java, Smalltalk, Eiffel

Programmazione Funzionale Il programma è una definizione di funzioni nel senso più matematico del termine Ordine superiore: gli argomenti delle funzioni definite possono essere sia valori di tipi primitivi che altre funzioni L’interpete si occupa di valutare, in base alle funzioni di base e a quelle definite, una qualsiasi espressione ben formata L’algoritmo di valutazione non è scritto dal programmatore, ma varia a seconda del linguaggio

Programmazione Funzionale: esempio caml #let rec fatt = function # 0 -> 1 # | n -> n * fatt n-1;; fatt: int -> int = <fun> #let rec map = function # [], f -> [] # | (x::Xs), f -> (f x) :: map Xs;; map: ’a list * (’a -> ’b) -> ’b list = <fun> #map [2;0;3] fatt;; int list = [2; 1; 6] #map [0;3] (function x -> x+1);; - int list = [1;4]

Programmazione Funzionale Primo linguaggio funzionale: -calcolo (nucleo della programmazione funzionale) Molto importante soprattutto dal punto di vista teorico (versione non tipata Turing-equivalente) Altri linguaggi: Miranda, Haskell, Scheme, Standard ML (varie implementazioni tra cui CAML), LISP Differenze nell’efficienza, nella vastità di librerie, nel tipo di valutazione (lazy vs eager)

Programmazione Funzionale Approccio dichiarativo: il programma è una definizione di funzione, il “calcolo” è built-in I linguaggi funzionali possono essere usati come metalinguaggi per definire altri linguaggi ottenendo, da una definizione denotazionale della semantica, anche un interprete (gratis!) Le moderne implementazioni sono piuttosto efficienti

Programmazione logica Un programma logico è la definizione di un certo numero di predicati della logica del primo ordine Limitazione: la definizione può avvenire solo con clausole Horn definite:

Programmazione logica: esempio #append([],Ys,Ys). #append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs). :- sta per  ?- append([1,2],[2,4],X). X = [1,2,2,4] ?- append(X,[3],[2,5,3]) X = [2,5] Ma c’è di più!

Programmazione logica: esempio ?- append(X,Y,[3,4,5]). X = [], Y=[3,4,5] ; X = [3], Y=[4,5] ... ?- append(X,Y,[3,4|Z]). X = [3], Y = [4|Z] ; X = [3,4], Y = Z Si definiscono relazioni che possono essere usate anche come funzioni, ma non solo!

Programmazione logica Anche qui il formalismo è dichiarativo: i programmi sono definizioni, in questo caso di relazioni e non di funzioni Il motore di calcolo è un dimostratore di teoremi che cerca di dimostrare un goal (una clausola Horn senza la conseguenza) a partire dalle clausole del programma Il “risultato” viene fuori dagli assegnamenti alle variabili libere del goal che il dimostratore fa durante la visita (con backtracking) dell’albero di dimostrazione per il goal e il programma logico dati Linguaggio principale: PROLOG (diverse implementazioni)

Paradigmi dichiarativi I linguaggi dichiarativi sono molto utili per realizzare velocemente un prototipo di un’applicazione complessa Con poche righe di codice si possono realizzare operazioni molto complesse Il problema principale resta sempre l’efficienza

Programmazione con vincoli Nei linguaggi di programmazione con vincoli il motore principale di calcolo è un risolutore di vincoli in un certo dominio Esempio: risolutore di (dis)equazioni lineari e non nel dominio dei numeri reali Si associa bene con la programmazione logica Il programma aggiunge via via vincoli ad un insieme individuando uno spazio di soluzioni sempre più piccolo oppure vuoto

Programmazione concorrente Un programma concorrente consiste di diversi processi che cooperano in un ambiente per raggiungere un risultato comune I processi possono avere meccanismi diversi di comunicazione (canali, memoria condivisa, multi-insieme di vincoli) L’attenzione della programmazione concorrente non è sul calcolo che effettuano i singoli processi, ma sulle loro interazioni

Programmazione concorrente Numerosi formalismi possibili: Algebre di processi: CCS, CSP Set di costrutti concorrenti che si aggiungono a linguaggi classici: Linda, Pascal o C concorrenti Programmazione concorrente con vincoli La formalizzazione è importante per effettuare verifiche formali di proprietà (es. mutua esclusione, raggiungibilità di stati, invarianze) sui programmi concorrenti