EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO



Documenti analoghi
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

LINGUAGGI DI PROGRAMMAZIONE

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Linguaggi e Paradigmi di Programmazione

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Programmazione Funzionale

Corso di Informatica

Linguaggi di programmazione

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Elementi di semantica operazionale

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Programmi. Algoritmi scritti in un linguaggio di programmazione

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Lezione 8. La macchina universale

FONDAMENTI di INFORMATICA L. Mezzalira

Elementi di semantica denotazionale ed operazionale

Origini e caratteristiche dei calcolatori elettronici

Linguaggi di programmazione

Concetto di Funzione e Procedura METODI in Java

INFORMATICA 1 L. Mezzalira

Introduzione ai tipi di dato astratti: applicazione alle liste

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Corso di Informatica

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Approccio stratificato

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Fasi di creazione di un programma

Concetti di base di ingegneria del software

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA CONCETTUALE LE ASSOCIAZIONI

Architettura del calcolatore

Automazione Industriale (scheduling+mms) scheduling+mms.

La Macchina Virtuale

Variabili e tipi di dato

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Architettura di un calcolatore

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

PROCESSO DI INDICIZZAZIONE SEMANTICA

Reti sequenziali sincrone

Descrizione di un algoritmo

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Metodologie di programmazione in Fortran 90

Riferimenti ed Oggetti

1. PRIME PROPRIETÀ 2

Più processori uguale più velocità?

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Richiami di informatica e programmazione

RISOLUTORE AUTOMATICO PER SUDOKU

DAL PROBLEMA AL PROGRAMMA

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

TECNICHE DI SIMULAZIONE

Analizzatore lessicale o scanner

Generazione Automatica di Asserzioni da Modelli di Specifica

Liceo Tecnologico. Indirizzo Informatico e Comunicazione. Indicazioni nazionali per Piani di Studi Personalizzati

Architettura di un computer

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

La Metodologia adottata nel Corso

Progettaz. e sviluppo Data Base

Architetture Applicative

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Appunti sulla Macchina di Turing. Macchina di Turing

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Protezione. Protezione. Protezione. Obiettivi della protezione

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Il linguaggio di specifica formale Z

Introduzione all Information Retrieval

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Scienze della Comunicazione Università di Salerno. UD 3.2a: Introduzione alla Programmazione

Ministero dell istruzione, dell università e della ricerca. Liceo Tecnologico. Indirizzo Informatico, Grafico e Comunicazione

Architettura di un sistema operativo

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA

Alessandra Raffaetà. Basi di Dati

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

7. Architetture Software

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Strumenti di modellazione. Gabriella Trucco

Introduzione alla Virtualizzazione

Progettazione di Basi di Dati

Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.

Introduzione. Informatica B. Daniele Loiacono

Sistemi di supporto alle decisioni

Transcript:

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi Assembler, istruzioni del linguaggio macchina e riferimenti alle celle di memoria espressi mediante simboli. Linguaggi di alto livello, tentativo di astrazione dell architettura sottostante. Operazioni di più alto livello rispetto a quelle caratteristiche della macchina. 1 UNA POSSIBILE CLASSIFICAZIONE Linguaggi di programmazione IMPERATIVI FUNZIONALI LOGICI A OGGETTI A loro volta possono essere SEQUENZIALI o CONCORRENTI. 2

PERCHE TANTI LINGUAGGI? Perché tante sono le differenti applicazioni Efficienza Rapida prototipazione Facile comprensione del linguaggio (leggibilità) Modificabilità e riusabilità Programmazione in largo Qualità del programma 3 LINGUAGGI IMPERATIVI Le caratteristiche essenziali sono dettate dalla architettura di Von Neumann (processore e memoria). Tutti i linguaggi tradizionali (ASSEMBLER, FORTRAN, Pascal) sono livelli di astrazione costruiti sopra tale architettura. L architettura consiste di due parti: memoria (passiva) processore (attivo) La principale attività del processore e assegnare valori a celle di memoria. Variabili come astrazione di celle di memoria e istruzione di assegnamento. 4

LINGUAGGI IMPERATIVI I linguaggi imperativi adottano uno stile prescrittivo. Il programma imperativo prescrive le operazioni che il processore deve compiere (es. assegnamento) Esecuzione delle istruzioni nell ordine in cui appaiono nel programma (eccezione: strutture di controllo) Realizzati sia attraverso interpretazione (BASIC,...) sia compilazione (Pascal, FORTRAN, COBOL,...) Sono forse la classe di linguaggi più matura Nati per manipolazione numerica più che simbolica 5 LINGUAGGI IMPERATIVI Sono evoluti verso: blocchi (ALGOL); moduli (MODULA); tipi di dato astratto (SIMULA) oggetti (C++, Java) parallelismo (Concurrent Pascal, CSP, etc.) In generale si sono evoluti verso costrutti adatti per programmazione in largo (programmazione ad oggetti). Sono generalmente linguaggi che adottano un controllo statico (stretto) di tipo. Sono generalmente efficienti. 6

LINGUAGGI IMPERATIVI PROGRAMMA = ALGORITMO + DATI La struttura del programma consiste in Una parte di dichiarazione in cui si dichiarano tutte le variabili del programma e il loro tipo; Una parte istruzioni che descrive l algoritmo risolutivo utilizzato, mediante istruzioni del linguaggio. Le istruzioni si dividono in: Istruzioni di lettura e scrittura; Istruzione di assegnamento (astrazione della cella di memoria); Istruzioni di controllo. 7 SCELTA DI NUOVI PARADIGMI Motivazioni Applicazioni di Intelligenza Artificiale Programmazione esplorativa e prototipale Tentativo di sviluppare programmi più concisi, più semplici da scrivere, più vicini alla logica del problema, più semplici da verificare formalmente Le specifiche di un linguaggio ad alto livello possono determinare una nuova architettura (LISP machine, Progetto Giapponese di V Generazione): PROGRAMMAZIONE FUNZIONALE PROGRAMMAZIONE LOGICA 8

PROGRAMMAZIONE FUNZIONALE E LOGICA: CARATTERISTICHE COMUNI Non manipolazione di numeri, ma di simboli Il programma è costantemente in evoluzione: modularità spinta programma come struttura dati; l ambiente tende a confondersi col linguaggio. La programmazione è esplorativa ed incrementale: prototipi veloci Il linguaggio deve essere ad altissimo livello : utilizzabile anche da non-programmatori. 9 LINGUAGGI FUNZIONALI Concetto primitivo: quello di funzione e di applicazione di funzione. Una funzione è una regola di corrispondenza che associa a ogni elemento del suo dominio un unico elemento nel codominio. Una definizione di funzione specifica il dominio, il codominio e la regola di associazione. Ad esempio: incr(x)::=x + 1. Dopo la definizione una funzione può essere applicata a un elemento del dominio per restituire l elemento associato del codominio (valutazione): incr(3) 4. 10

LINGUAGGI FUNZIONALI La sola operazione del modello funzionale è l applicazione di funzioni a operandi; Il ruolo della macchina funzionale (interprete) è valutare il programma e produrre un valore; Il valore di una funzione è determinato solo dai suoi argomenti (assenza di effetti collaterali, funzionale puro); L essenza della programmazione funzionale è combinare funzioni (utilizzo della ricorsione); Le variabili sono variabili matematiche che denotano un valore non mutabile (nessun assegnamento) 11 LINGUAGGI FUNZIONALI PROGRAMMA = FUNZIONE Esecuzione del programma = valutazione della funzione Lavorano su alberi binari: liste Anche i programmi sono strutture dati 12

LINGUAGGIO LISP (LISt Processing) Nato nel 1958 ad opera di J. McCarthy Originariamente era puramente funzionale Il LISP ha un ricchissimo ambiente di programmazione: InterLisp MacLisp CommonLisp... 13 LINGUAGGIO LISP (LISt Processing) (defun member (item list) (cond ((null list) nil) ((equal item (car list)) T) (T (member item (cdr list))))) (member A (B C D)) Il programma è una struttura dati; Non c è dichiarazione di tipo; Non c è assegnamento. 14

LINGUAGGIO LISP (LISt Processing) Quando usare il LISP e la programmazione funzionale Manipolazione simbolica e non numerica; Programmazione esplorativa; Modifica dinamica dei programmi; Problemi naturalmente ricorsivi; Non problemi di controllo dei processi o real-time. E un linguaggio da cui si può imparare molto sulla costruzione di algoritmi e sulla realizzazione dei linguaggi (legami di variabili; scope rules). Un interprete di LISP puro può essere scritto in LISP molto semplicemente (EVAL). 15 LINGUAGGI LOGICI PROGRAMMA = CONOSCENZA + CONTROLLO Stile dichiarativo: la conoscenza sul problema è espressa indipendentemente dal suo utilizzo (COSA non COME); Alta modularità e flessibilità Definire un linguaggio logico significa definire come il programmatore può esprimere la conoscenza e quale tipo di controllo può utilizzare; Problematiche di RAPPRESENTAZIONE della conoscenza 16

PROGRAMMAZIONE DICHIARATIVA E PROCEDURALE Problema: ordinare una lista DICHIARATIVO: Il risultato dell ordinamento di una lista vuota è la lista vuota Il risultato dell ordinamento di una lista L è L se la lista L è ordinata ed è la permutazione di L PROCEDURALE: Controlla prima se la lista è vuota; se sì dai come risultato la lista vuota Altrimenti calcola una permutazione L di L e controlla se e ordinata; se sì termina dando come risultato L, altrimenti calcola un altra permutazione di L etc... 17 LINGUAGGI A VINCOLI Nascono come estensioni della programmazione logica per superarne alcuni limiti inefficienza nell esplorazione dello spazio delle soluzioni unificazione sintattica Nel 1987 nasce la Programmazione Logica a Vincoli come schema generale che può essere specializzato su diversi domini Oggi i principali linguaggi a vincoli non sono legati al paradigma logico 18

LINGUAGGI A VINCOLI Esistono vari linguaggi a vincoli specializzati sul dominio dei numeri reali, razionali, interi, booleani, intervalli ecc. Vedremo in dettaglio i Linguaggi a vincoli su domini finiti di interi particolarmente utili per risolvere particolari classi di problemi detti Problemi di Soddisfacimento di Vincoli e Problemi di Ottimizzazione combinatoria. PROGRAMMA = CONOSCENZA + CONTROLLO Conoscenza: variabili domini e vincoli Controllo: propagazione di vincoli e ricerca 19