Il software Linguaggio Macchina Linguaggio Assembly Rende il calcolatore estremamente versatile Evoluzione del software: Insieme di istruzioni eseguibili dalla CPU Dipende strettamente dalla CPU: Una prima evoluzione: uso di simboli al posto delle sequenze binarie Istruzioni, dati, indirizzi sono sostituiti da codici mnemonici Più immediato da utilizzare rispetto al linguaggio macchina linguaggi di programmazione sempre più: è cablato al suo interno, ogni istruzione genera una sequenza di segnali di controllo svincolati dall'hardware vicini al linguaggio naturale La scrittura dei programmi è complessa: sistemi operativi insieme di programmi per la gestione efficiente delle risorse rendono "amichevole" l'interazione uomo-macchina Fondamenti di Informatica 1 Linguaggio Assembly: svantaggi Fondamenti di Informatica 2 diverso per ogni processore È complesso da utilizzare: ogni istruzione esegue un'operazione elementare gestione dell'I/O difficile non si possono definire strutture dati complesse 3 Consentono di descrivere il problema in modo intuitivo ed espressivo Permettono di trattare con facilità: formule matematiche operazioni di I/O strutture dati complesse Mettono a disposizione costrutti logici procedure e funzioni strutture di controllo del flusso I programmi sono più leggibili e documentabili 4 Fondamenti di Informatica 5 Linguaggi di alto livello Software di base Hanno caratteristiche diverse: offrono forme espressive appropriate per alcuni problemi specifici Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software Esso svolge funzioni di base: es: FORTRAN (problemi scientifici), COBOL (problemi commerciali), BASIC, Pascal, C 7 Fondamenti di Informatica Fondamenti di Informatica 6 Esecuzione dei programmi traduzione di linguaggi da alto a basso livello comunicazione tra i vari sottosistemi hardware gestione e distribuzione delle risorse Per i linguaggi più diffusi esiste il compilatore per quasi tutti i calcolatori presenti sul mercato Fondamenti di Informatica Fondamenti di Informatica Linguaggi di alto livello Linguaggi di basso livello Consentono di accedere direttamente alle funzionalità del calcolatore Specificano solo le operazioni elementari che l'elaboratore può eseguire Dipendono dalle caratteristiche architetturali Sono più orientati alla macchina che ai problemi da trattare Non è portabile: Fondamenti di Informatica istruzioni formate da sequenze di 0 e 1 (codici operativi, dati, indirizzi) 8 L'esecuzione di un programma scritto con un linguaggio ad alto livello è preceduta dai seguenti passi: traduzione in linguaggio macchina collegamento con programmi di supporto (calcoli, comunicazione con periferiche,…) caricamento in memoria Fondamenti di Informatica 9 Traduzione in linguaggio macchina Compilatori e Interpreti Esistono due modi per eseguire i 3 passi menzionati: in sequenza, dopo il termine del passo precedente (compilatori) in sequenza, prima del termine del passo precedente (interprete, detto anche simulazione software) Fondamenti di Informatica Viene suddivisa in 2 passi: Il codice oggetto così formato può ancora contenere dei simboli irrisolti analisi (lessicale, grammaticale, contestuale) trasformazione del programma sorgente in programma oggetto (forma più vicina al linguaggio macchina) riferimenti esterni a programmi di servizio (accesso alle periferiche, calcoli matematici,...) Il Linker serve per collegare diversi moduli oggetto 10 Caricamento in memoria Vengono caricati anche i programmi di supporto, se necessari Il loader stabilisce la zona di memoria in cui caricare il programma Fondamenti di Informatica Collegamento con programmi di supporto 13 Fondamenti di Informatica 11 Fondamenti di Informatica 12