Software INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) Gli elaboratori utilizzano memoria per Dati da elaborare Istruzioni eseguite dall’elaboratore → software Software differenti → risoluzione problemi differenti Software Algoritmo Software legato al concetto di algoritmo Algoritmo: sequenza finita di istruzioni la cui esecuzione permette di Algoritmo Elaborare i dati in input Risolvere uno specifico problema Esempi di semplici algoritmi Una ricetta Manuale di istruzioni Regole per ordinare dati Un algoritmo prevede un esecutore delle istruzioni (elaboratore) Per poter essere eseguito → algoritmo scritto in un linguaggio comprensibile all’elaboratore Prevede solo istruzioni elementari Algoritmo parametrico: in grado di risolvere una classe di problemi (indipendente dai valori specifici in input) Algoritmo Linguaggio di programmazione: linguaggio formale per descrivere algoritmi Programmatore: chi scrive algoritmi in un linguaggio di programmazione Programmazione: algoritmo scritto in uno specifico linguaggio di programmazione Linguaggio assemblatore Linguaggio assemblatore: ad ogni istruzione associata una codifica mnemonica Es. ADD → 01101011 Un programma scritto in linguaggio assemblativo deve essere tradotto in linguaggio macchina → assemblatore Linguaggio macchina Linguaggio macchina: linguaggio tipico di una CPU Specifico di una CPU Linguaggio macchina → istruzioni associate ad un codice numerico 00100111101111011111100110000000 10101111101111110000000001010100 10001111101011100000001100011100 10001111101110010001100000011000 00101001000000010010011001100101 10101111101010000000000000011100 00010100001000001110111111110111 10100011101110010000000000011000 00001100000100000000100011101100 00000100100001000000010000110000 00100111101111010000100000100000 10000011111000000011000110001000 01000000000000000001000110100001 Linguaggio di alto livello Programma scritto in un linguaggio più vicino al linguaggio naturale ≠ al linguaggio naturale linguaggio di alto livello Semplificazione nella scrittura dei programmi Linguaggio di alto livello Linguaggio di alto livello Programma scritto in un linguaggio di alto livello richiedono una traduzione Traduttore legge programma scritto in linguaggio di alto livello traduce in linguaggio macchina Programma in linguaggio di alto livello Traduttore Programma in linguaggio macchina Linguaggio di alto livello Compilatore Compilatori Interpreti Linguaggio di alto livello legge Compilatori vantaggi: velocità svantaggi: necessità ricompilazione Interprete Interpreti vantaggi: esecuzione immediata svantaggi: lentezza l’intero programma scritto in linguaggio di alto livello (codice sorgente) Produce traduzione in linguaggio macchina (codice oggetto) Due tipi di traduttori: legge il programma scritto in linguaggio di alto livello Per ciascuna istruzione: traduzione in linguaggio macchina ed esecuzione diretta dell’istruzione Software: diritto d’autore Software Il software è un’opera dell’ingegno. Può essere Software proprietario: licenza d’uso Licenza shareware: gratuito per tempo limitato Licenza freeware: distribuito gratuitamente Software libero e open source: distribuzione codice sorgente Il software può essere diviso in due categorie: Software applicativo: applicazioni per problemi specifici Software di base: gestione dell’elaboratore (Sistema operativo) Software applicativo Il software applicativo è progettato per compiti specifici Software produttività individuale Videoscrittura Fogli elettronici Produzione presentazioni Gestione di basi di semplici basi di dati Editor Web Applicazioni grafiche Software Sistema operativo Il sistema operativo Il sistema operativo Il sistema operativo è un software di sistema o di base: Gestione delle risorse del computer Interfaccia per l’utente Astrazione rispetto all’hardware (macchina virtuale o astratta) Supporto esecuzione dei programmi applicativi Architettura a macchine virtuali: Hardware: macchina fisica Strati software per la costruzione di una macchina virtuale Il sistema operativo - elementi Il sistema operativo Elementi del sistema operativo: Nucleo (kernel): gestione CPU Gestione della memoria: Gestione delle periferiche File system Gestione della rete Interprete dei comandi Sistemi operativi: Unix Linux Microsoft Windows MacOS … Ogni strato costruisce una macchina virtuale: gestore della risorsa