Linguaggi e Paradigmi di Programmazione



Documenti analoghi
Programmi. Algoritmi scritti in un linguaggio di programmazione

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

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

Fondamenti di Informatica 7. Linguaggi di programmazione

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

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

Corso di Informatica

Linguaggi di programmazione

Linguaggi di programmazione

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

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Fasi di creazione di un programma

Corso di INFORMATICA 2 (Matematica e Applicazioni)

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

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

Metodologie di programmazione in Fortran 90

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

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Introduzione. Informatica B. Daniele Loiacono

Problemi, Algoritmi e Programmi

La Macchina Virtuale

FONDAMENTI di INFORMATICA L. Mezzalira

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

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

INFORMATICA 1 L. Mezzalira

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

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

LINGUAGGI DI PROGRAMMAZIONE

Origini e caratteristiche dei calcolatori elettronici

Strumenti di modellazione. Gabriella Trucco

Introduzione alla Programmazione ad. Oggetti (OOP)

Dispensa di Informatica I.1

Strutturazione logica dei dati: i file

Lezione 8. La macchina universale

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.

Approccio stratificato

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Elementi di semantica operazionale

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

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

Automazione Industriale (scheduling+mms) scheduling+mms.

Linguaggi di Programmazione

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

Nozione di algoritmo. Gabriella Trucco

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

La Metodologia adottata nel Corso

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Cos è un Calcolatore?

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Asse linguistico Propedeutico al 1 livello 1 periodo

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Come ragiona il computer. Problemi e algoritmi

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Algoritmi e strutture dati. Codici di Huffman

Appunti di Sistemi Elettronici

EXPLOit Content Management Data Base per documenti SGML/XML

3. Introduzione all'internetworking

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Richiami di informatica e programmazione

Introduzione alla programmazione in C

Programmare in Java. Olga Scotti

Software. Definizione, tipologie, progettazione

Introduzione ai linguaggi di programmazione

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

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

Esame di INFORMATICA

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

La comunicazione e il linguaggio

Analizzatore lessicale o scanner

4 3 4 = 4 x x x 10 0 aaa

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Architetture Applicative

Architettura di un computer

4. Un ambiente di sviluppo per Java

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio

Informazione e dato. Gabriella Trucco

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Strumenti per la programmazione

Descrizione di un algoritmo

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

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

ALGEBRA DELLE PROPOSIZIONI

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Modellazione di sistema

LINGUAGGI - COMPILATORI - INTERPRETI

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Generazione Automatica di Asserzioni da Modelli di Specifica

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

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

Transcript:

Linguaggi e Paradigmi di Programmazione

Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una definizione poco precisa perché non evita le ambiguità dei linguaggi naturali non si presta a descrivere processi computazionali automatici non aiuta a stabilire proprietà Definizione 2 Definizione 2 Il linguaggio è un oggetto matematico che consente di rispondere a domande come: quali sono le frasi lecite? si può stabilire se una frase appartiene al linguaggio? come si stabilisce il significato di una frase? quali sono gli elementi linguistici primitivi?

Lessico, Sintassi e Semantica Lessico: l insieme di regole formali per la scrittura di parole in un linguaggio Sintassi: l insieme di regole formali per la scrittura di frasi in un linguaggio, che stabiliscono cioè la grammatica del linguaggio stesso Semantica: l insieme dei significati da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio Nota: una frase può essere sintatticamente corretta e tuttavia non avere significato!

Esempio: la sintassi di un numero naturale Diagramma sintattico

Introduzione La Programmazione (in Informatica) è l attività svolta per creare un Programma Un Programma è costituito, come ogni altro tipo di linguaggio, da un alfabeto, con cui viene costruito un insieme di parole chiave (il vocabolario) e da un insieme di regole sintattiche per l uso corretto delle parole del linguaggio I linguaggi di programmazione differiscono comunque dai linguaggi naturali: sono meno espressivi ma più precisi Sono semplici e poveri (poche parole chiave, poche regole), ma privi (generalmente) di qualsiasi ambiguità

Categorie I linguaggi di programmazione si possono suddividere fondamentalmente in tre categorie: Linguaggi Macchina Linguaggi Assembler Linguaggi ad alto livello

Linguaggio Macchina Riflette l organizzazione della macchina più che la natura del problema da risolvere. si diceva : le CPU sono progettate in modo da riconoscere un insieme di istruzioni codificate come configurazioni di bit. L insieme di queste istruzioni è appunto chiamato linguaggio macchina

Linguaggi Assembler Versione simbolica del linguaggio macchina in cui i nomi delle operazioni e degli operandi sono indicati con codici simbolici Esiste (quasi) una corrispondenza biunivoca tra istruzione e numero di operazioni eseguite dal sistema necessita di un traduttore che lo trasformi in word di bit (affinché il calcolatore lo possa eseguire)

Linguaggi ad alto livello Elementi intermedi di una varietà di linguaggi ai cui estremi si trovano il linguaggio macchina, da un lato, ed i linguaggi naturali, dall altro Più sofisticati ed astratti, slegati dal funzionamento fisico della macchina necessitano di un traduttore che lo trasformi in word di bit (affinché il calcolatore lo possa eseguire)

Gerarchie ed astrazioni

Gerarchie ed astrazioni Esistono, quindi, diversi livelli di astrazione: Linguaggii macchina e Assembler Implicano la conoscenza dettagliata delle caratteristiche della macchina (registri, dimensione dati, set di istruzioni) Semplici algoritmi implicano la specifica di molte istruzioni Linguaggi di alto livello Il programmatore può astrarre dai dettagli legati all architettura ed esprimere i propri algoritmi in modo simbolico Sono indipendenti dalla macchina hardware sottostante

Un po di terminologia Programmare in un determinato linguaggio ad alto livello significa produrre un file di puro testo che prende il nome di codice sorgente (o semplicemente sorgente) La traduzione in linguaggio macchina di un codice sorgente prende il nome di codice eseguibile (o semplicemente eseguibile)

La traduzione 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 Il traduttore converte il testo di un programma scritto in un particolare linguaggio di programmazione (sorgente) nella corrispondente rappresentazione in linguaggio macchina (programma eseguibile) Generalmente ogni singola istruzione di un linguaggio di alto livello corrisponde a molte istruzioni in linguaggio macchina: quanto più il linguaggio si discosta dal linguaggio macchina, tanto più il lavoro di traduzione è difficile

Tipi di traduttore 1. Compilatore Traduce in linguaggio macchina un programma scritto in uno specifico linguaggio ad alto livello 2. Interprete Analizza e traduce il programma scritto in linguaggio ad alto livello e contemporaneamente vengono eseguite le corrispondenti elaborazioni

Compilatore Opera la traduzione di un programma sorgente (alto livello) in un programma oggetto direttamente eseguibile dal calcolatore PRIMA si programma traduce tutto il POI si tradotta esegue la versione Nota: traduzione e esecuzione procedono separatamente al termine della compilazione è disponibile la versione tradotta del programma la versione tradotta è però specifica per quella macchina per eseguire il programma basta avere disponibile la versione tradotta (non è necessario ricompilare) Programma Compilatore Programma in linguaggio macchina (codice eseguibile) Il codice eseguibile viene memorizzato e può essere eseguito ogni volta che si vuole senza ricompilare Input Esecuzione del codice macchina Output

Esempio di compilazione Dobbiamo sottoporre un curriculum, in inglese, ad una azienda, ma non conosciamo l inglese Abbiamo bisogno di un traduttore che traduca quanto scritto da noi dall italiano all inglese contattiamo il traduttore il traduttore riceve il testo da tradurre il traduttore fornisce il testo tradotto possiamo sottoporre il nostro curriculum all azienda

Interprete Traduce ed esegue il programma sorgente, traduzione ed esecuzione procedono insieme Nota: al termine non vi è alcuna versione tradotta del programma originale se si vuole rieseguire il programma occorre ancora tradurlo Programma Interprete Output Input Non esiste codice eseguibile memorizzato e ogni volta che il programma deve essere eseguito, esso deve essere interpretato

Esempio di interprete Dobbiamo incontrare un manager cinese per motivi di lavoro ma non conosciamo il cinese Abbiamo bisogno di un interprete che traduca il nostro dialogo contattiamo l interprete parliamo in italiano, in presenza dell interprete contemporaneamente l interprete comunica al manager cinese quanto detto da noi e viceversa Il compito dell interprete si svolge contestualmente all incontro con il manager cinese

Compilatore vs Interprete Compilatore Esecuzione efficiente Codice eseguibile non portabile Ogni modifica del programma richiede una nuova compilazione Interprete Esecuzione meno efficiente Programma portabile Esecuzione immediata ad ogni modifica

Nota: la traduzione dei programmi Java Un compilatore Java produce un codice intermedio, il Byte Code che è codice portabile a basso livello, simile all assembler, indipendente dall hardware e invisibile al programmatore Java Un interprete traduce ed esegue il Byte Code

La soluzione di un probleme e l arte l della programmazione La soluzione di un problema tramite un calcolatore è quindi un procedimento elaborato: Definizione del problema Algoritmo per la soluzione del problema Codifica Debugging Validazione Documentazione Manutenzione Programmazione Analisi

La soluzione di un probleme e l arte l della programmazione Codifica Traduzione dell algoritmo in istruzioni del linguaggio di programmazione Debugging, correzione degli errori sintattici e semantici Errori sintattici Espressioni non valide o non ben formate nel linguaggio di programmazione Errori semantici Comportamento non aderente alle aspettative/alla intenzionalità del programmatore

La soluzione di un probleme e l arte l della programmazione Validazione Test su tutte le condizioni operative del programma Test su input estremi (es., vettori di dimensione 0 o 1, variabili nulle) Documentazione Inserimento di commenti esplicativi nelle varie parti del programma per facilitarne la comprensione (dopo molto tempo dalla stesura o per terze persone) Manutenzione Modifica del programma per soddisfare il cambiamento delle specifiche con cui deve operare

I paradigmi di programmazione Un paradigma di programmazione è un modello concettuale che fornisce la struttura di un programma. I principali paradigmi di programmazione sono: Programmazione Procedurale (o Imperativa) Programmazione Funzionale Programmazione Logica Programmazione Object-Oriented

Programmazione Procedurale Un programma è composto da istruzioni che realizzano trasformazioni di stato Uno stato è identificato da tutti i valori di un certo insieme di variabili in un certo stadio dell esecuzione: C Pascal etc.

Programmazione Funzionale Un programma è una funzione che viene valutata per ottenere un risultato: Lisp SML etc.

Programmazione Logica Un programmaèun insiemedi fattie regole e la sua esecuzione equivale alla realizzazione di una dimostrazione: Prolog LDL etc.

Programmazione Object-Oriented Un programmaèun insiemedi oggetti (astrazioni della realtà) dotati di proprietà (dati) e metodi (procedure) che comunicano tramite scambio di messaggi: Java C++ etc.