Linguaggi di programmazione

Documenti analoghi
LINGUAGGI DI ALTO LIVELLO

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Introduzione alla programmazione. Walter Didimo

Fondamenti di Informatica T. Il Software

Introduzione alla Programmazione. Giselda De Vita

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Linguaggi di alto livello, compilatori e interpreti

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

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

COMPILAZIONE. Tarsformazione di linguaggi

Concetti Introduttivi. Il Computer

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Il calcolatore. Architettura di un calcolatore (Hardware)

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

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Programmazione C Massimo Callisto De Donato

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

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

FONDAMENTI DI INFORMATICA

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Algoritmi e Linguaggi

Unità Didattica 2 I Linguaggi di Programmazione

Primi passi col linguaggio C

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Cosa è l Informatica?

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

Architettura dei calcolatori e Software di sistema

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Fondamenti VBA. Che cos è VBA

Introduzione a Visual Studio Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Struttura del calcolatore

INTRODUZIONE Informatica - Modulo di Programmazione Ingegneria gestionale, a.a Patrizia Scandurra

PROBLEMI ALGORITMI E PROGRAMMAZIONE

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

Sorgenti di errore. Laboratorio di Informatica 1

Lab 01 Introduzione a Codelite

Introduzione alla programmazione

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Elementi di Informatica Corso di Laurea in Scienze Geologiche a.a. 2003/2004. Docente. Orario. Da Ottobre-Dicembre:

Rappresentazione con i diagrammi di flusso (Flow - chart)

Introduzione al Calcolo Scientifico

Corso di Informatica di Base

Introduzione al Linguaggio C ed all IDE DEV-C++

Programmazione di INFORMATICA e Laboratorio

Linguaggio C: introduzione

Elementi di programmazione Algoritmi Flow Chart, Fasi della programmazione Linguaggi Elementi di programmazione ad oggetti

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Linguaggi di programmazione

Linguaggi di programmazione

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

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Linguaggi e Paradigmi di Programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

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

Dispensa di Informatica II.1

Introduzione alla Programmazione

LINGUAGGI DI PROGRAMMAZIONE!

Linguaggio C: le funzioni. Introduzione e sintassi

IL PRIMO PROGRAMMA IN C

II Esercitazione: S.O. & Fortran 77

Transcript:

Parte 2 Linguaggi di programmazione Livello di Astrazione per la Codifica di un Algoritmo Si può risolvere un problema senza prima fissare un insieme di azioni, di mosse elementari possibili per l elaboratore? No, bisogna prima scendere al livello della macchina, per conoscerne le caratteristiche Ma quale macchina? È corretto impostare la soluzione a partire da tali mosse elementari? SI, per risolvere il problema con efficienza NO, se la macchina di partenza ha mosse di livello troppo basso Informatica - A. A. 2009/2010 - Linguaggi 29 1

Livello di Astrazione per la Codifica di un Algoritmo (cont.) Bisogna risalire ad un più adeguato livello di ASTRAZIONE (processo di aggregazione di informazioni e dati e di sintesi di modelli concettuali che ne enucleano le proprietà rilevanti escludendo i dettagli inessenziali) Informatica - A. A. 2009/2010 - Linguaggi 30 PER LA CODIFICA DI UN ALGORITMO Bisogna conoscere la sintassi di un linguaggio di programmazione Bisogna conoscere la semantica di un linguaggio di programmazione Bisogna conoscere un ambiente di programmazione Quale linguaggio? Quale ambiente di programmazione? Informatica - A. A. 2009/2010 - Linguaggi 31 2

Linguaggi di programmazione Un linguaggio di programmazione è una notazione formale per descrivere algoritmi Un programma è la codifica o implementazione di un algoritmo in un linguaggio di programmazione Un programma si compone di più istruzioni scritte nel linguaggio di programmazione. Quali parole chiave vi sono in un linguaggio? Quali sono i meccanismi di combinazione delle parole chiave? E soprattutto, a quale macchina si riferisce? Informatica - A. A. 2009/2010 - Linguaggi 32 Astrazione: come si vede la macchina Informatica - A. A. 2009/2010 - Linguaggi 33 3

c2 Linguaggio macchina E il linguaggio di un computer Il linguaggio i macchina è direttamente t eseguibile dall'elaboratore, senza alcuna intermediazione Computer con architetture interne (CPU) differenti hanno linguaggi macchina differenti Pertanto, t un programma scritto nel linguaggio i macchina di un computer non è eseguibile su di un computer con un architettura differente (Si dice che non è portabile!) Informatica - A. A. 2009/2010 - Linguaggi 34 c3 Linguaggi di alto livello Si basano su una macchina le cui mosse non sono quelle della macchina hardware realizzano ano una macchina virtuale Supportano concetti ed astrazioni Promuovono metodologie per agevolare lo sviluppo del software da parte del programmatore Hanno capacità espressive molto superiori rispetto a quelle del linguaggio macchina Esistono centinaia di linguaggi di programmazione! (anche se pochi sono in uso) Informatica - A. A. 2009/2010 - Linguaggi 35 4

Diapositiva 7 c2 Linguaggio macchina fatto di numeri (riconducibili a 0 e 1) claudia; 26/09/2005 Diapositiva 8 c3 Assembler converte in linguaggio macchina (abbreviazioni x operazioni) LOAD a ADD b STORE a Linguaggi alto livello (compilatori) a=a+b claudia; 26/09/2005

c4 Linguaggi di alto livello (cont.) Informatica - A. A. 2009/2010 - Linguaggi 36 c5 Categorie di linguaggi ad alto livello Ogni categoria determina uno specifico stile di programmazione! Informatica - A. A. 2009/2010 - Linguaggi 37 5

Diapositiva 9 c4 FORTRAN= FORmula TRANslator IBM '50 x applicazioni scientifiche con calcoli complessi COBOL orientato alle applicazioni commerciali con grandi quantità di dati '59 Pascal '71 nome da filosofo Blaise, accademico ADA '80 US Department of Defense DOD. Nome da lady Ada Lovelace, figlia del poeta Lord Byron. Agli inizi XIX sec. 1' programma per computer del mondo (per la Macchina Analitica, dispositivo meccanico) C scritto per scrivere il software dei sistemi operativi e compilatori (anni '70 Bell Laboratories) claudia; 26/09/2005 Diapositiva 10 c5 PROLOG = PROgramming LOGic ideato per AI Il sistema decide la strada utile per risolvere un certo problema, compresa la sequenza delle istruzioni che il computer dovrà eseguire per risolvero Dopo la comparsa del Fortran nacquero una serie di altri linguaggi di programmazione storici, che implementarono una serie di idee e paradigmi innovativi: i più importanti sono l'algol (1960) e il Lisp (1959). (Linguaggi funzionali come LISP: Esecuzione del programma = valutazione della funzione) Tutti i linguaggi di programmazione oggi esistenti possono essere considerati discendenti da uno o più di questi primi linguaggi, di cui mutuano molti concetti di base; l'ultimo grande progenitore dei linguaggi moderni fu il Simula (1967), che introdusse per primo il concetto (allora appena abbozzato) di oggetto software claudia; 26/09/2005

Categorie di linguaggi ad alto livello Imperativi L'istruzione è un comando esplicito, che opera su una o più variabili oppure sullo stato t interno della macchina, e le istruzioni vengono eseguite in un ordine prestabilito Strutturati (C, Ada, Pascal, ) Ad oggetti (C++, Java, ) Funzionali Basati sul concetto matematico di funzione Logici L'istruzione è una clausola che descrive una relazione fra i dati: programmare significa descrivere l'insieme delle relazioni esistenti fra i dati e il risultato voluto Informatica - A. A. 2009/2010 - Linguaggi 38 Evoluzione dei linguaggi Informatica - A. A. 2009/2010 - Linguaggi 39 6

Perché esistono tanti linguaggi? Contesto applicativo: Scientifico: Fortran Gestionale: Cobol Sistemi Operativi: C Applicazioni di rete: Java Modello di partenza: Informatica - A. A. 2009/2010 - Linguaggi 40 Ambiente di programmazione È l'insieme degli strumenti (tool) che consentono la codifica, la verifica e l'esecuzione di nuovi programmi (fasi di sviluppo) ) Sviluppo di un Programma Affinché un programma scritto in un qualsiasi linguaggio di programmazione ad alto livello sia comprensibile (e quindi eseguibile) da un calcolatore, occorre tradurlo dal linguaggio di programmazione originario al linguaggio comprensibile al calcolatore (linguaggio macchina) Questa operazione viene normalmente svolta da speciali programmi, detti traduttori Informatica - A. A. 2009/2010 - Linguaggi 41 7

Processo di traduzione Programma Traduzione main() { int A; 00100101...... A=A+1; 11001.. if... 1011100... I traduttori convertono il testo dei programmi scritti in un particolare linguaggio di programmazione (programmi sorgenti) nella corrispondente rappresentazione in linguaggio macchina (programmi eseguibili) Informatica - A. A. 2009/2010 - Linguaggi 42 Tipi di Traduttori Due categorie di traduttori: Compilatori traducono l intero programma sorgente (senza eseguirlo!) e producono in uscita il programma convertito in linguaggio macchina Interpreti traducono ed eseguono immediatamente ogni singola istruzione del programma sorgente Quindi Nel caso del compilatore, lo schema traduzione-esecuzione viene percorso una volta sola prima dell'esecuzione Nel caso dell interprete, lo schema traduzione-esecuzione viene attraversato tante volte quante sono le istruzioni che compongono il programma Ad ogni attivazione dell'interprete su di una particolare istruzione segue l'esecuzione dell'istruzione stessa. Informatica - A. A. 2009/2010 - Linguaggi 43 8

c8 Compilatore e Interprete Informatica - A. A. 2009/2010 - Linguaggi 44 c6 Compilatore e Interprete (cont.) Sebbene in linea di principio un qualsiasi linguaggio possa essere tradotto sia mediante compilatori sia mediante interpreti, nella pratica si tende verso una differenziazione già a livello di linguaggio: Tipici linguaggi interpretati: Basic, Javascript, Perl,... Tipici linguaggi compilati: C, Fortran, Pascal, ADA, (NOTA: Java costituisce un caso particolare, anche se si tende a considerarlo interpretato) Informatica - A. A. 2009/2010 - Linguaggi 45 9

Diapositiva 17 c8 programma interpretato è anche più flessibile (posso modificare una sola istruzione) quindi l'interpretazione + comoda in fase di sviluppo compilazione in fase esecutiva dopo la messa a punto claudia; 26/09/2005 Diapositiva 18 c6 Alcuni entrambe le modalità di esecuzione (LISP, PROLOG) JAVA usa unooschema misto - un programma viene tradotto in un codice intermedio che poi viene interpretato claudia; 26/09/2005

Compilatore e Interprete (cont.) L'esecuzione di un programma compilato è più veloce dell'esecuzione di un programma interpretato Un programma interpretato è più portabile di un programma compilato (portabile = può essere eseguito su piattaforme diverse) Informatica - A. A. 2009/2010 - Linguaggi 46 c10 Ambiente di programmazione Editor: serve per creare file che contengono testi (cioè sequenze di caratteri). In particolare, l editor consente di scrivere il programma sorgente. Compilatore: opera la traduzione di un programma sorgente scritto in un linguaggio ad alto livello in un programma oggetto. Linker ( collegatore ): nel caso in cui la costruzione del programma oggetto richieda l unione di più moduli (compilati separatamente), provvede a collegarli per formare un unico programma eseguibile. Debugger ( spulciatore ): consente di eseguire passo-passo un programma, controllando via via quel che succede, al fine di scoprire ed eliminare errori non rilevati in fase di compilazione. Interprete: traduce ed esegue direttamente ciascuna istruzione del programma sorgente, istruzione per istruzione. È alternativo al compilatore. Informatica - A. A. 2009/2010 - Linguaggi 47 10

Diapositiva 20 c10 programma oggetto direttamente eseguibile dall'elaboratore. If errori no prodotto eseguibile e info. claudia; 26/09/2005

Sviluppo ed esecuzione di un programma CODIFICA Programma sorgente main() {int a,b;... Programma in linguaggio macchina 0001000100 00101110. Libreria 1101000. 00101110... Programma eseguibile 1101000100 01111110 1001111011 01111110 100111101 01111110 100111101.. ESECUZIONE EDITOR COMPILATORE LINKER DEBUGGER ERRORE ERRORE ERRORE Informatica - A. A. 2009/2010 - Linguaggi 48 Parole chiave della lezione Linguaggi di programmazione Linguaggio macchina Linguaggi i ad alto livelloll Traduttori Compilatore Interprete Ambiente di programmazione Informatica - A. A. 2009/2010 - Linguaggi 49 11