Programmazione • Attività di progettazione ed implementazione di programmi • I programmi permettono di realizzare funzioni complesse su un hardware in grado di eseguire solo operazioni elementari • I programmi sono sequenze di istruzione che permettono di risolvere un problema complesso • L’utilizzatore di un computer non ha bisogno di programmare, usa programmi già realizzati; il computer diventa uno strumento utilizzabile da una larga categoria di persone. Interpretazione e Compilazione (I) • I programmi direttamente eseguibili da un computer sono sequenze di istruzione in linguaggio macchina, ovvero stringhe binarie (istruzioni) • Le istruzioni del linguaggio macchina sono specifiche del computer per il quale sono state progettate, quindi uno stesso file binario non può essere eseguito su macchine diverse • Lo sviluppo di software in linguaggio macchina è impraticabile, è necessario usare un linguaggio ad alto livello traducibile automaticamente in linguaggio macchina • La traduzione può essere operata tramite un programma interprete (istruzione per istruzione) od un compilatore (file sorgente -> file oggetto -> file eseguibile) Interpretazione e Compilazione (II) • Lo sviluppo di programmi complessi non può prescindere dalla compilazione • L’interpretazione aumenta la portabilità del software su più piattaforme perché non rende necessaria la creazione di codice binario intrinsecamente dipendente dalla macchina Dal codice sorgente al programma in esecuzione in Java Editor: es. Notepad, JCreator javac java API • Il Java è un linguaggio ad alto livello che utilizza un doppio livello di traduzione • COMPILAZIONE: Il codice sorgente viene prima tradotto in un file di bytecode, sequenza di istruzioni indipendenti dalla macchina che per essere eseguite devono essere tradotte nel linguaggio macchina specifico della piattaforma utilizzata • INTERPRETAZIONE: Il codice bytecode è eseguito dall’interprete, che traduce le istruzioni bytecode una alla volta e automaticamente nel linguaggio macchina specifico della piattaforma utilizzata Il ciclo modifica-compila-correggi • Attraverso un editor si crea e si modifica un file sorgente dall’algoritmo; alcuni editor (es. JCreator) permettono di individuare facilmente errori di battitura tramite il syntax highlighting • Il compilatore genera il codice bytecode dal sorgente se non rileva errori sintattici e/o lessicali, altrimenti fornisce un elenco di errori da correggere tramite l’editor • Il processo di collaudo è volto ad individuare errori logici (l’algoritmo di partenza non era corretto), di traduzione (il codice sorgente non realizza l’algoritmo progettato), di semantica dinamica ( legati a particolari assegnazioni di valori alle variabili, es. divisioni per zero). Consiste nel provare un programma con diversi valori di input. Può durare 5 minuti o anni a seconda della complessità del programma