Cos'e un linguaggio di programmazione?

Documenti analoghi
Introduzione allo Studio dei Linguaggi di Programmazione. Corso di Linguaggi di Programmazione Informatica e Tecnologie Produzione Software

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

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

Linguaggi di programmazione e astrazione

Programmazione C Massimo Callisto De Donato

Il linguaggio di programmazione Python

FONDAMENTI DI INFORMATICA

Introduzione al Calcolo Scientifico

Linguaggi di Programmazione

Programmazione I. Linguaggi di programmazione. Traduzione. Fabrizio Messina

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

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

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Linguaggi di programmazione

Studio degli algoritmi

LINGUAGGI DI ALTO LIVELLO

Traduzione ed Interpretazione. Queste sconosciute

Traduzione ed Interpretazione

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

FONDAMENTI DI INFORMATICA

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

PROGRAMMAZIONE INFORMATICA SECONDO BIENNIO. Liceo Scientifico opzione Scienze Applicate

Macchine astratte, linguaggi, interpretazione, compilazione

Linguaggi, Traduttori e le Basi della Programmazione

PROGRAMMAZIONE. INFORMATICA SECONDO BIENNIO Opzione Scienze Applicate

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

Linee di programmazione

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

Strutture dati nel supporto a run time

Linguaggi di alto livello, compilatori e interpreti

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

Linguaggi e traduttori

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Elementi di programmazione

LINGUAGGI DI ALTO LIVELLO

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

la traduzione dei programmi ed introduzione a Java

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

programmazione A.A Elementi di Informatica ( Lezione VI ) Linguaggi di programmazione Prof. Giovanni Gallo Dr.

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

1: Linguaggi di Programmazione

Fondamenti dei linguaggi di programmazione

Introduzione alla Programmazione Funzionale

Linguaggi di Programmazione

Indice. Prefazione. 3 Oggetti e Java 53

Elementi di programmazione

In passato, occuparsi di informatica era sinonimo di programmare computer

Linguaggi di programmazione

I Linguaggi di Programmazione

Organizzazione strutturata

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Basi di dati Basi di dati per bioinformatica

Elementi di Informatica

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Espressioni e Comandi

Traduzione e interpretazione

Introduzione all OOP!

Metodi Avanzati di Programmazione (II Anno) a.a. 2011/2012 Docente: Annalisa Appice Dipartimento di Informatica Università degli Studi Bari Aldo Moro

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Salvatore Cuomo Prolusione

Programmazione: Sommario

Corso di Linguaggi di Programmazione + Laboratorio

Lezione 15 Il Set di Istruzioni (1)

Macchine Astratte. Luca Abeni. February 22, 2017

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Informatica. Terzo anno Prof. A. Longheu

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Corso di Linguaggi di Programmazione

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura Anno Accademico

Macchina Astratta: struttura e realizzazione.

Basi di dati D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/13

Introduzione alla programmazione. Walter Didimo

Università di Pisa Facoltà di Scienze Matematiche Fisiche e Naturali

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

L adozione di MATLAB e Simulink nei Corsi di Ingegneria al Politecnico di Milano. Maurizio Magarini MATLAB EXPO Milano, 4 novembre 2014

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

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

Elena Baralis 2007 Politecnico di Torino 1

Corso Programmazione Java Standard

ISTITUTO SUPERIORE ENRICO FERMI. PROGRAMMAZIONE DEL GRUPPO DISCIPLINARE INFORMATICA IT INDIRIZZO INFORMATICA E TELECOMUNICAZIONI a.s.

Corso di Architettura (Prof. Scarano) 09/04/2002

Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia. Università degli Studi di Salerno

Introduzione al Linguaggio C

Fondamenti di Programmazione

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Sommario PREFAZIONE... XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLE APPLICAZIONI JAVA...

DOCENTE PROF. ALBERTO BELUSSI. Anno accademico 2010/11

Syllabus A042 Insegnamenti disciplinari

Informatica A. Allievi Gestionali A.A Nozioni di Base

Ministero della Pubblica Istruzione Ufficio Scolastico Regionale per la Sicilia Direzione Generale

Introduzione alla Programmazione Logica ed al linguaggio PROLOG

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Introduzione alla OOP Object Oriented Programming

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Transcript:

Linguaggi di Programmazione Corso di Laurea in Informatica Introduzione ai linguaggi di Valeria Carofiglio a.a. 2016-2017 (questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi) Fortran-cobol Lisp Fortran-Algol Pascal C++ Ling. Di scripting Java c# Con riferimento ai processi di sviluppo ATTENZIONE: molto spesso il linguaggio anticipa il processo cui fa riferimento!! Cos'e un linguaggio di Evoluzione della complessità di linguaggi e processi Una notazione per descrivere algoritmi e strutture dati può essere considerata un linguaggio di Ma attenzione!!!! Evoluzione della complessità di linguaggi e processi I LdP convenzionali sono visti come ASTRAZIONI di una architettura di VonNeumann:

L architettura di Von Neumann Alla base delle macchine attuali Cicli di: - CPU: preleva una istruzione per volta dalla memoria - Esecuzione di una istruzione: prelievo dati dalla memoria + Manipolazione dati + Copiatura risultati Cambiamento di stato Un progettista di LdP deve saper bilanciare: 1) Computazione espressa convenientemente per la persona 2) Uso efficiente degli elaboratori (in funzione anche del dominio applicativo) I LdP convenzionali sono visti come ASTRAZIONI di una architettura di VonNeumann: Architettura di Von Neumann LdP Convenzionale: Prelievo sequenziale della CPU + esecuzione Cella di memoria (indirizzo, contenuto) Esecuzione sequenziale delle istruzioni Variabili (nome, valore) Un progettista di LdP deve saper bilanciare: Stato = Contenuto della memoria Stato = Valore delle variabili Modello computazionale di un linguaggio imperativo: Esecuzione sequenziale di istruzioni che cambiano lo stato della computazione mediante la modifica dei valori di un insieme di variabili 1) Computazione espressa convenientemente per la persona 2) Uso efficiente degli elaboratori (in funzione anche del dominio applicativo) E necessario un criterio di catalogazione (I paradigmi di ) I LdP si sono evoluti verso livelli di astrazione crescenti Abbandono del modello computazionale di VonNeumann LdP Funzionali (teoria delle funzioni ricorsive) e Logici (Logica matematica) Fondamenti matematici (compromesso necessario) Introduzione di costrutti imperativi Criterio di catalogazione dei LdP Imperativi PROGRAMMA = ALGORITMO +DATI Le caratteristiche centrali sono le variabili, l'istruzione di assegnazione e l'iterazione Esempi: C, Pascal Funzionali PROGRAMMA = COLLEZIONE DI FUNZIONI MATEMATICHE Il principale meccanismo di calcolo è l'applicazione di funzioni (con dominio e codominio) ai parametri dati Esempi: LISP, Scheme

Criterio di catalogazione dei LdP Logici PROGRAMMA = COLLEZIONE DI DICHIARAZIONI LOGICHE SU COSA UNA CERTA FUNZIONE DEBBA COMPUTARE Basati su regole (in un ordine non particolare). Il meccanismo di calcolo è l applicazione di dichiarazioni per trovare soluzioni (non uniche al problema) Esempi: Prolog Orientati agli oggetti PROGRAMMA= collezione di oggetti che interagiscono passandosi messaggi che trasformano il loro stato Astrazione dati, ereditarietà, late binding (associazione a run time di valori e identificatori) Esempi: Java, C++ Criterio di catalogazione dei LdP Markup Nuovi; non sono in senso stretto linguaggi di, ma specificano il layout dell'informazione nei documenti per il Web Esempi: XHTML, XML Accrescimento della capacità di imparare nuovi linguaggi Tecnologia sw legata a Metodologia di progetto Strumenti di sviluppo Ling.di Programmazione Apprendimento di un nuovo LdP è un processo lungo e faticoso ed è agevolato dalla conoscenza di concetti dei LdP, indipendentemente dal particolare LdP Accrescimento della capacità di imparare nuovi linguaggi Tecnologia sw legata a Metodologia di progetto Strumenti di sviluppo Ling.di Programmazione Apprendimento di un nuovo LdP è un processo lungo e faticoso ed è agevolato dalla conoscenza di concetti dei LdP, indipendentemente dal particolare LdP Accrescimento della capacità di progettare nuovi LdP

Domini Applicativi Applicazioni Scientifiche Gran numero di calcoli in virgola mobile Fortran (1957) Applicazioni Commerciali / Bancarie Produzione di report, uso di numeri decimali e caratteri COBOL (1959) Intelligenza Artificiale Manipolazioni su simboli piuttosto che su numeri LISP (1958), Prolog (1970),... Metodi per soddisfarli Metodi di sviluppo del Software Tools di supporto allo sviluppo Caratteristiche dei LdP Domini Applicativi Programmazione di sistema Importanza dell'efficienza per via dell'uso continuo C Sistemi per il Web Insieme di vari linguaggi: markup (es., XHTML), scripting (es., PHP, Javascript), general-purpose (es., Java) Affidabilità del Software e LdP Il software deve rispettare i requisiti in ogni circostanza Leggibilità e Scrivibilità Un linguaggio che non supporta modalità naturali per esprimere un algoritmo userà necessariamente approcci non naturali, e quindi una ridotta affidabilità Requisiti di qualità del software e Affidabilità Manutenibilità Efficienza Affidabilità del Software e LdP (cont.) Semplicità: Pochi costrutti, Un ridotto numero di primitive, Poche regole per la loro combinazione. Supporto all'astrazione: L'abilità di definire e usare strutture complesse o operazioni in modalità che consentano di trascurare i dettagli Sicurezza Evitare costrutti che consentano la scrittura di programmi pericolosi (Goto, Puntatori)

Affidabilità del Software e LdP (cont.) Robustezza Grado di capacità di reazione ad eventi indesiderati (esaurimento memoria, input errato, overflow aritmetico) Es: Gestione delle eccezioni Ulteriori caratteristiche di un LdP: Costo Addestramento dei programmatori all'uso di un linguaggio Scrittura dei programmi (vicinanza a particolari applicazioni) Compilazione dei programmi Esecuzione dei programmi Sistema di implementazione dei linguaggi: Disponibilità di compilatori (gratuità) Affidabilità: una scarsa affidabilità porta all'aumento dei costi Manutenzione dei programmi Manutenibilità del Software e LdP I programmi devono essere facilmente modificabili Fattorizzazione La possibilità di modellare una caratteristica in un unico segmento di codice (sottoprogrammi, costanti simboliche) Localizzazione La possibilità di restringere l effetto di un costrutto ad una piccola porzione di programma Ulteriori caratteristiche di un LdP: Altro Portabilità La facilità con cui i programmi possono essere spostati da una implementazione del linguaggio ad un'altra Generalità L'applicabilità ad un ampio spettro di applicazioni Precisione nella definizione La completezza e precisione nella definizione ufficiale del linguaggio Efficienza del Software e LdP In termini di Prestazioni (spazio tempo) In termini di Produttività: Sforzo per produrre/manutenere Possibilità di riuso portabilità Esempio di influenza negativa sull efficacia in spazio: Il non riuso della memoria Compromessi nella progettazione dei linguaggi Affidabilità vs. Costo di esecuzione Esempio: Java richiede che tutti i riferimenti a componenti di un array elements siano controllati per quanto riguarda la corretta indicizzazione ma ciò comporta maggiori costi per l'esecuzione Leggibilità vs. Scrivibilità Esempio: APL fornisce numerosi operatori potenti (e un gran numero di nuovi simboli), che consentono la scrittura sintetica di calcoli complessi e programmi compatti, al costo, però, di una scarsa leggibilità Scrivibilità (flessibilità) vs. Affidabilità Esempio: i puntatori C++ sono potenti e molto flessibili ma di uso spesso poco affidabile