SOFTWARE di SVILUPPO I linguaggi di programmazione SOFTWARE DI SVILUPPO PROGRAMMA: PROGRAMMA è una sequenza di istruzioni scritte in un linguaggio comprensibile dal calcolatore che le esegue per risolvere determinati problemi Il PROGRAMMA rappresenta quindi con l’insieme delle sue istruzioni, quelle azioni compiute sui dati in ingresso per produrre risultati in uscita 3 STRUMENTI di SVILUPPO LINGUAGGI di PROGRAMMAZIONE Linguaggi Macchina Linguaggi Basso livello Linguaggi Alto livello TRADUTTORI Assemblatori Compilatori Interpreti 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 4 STRUMENTI di SVILUPPO Nella programmazione bisogna distinguere tra due diversi tipi di programma PROGRAMMA SORGENTE Programma aperto. E’ il programma scritto dal programmatore in un linguaggio di basso o alto livello PROGRAMMA OGGETTO Programma chiuso. E’ il programma che è stato trasformato, tramite un TRADUTTORE in linguaggio macchina (binario o esadecimale) 5 Dal problema alla soluzione Problema Risultati Elaborazione Algoritmo Programma sorgente 4 Liceo - A.S. 2011-12 Programma traduttore Informatica e Sistemi - Prof. Corrado Lai Programma oggetto 6 LINGUAGGI MACCHINA Sono i linguaggi direttamente interpretabili dalla CPU La CPU può interpretare solo stati elettrici di tensione di livello alto (1) o basso (0) I linguaggi macchina vengono perciò espressi in codice binario Il codice binario viene inviato alla CPU attraverso il BUS DATI Ad es. le prime CPU della Intel 8088 avevano un basi dati ad 8 bit. Quante istruzioni posso ottenere con 8 bit? 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 7 LINGUAGGI MACCHINA Le istruzioni o codici che posso ottenere se ho una CPU con bus dati a 8 bit saranno 2 = 256 8 Ho quindi un set di istruzioni pari a 256 codici Nuovi processori della Intel e della AMD hanno un bus dati a 16, 32 e a 64 bit 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 8 LINGUAGGI MACCHINA • Se il set di istruzioni è rimasto compatibile con i vecchi processori è possibile aumentare la velocità di elaborazione (si elaborano più istruzioni per volta) senza variare la frequenza del clock • Ad esempio se abbiamo un bus dati a 32 bit è possibile analizzare 4 istruzioni per volta • L’altra possibilità è quella di usare un set di istruzioni più esteso visto l’aumento del numero di codici a disposizione 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 9 LINGUAGGI MACCHINA • In base al SET di ISTRUZIONI che il processore gestisce si individuano due tipi di famiglie di microprocessori • RISC (Reduced Instruction Set Computing) Riconoscono un numero ridotto di codici. Per eseguire funzioni complesse utilizzano combinazioni degli stessi • CISC (Complex Instruction Set Computing) Lavorano con un esteso numero di codici di base 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 10 LINGUAGGI MACCHINA • Inizialmente data la limitata potenza dei PC, i processori RISC risultavano più indicati. • Al momento, date le elevatissime frequenze di lavoro raggiunte dai processori CISC tutti i PC sono equipaggiati di processori CISC • L’unico processore di tipo RISC attualmente utilizzato nei PC è il Motorola PowerPC che equipaggia alcuni sistemi Apple 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 11 LINGUAGGI MACCHINA Un programma scritto in linguaggio macchina viene anche detto CODICE L’uso del codice binario risulta di difficile utilizzo pratico Il CODICE viene perciò in genere rappresentato anche mediante il formato esadecimale secondo la conversione Binario Esadecimale 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 12 Linguaggi di basso livello La lettura di un codice scritto in linguaggio macchina anche se in esadecimale risulta in genere piuttosto difficoltosa A ciò pone rimedio i linguaggi di basso livello come il linguaggio ASSEMBLY 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 13 Linguaggi a basso livello Il linguaggio ASSEMBLY associa alle singole istruzioni del linguaggio macchina le abbreviazioni delle parole inglesi che indicano il compito da svolgere Nasce il codice mnemonico Esempio per caricare un dato in un registro della CPU si usa LD, per sommare ADD, per sottrarre SUB e così via… 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 14 Linguaggio ASSEMBLY Ogni CPU possiede un proprio linguaggio di basso livello di tipo assembly. Le CPU costruite dalla stessa ditta in genere utilizzano tutti lo stesso linguaggio ASSEMBLY 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 15 Esercizio sul linguaggio ASSEMBLY Si voglia redigere un programma che effettui la somma tra i numeri 8 e 9 utilizzando una CPU Z80 Costruiremo sia il programma scritto in Assembly (codice mnemonico) e troveremo il corrispondente in linguaggio macchina (in forma esadecimale e binaria). Per i codici è stato utilizzato il manuale del costruttore (Zilog) della CPU Z80 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 16 Esercizio sul linguaggio ASSEMBLY per una CPU Z80 Assembly (codice mnemonico) LD A,08 Lin. Macchina (ESA) 3E 08 (carica nel registro A il valore 8) LD B,09 06 09 (carica nel registro B il valore 9) ADD A,B 80 (esegui la somma del contenuto di A e B) HALT 76 (fine delle istruzioni) 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 17 Esercizio sul linguaggio ASSEMBLY per una CPU Z80 ESADECIMALE BINARIO 3E 08 00111100 00001000 06 09 000001100 00001001 80 10000000 76 01110110 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 18 L’ASSEMBLER Le istruzioni scritte in linguaggio ASSEMBLY non sono direttamente interpretabili dal microprocessore ma è necessario un programma traduttore che converta il tutto in linguaggio macchina cioè in codice binario così come da noi fatto nell’esempio precedente. Tale software traduttore si chiama ASSEMBLER 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 19 LINGUAGGI di ALTO LIVELLO Pur se utilizza un codice mnemonico il linguaggio ASSEMBLY di basso livello presuppone una conoscenza profonda dell’architettura del microprocessore. Per permettere ai programmatori di sviluppare dei programmi senza dover necessariamente essere dei profondi conoscitori dell’hardware di una CPU sono nati i LINGUAGGI di ALTO LIVELLO 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 20 LINGUAGGI di ALTO LIVELLO I linguaggi di ALTO LIVELLO sono molto simili ai linguaggi naturali. Ciò facilita la stesura del programma e una più agevole leggibilità da parte di altri programmatori. Tali linguaggi svincolano il programmatore dalle rigidezze dovute al particolare processore usato 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 21 LINGUAGGI di ALTO LIVELLO Sono linguaggi simbolici, in continua evoluzione Sono definiti da un insieme di regole formali e regole grammaticali che individuano la cosiddetta sintassi Ogni linguaggio possiede la sua sintassi 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 22 Sintassi e semantica Le regole di sintassi definiscono come si devono comporre i simboli e le parole per formare istruzioni corrette La semantica di un’istruzione invece definisce cosa questa significhi (lo scopo dell’istruzione) Un programma sintatticamente corretto non è necessariamente semanticamente corretto 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 23 Sintassi e semantica I programmi fanno quello che prescriviamo che facciano e non quello che vorremmo che facessero 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 25 Costruzione di un programma In generale un programma prevede le seguenti due parti: Parte DICHIARATIVA dove vengono dichiarate le variabili del problema Parte ESECUTIVA dove sono presenti le istruzioni in cui è stato tradotto l’algoritmo 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 26 LINGUAGGI di ALTO LIVELLO Ecco alcuni esempi di linguaggi di alto livello. 1. PASCAL 2. BASIC, VISUAL BASIC 3. C, C++, C# 4. JAVA 5. HTML 6. PHP 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 27 Perché programmare???? Nel corso del 2012 ci sarà una forte richiesta di sviluppatori di applicazioni per Apple e per smartphone e tablet equipaggiati con Google Android. Non mancheranno opportunità lavorative per chi dispone di conoscenze relative a C, C++, Objective C (C#), Java. 4 Liceo - A.S. 2011-12 Informatica e Sistemi Prof. Corrado Lai 28 Perché programmare???? 1. 2. 3. 4. Per quanto riguarda i linguaggi della rete al primo posto c’è PHP, linguaggio di scripting per lo sviluppo di pagine web dinamiche o applicazioni online. In seconda posizione c’è HTML, il linguaggio di markup per la descrizione delle modalità o delle istruzioni di impaginazione, formattazione o visualizzazione grafica del contenuto di una pagina web Al terzo posto c’è MySQL: conoscere questo RDBMS (Relational Database Management System) sembra dare una marcia in più per lavorare allo sviluppo di siti web dinamici. A seguire, dalla quarta alla decima posizione, ci sono CSS, Java, JavaScript, Flash, Joomla 4 Liceo - A.S. 2011-12 Informatica e Sistemi - Prof. Corrado Lai 29