Premessa sui linguaggi

Documenti analoghi
Linguaggi di programmazione e astrazione

Linguaggi di Programmazione

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

Cosa è un programma. Informatica di Base -- R.Gaeta 18

In passato, occuparsi di informatica era sinonimo di programmare computer

Introduzione. Contenuti da Cap. 1 Ghezzi et al.

Linguaggi di alto livello, compilatori e interpreti

14. Verifica e Validazione

MODELLO e RAPPRESENTAZIONE

Il linguaggio di programmazione Python

Elementi di programmazione

1: Linguaggi di Programmazione

1: Linguaggi di Programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Linguaggi di programmazione

Linguaggi e traduttori

Linguaggi di alto livello, compilatori e interpreti

Corso di Ingegneria del Software. Introduzione al corso

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Elementi di programmazione

Programmazione con Java

LINGUAGGI DI ALTO LIVELLO

Programmazione: Sommario

Sistemi di Elaborazione delle Informazioni

Informatica. Terzo anno Prof. A. Longheu

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Tecnologia e Progettazione di Sistemi Informatici e di Telecomunicazioni

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

Algoritmi, Strutture Dati e Programmi. UD 2.d: Linguaggi Procedurali

Programmazione dell attività didattica di Informatica Classe III sez. B a.s

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

Corso di Laurea Triennale in Ingegneria Informatica Ingegneria del software. Processo software. Marina Mongiello. il processo

Cos è la programmazione?

Perché l informatica nei corsi umanistici? E solo una questione tecnica, far apprendere l uso dello strumento?

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Analisi e progettazione ad oggetti

Introduzione all OOP!

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

Informatica 3. LEZIONE 0: Panoramica dei linguaggi di programmazione. Politecnico di Milano - Prof. Sara Comai 1

Introduzione alla Programmazione. Giselda De Vita

Tecnico della progettazione implementazione e manutenzione di sistemi di gestione di database

Un linguaggio per la rappresentazione formale di vincoli su scenari d'uso

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

La fase di Implementazione

la traduzione dei programmi ed introduzione a Java

Macchina Astratta: struttura e realizzazione.

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)

Fondamenti VBA. Che cos è VBA

Calcolo numerico e programmazione Programmazione

Informatica 1. 4 Programmazione e Sviluppo del software. ing. Luigi Puzone

Il calcolatore. Architettura di un calcolatore (Hardware)

Meccatronica? Flavio Corradini CF3000 Engineering & Electronics Group

Concetti Introduttivi

Verifica parte IID. Test in grande. Test e modularità. Test di modulo

A. Ferrari sistemi informativi e sistemi informatici

PROBLEMI E ALGORITMI

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

Corso di Informatica

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Corso di Informatica

Unità di apprendimento 6. Dal problema al programma

A. Ferrari Informatica

28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI

generalità concetti di base

Gestione dello sviluppo software Modelli Base

Modelli di processo. Marina Zanella - Ingegneria del Software Processo 1

Procedure e funzioni A. Ferrari

Coding in classe 2^ Progetto trasversale a Matematica, Geometria, Tecnologia, Geografia

SYLLABUS TRIENNIO. prof. Mauro Malatesta. Approvata dal Dipartimento di il. Approvata dal Consiglio di classe il...

Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione

Introduzione alla programmazione. Walter Didimo

Programmazione di INFORMATICA e Laboratorio

PROGETTISTA MECCANICO

Politecnico di Milano. Progetto di Ingegneria del Software 2 MPH - Manage Project Homework

Rappresentazione con i diagrammi di flusso (Flow - chart)

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

INFORMATICA NOVITÀ IL LINGUAGGIO JAVA. Massimiliano Bigatti. Guida alla programmazione di base IN ALLEGATO AL VOLUME

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Linguaggio di Riferimento: C

INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Disegno di Macchine. Docente: ing. Francesca Campana

Laboratorio di Informatica I

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio. Messaggio

MATERIALI PER LA DISCUSSIONE

IC Test & Design for Testability

Transcript:

Premessa sui linguaggi Il linguaggio di programmazione si può vedere come un ponte tra diverse realtà: Il sistema reale (Nessuna assunzione di buon comportamento) Il sistema di calcolo (comportamento deterministico) Obbiettivo: avvicinare i due sistemi. Strumento: astrazione. Prof. Munna 2

Evoluzione dei linguaggi (cont.) Carl Adam Petri ha proposto un sistema di riferimento per descrivere un computer, indicando le varie immagini che il calcolatore ha avuto nel corso del tempo caratterizzando il livello di potenzialità in funzione del tempo. Il computer nasce alla fine della 2^ guerra mondiale, la sua evoluzione non è stata lineare ma a sbalzi potenzialità 2 4 Reale potenzialità 3 5 1 40 50 60 70 80 tempo Prof. Munna 3

Evoluzione dei linguaggi (cont.) potenzialità 2 4 5 3 1 1 tempo Anni 40: utilizzato per calcoli balistici, - veloce macchina calcolatrice; - nascono i linguaggi: linguaggio macchina, assembler; - programmi sequenziali; - sottovalutazione delle potenzialità. Prof. Munna 4

Evoluzione dei linguaggi (cont.) potenzialità 2 4 5 3 1 2 tempo Anni 50 : si suppone che sia una sorta di super intelligenza, in grado di replicare il comportamento e pensiero umano; - nascono i linguaggi: Lisp, Prolog; - programmi funzionali; - sopravalutazione delle potenzialità. Prof. Munna 5

Evoluzione dei linguaggi (cont.) potenzialità 2 4 5 3 3 1 tempo Anni 60 : strumento versatile, - capace di trattare problemi molto diversi - HLL (High Level Language): Fortrant, COBOL; - VHLL (Very High Level Language): Pascal, ADA, C - programmi procedurali; - sottovalutazione delle potenzialità; - spostamento dall essere legato al sistema di calcolo al sistema reale. Prof. Munna 6

Evoluzione dei linguaggi (cont.) potenzialità 2 4 5 3 4 1 tempo Anni 70: Sistema esperto; - Partner della comunicazione; - Immagine esagerata in quanto i calcolatori trasmettono solo dati, mentre l essere umano trasmette altro (con i gesti, con la voce, i consigli). Prof. Munna 7

Evoluzione dei linguaggi (cont.) potenzialità 2 4 5 3 5 1 tempo Anni 80: l oggi, Strumento generalizzato di comunicazione; - non più un partner ma uno strumento; - generalizzato perché trasmette solo dati ma anche suoni, immagini etc. - nascono i linguaggi ad oggetti, C++, Smaltalk, Eiffel, Java. Prof. Munna 8

Evoluzione dei linguaggi Dal 3 al 5 si ha un passaggio dai mainframe ai personal computer, e si può vedere come sono radicalmente cambiati ed evoluti i linguaggi di programmazione. 1: Programming in the small 3: Programming in the large 5: Sistemi embedded Prof. Munna 9

Ambienti di sviluppo I linguaggi diventano sempre più astratti; Nascono gli ambienti di programmazione integrato che consente di mettere insieme tool+elementi e tool sempre più sofisticati. Gli ambienti di sviluppo facilitano anche il lavoro di gruppo (Programming in the large). Prof. Munna 10

Modularità Incrementabilità: (nella costruzione) consente di considerare un problema per volta; Riusabilità: serve per poter riusare porzioni di codice che trovo in tutti i sistemi e che quindi sono già testati. Modificabilità: posso cambiare una sola componente senza dover ripensare a tutto; Modulo = Componente Prof. Munna 11

Step per la creazione del software I passaggi per arrivare da un sistema reale al linguaggio sono: Analisi: carattere informale, compiuta tra progettisti e utenti, serve ad individuare i requisiti fondamentali; Disegno: svolta dai progettisti, avanzano una soluzione che possono man man raffinare; Implementazione: traduzione del disegno in uno specifico lunguaggio di programmazione. Prof. Munna 12

Step per la creazione del software Analisi Design Implementation Why Semiformal Informal Requirements What Requirements Analisis Formal specification (Prototype) How Mechanical Optimization (code generation) Formal develepment Concrete source program needs Validation Maintenance Tuning (messa a punto) All estremità sinistra (needs) c è il sistema reale dove si parla un linguaggio dichiarativo logico e informale o semi formale; All estremità destra c è il sistema di calcolo. Prof. Munna 13

Step per la creazione del software La fase di analisi consente di avere una traccia dei requisiti che si vogliono; Informal requirement/semi formal: sono i requisiti, le esigenze di chi vuole sviluppare un sistema informatico (Requisiti base); Va sempre più affermandosi l idea che il semi formal deve diventare formal già in fase di analisi, utilizzando un linguaggio dichiarativo magari logico; Prof. Munna 14

Step per la creazione del software La fase di Design è il punto di inizio della progettazione, facendo delle scelte di tipo hardware e software; La letteratura e l esperienza consiglia di realizzare dei prototipi funzionanti per avere una visione dell avanzamento del progetto, creando selle simulazioni dei casi reali. Tali prototipi vanno sempre più raffinati in accordo con le specifiche del sistema. La simulazione in fase di design permette di anticipare il tuning che altrimenti peserebbe tutto sulla fase di implementazione. Il costo di riparazione di un errore è tanto più alto quanto più tardi è rilevato. Si ottiene un programma non ottimizzato ma che è una buona guida per il successivo sviluppo. Maintenance: necessaria se sopraggiungono modifiche Prof. Munna 15

Step per la creazione del software La fase di implementazione deve consentire di ottimizzare il codice ed svilupparlo in un linguaggio adatto alle varie esigenze; Tuning: messa a punto quando il codice è stato terminato si passa alla fase di test e di manutenzione. Se in questa fase si ci accorge che si è commesso un errore di analisi sarà molto più difficile e dispendioso modificare il codice. Seguendo queste fasi non si diminuisce il tempo di realizzo di un progetto, ma si evitano errori di valutazione che porterebbero a raddoppiare il tempo necessario. Prof. Munna 16

Ciclo di vita del software (cont.) System requirem Analisi Ciclo di vita a Cascata di B. W. Boehm: Validation Software requirem Validation Preliminary design Disegno Validation Detailed design Validation Code R Defining Implementazione Validation Testing Validation Operation & Mant. Validation Prof. Munna 17

Ciclo a Cascata Il ciclo di vita a cascata identifica una serie di attività per arrivare da una fase iniziale di prima identificazione dei requisiti all attività di software operativo in un ambiente; Il merito di Boehm e quello del riconoscimento della necessità di un controllo sistematico all indietro; Ogni volta che si fa un passo si effettua una verifica. Prof. Munna 18

Ciclo di vita del software (cont.) Ciclo di vita a fontana: manutenzione testing implementazione design analisi specifiche Prof. Munna 19

Ciclo a fontana Si intuisce che è un ciclo non una sequenza di cose da fare; da qualunque punto si può tornare indietro. Gli obiettivi rimangono sempre quelli del ciclo a cascata. Prof. Munna 20

Top-Down Bottom-Up Il sistema da realizzare si presenta come un macro problema, la fase di analisi deve servire per scomporre il macro problema in sotto problemi di più facile soluzione; Iterare questo procedimento sino al raggiungimento di problemi di elementare soluzione. Macroproblema Liv 1 Prof. Munna 21 Liv. n

Top-Down Si comincia a sviluppare i sotto problemi, si compongono alla fine per il raggiungimento dell obbiettivo finale; Si fa poco uso di codice già scritto; Non si sfrutta a pieno la modularità Prof. Munna 22

Bottom-up Il denominatore comune con la metodologia Top-Down è la scomposizione in sotto problemi di elementare soluzione; Quando si è arrivato ai problemi elementari si controlla se si sono risolti in precedenza problemi analoghi; In caso affermativo si fa forte riuso di questi moduli, magari utilizzando l ereditarietà. Prof. Munna 23

Bottom-up Per la realizzazione di grandi progetti sorge la necessità di: lavorare in team; riuso di componenti già implementate e librerie sempre più fornite. Il codice diventa mezzo di comunicazione tra programmatori e tra programmatori e macchina (explanation). L approccio Bottom-Up mette l enfasi su ciò che accomuna le varie applicazioni (facilita la riusabilità). Prof. Munna 24