Informatica per la comunicazione" - lezione 3 Il problema del buonsenso." Quello del buonsenso (o “common sense” in inglese) diventa un problema nel momento in cui devo fare un elenco esaustivo di tutta l’informazione che lo compone per poter istruire in maniera adeguata una macchina di Turing per poterla considerare intelligente secondo il gioco proposto da Turing stesso.! Il problema del buonsenso è stato già più e più volte affrontato in passato, senza che si fosse trovata una soluzione soddisfacente. Di seguito riportiamo un esempio ben più illustre di quelli della mensa, p r o p o s t o d a l fi l o s o f o Dreyfus, professore presso l’Università di Berkeley in California.! Hubert Dreyfus Today was Jack's birthday. Penny and Janet went to the store. They were going to get presents. Janet decided to get a kite. "Don't do that," said Penny. "Jack has a kite. He will make you take it back."" Il significato del breve racconto appare chiaro ai nostri occhi, ma provate a controllare quante cose abbiamo dato per scontato e che non sono esplicitamente dette nel testo. La seguente lista non ha affatto la pretesa di essere completa. 1) I regali si comprano nei negozi 2) I compleanni si festeggiano con regali 3) Janet e Penny vogliono comprare un regalo per Jack 4) Jack non vuole avere due aquiloni 5) Jack farà riportare indietro l’aquilone nuovo, non quello vecchio 6) L’aquilone sarà riportato indietro al negozio dove è stato acquistato! Abbiamo visto qualche limite (importante) del computer: si esamina un problema p, e si mostra che un computer non è in grado di risolvere p. ! Tipico esempio: capire il significato di una parola. Eppure i computer sono in grado di eseguire molte operazioni, e di risolvere un gran numero di problemi (mostrarci le pagine di un libro, connetterci con amici sui social network, scaricare e ascoltare brani musicali, organizzare la nostra agenda, guardare film, etc.)! E’ arrivato il momento di delineare esplicitamente il campo di lavoro dei computer.! Esaminiamo che cosa hanno in comune tutte le soluzioni che un computer è in grado di offrire. ! Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni.! Il termine si contrappone ad hardware, che invece designa tutto ciò che è materiale e tangibile in un computer.! Un computer è un insieme di dispositivi elettronici: un computer è hardware.! Un computer diventa però utile solo quando fornisce un servizio, e ciò è possibile solo quando l’hardware è controllato mediante il software.! Senza il software, l’hardware è un inutile agglomerato di plastica, silicio e metalli.! Senza l’hardware, il software è solo un’idea che potrebbe essere messa in pratica.! Tale idea dovrebbe essere la soluzione a un problema.! E’ facile vedere che non tutti i problemi possono essere risolti mediante il software di un computer.! La natura stessa dei computer stabilisce il tipo di problemi che essi sono in grado di risolvere.! VS." Se c’è una differenza nell’hardware, ci sarà probabilmente una differenza anche nello spettro dei problemi che si possono risolvere.! Anche il software è coinvolto, perché comunque l’hardware deve essere controllato in maniera adeguata.! Ricordatevi che la “matica” in “informatica” viene da “automatica”: il funzionamento dell’accoppiata hardware-software deve avvenire col minor intervento umano possibile.! Tutte queste considerazioni ci aiutano a definire ciò che un computer è in grado di eseguire.! I concetti base ?" Problema" Un ostacolo, un impedimento, una " difficoltà che desideriamo eliminare." " " " " !" Soluzione" Eliminazione del problema." " " " " " Computer" Elaboratore automatico di simboli." " " " " " ?" !" Il problema si dice risolvibile quando esiste un modo per raggiungere la soluzione." Se vogliamo che sia il computer a raggiungere la soluzione, il problema deve essere espresso sotto forma di simboli che il computer può elaborare. " ?" !" Algoritmo" Un modo per raggiungere la soluzione " che ha le seguenti caratteristiche: 1) è una sequenza finita di operazioni " ben definite; 2 ) d o p o l ’ e s e c u z i o n e d i o g n i operazione, " è chiaro qual è la successiva (determinismo)." Muḥammad ibn Mūsā al-Khwārizmī (780 – 850) Il termine “algoritmo” deriva dal nome del matematico persiano al-Kwarizhmi." " " Tra i suoi numerosi meriti, il più grande è forse quello di aver importato in occidente il sistema numerico decimale dall’India. (Come saprete, gli antichi Romani non avevano un simbolo per lo zero.)" " Un altro termine che ha le sue radici nel nome di questo matematico è “algebra”." " " " "La figura nella slide precedente si trova su un francobollo s o v i e t i c o , c h e n e l 1 9 8 0 "festeggiava il 1200° anniversario della nascita di al-Kwarizhmi." ?" !" Programma" Un algoritmo scritto in maniera tale da " poter essere eseguito da un computer: 3) tutte le operazioni consistono in " elaborazioni di simboli; 4) tutte le operazioni sono eseguibili dal computer." " " ?" !" Processo" Un programma in esecuzione su un " computer. " " Solitamente i programmi risiedono nell’hard disk di un computer, " ed i processi nella RAM. " " ?" !" Attenzione: il computer non è in grado di trovare una soluzione da solo. L’algoritmo deve essere concepito prima, e poi trasferito nel computer sotto forma di programma, per essere eseguito e fornire la soluzione. " Informatica per la comunicazione" - lezione 4 Diagrammi di flusso Diagramma di flusso" Notazione grafica per esprimere gli algoritmi." " Esiste" un elemento grafico (chiamato blocco) per ogni "passaggio fondamentale negli " algoritmi." " I blocchi sono tra loro collegati "d a d e l l e f r e c c i e , c h e " simboleggiano il flusso di esecuzione, ossia la sequenza di " operazioni che vengono svolte una dopo l’altra." " " inizio dell’algoritmo " input" " operazione" " " " "controllo di condizione" " " no! sì! " " output" " fine dell’algortimo" " " La freccia entrante in un blocco rappresenta l’istante in cui l’operazione descritta dal blocco All’interno di ogni blocco, sta per essere eseguita." l’operazione da eseguire è descritta in un linguaggio a scelta, purché compreso dal destinatario del diagramma di " flusso." " La freccia uscente da un blocco rappresenta l’istante in cui l’operazione descritta dal blocco " " Tutti i blocchi hanno una o più è stata eseguita e si passa a frecce in ingresso e una sola in " quella successiva. uscita, tranne il blocco di inizio " (zero entranti, una sola uscente), "il blocco di fine (una o più " entranti, zero uscenti) e il blocco di controllo (una o più entranti, " due uscenti: una per ciascun possibile esito del controllo). " I cerchi gialli rappresentano l’inizio dell’algoritmo e la fine dell’algoritmo. Per mantenere il determinismo di un algoritmo ci può essere solo un inizio, mentre ci possono essere più blocchi di fine (a seconda del percorso che è stato seguito)." Input: informazione oppure entità più concrete arrivano " dall’esterno del contesto " dell’esecuzione dell’algoritmo per poter essere elaborate." Un’operazione da eseguire è descritta all’interno di un blocco rettangolare, a meno che non si tratti di un tipo speciale di o p e r a z i o n e : i n p u t (parallelogramma), output (foglietto), o controllo di condizione (rombo)." " Output: un risultato (parziale o finale) dell’algoritmo viene "inviato verso l’esterno per fruito dagli utenti del "Controllo di condizione: una essere " "condizione viene verificata e a sistema." seconda del risultato della " " verifica l’algoritmo segue un percorso o l’altro." " " Algoritmo per cuocere la pasta" acqua, pentola, sale, pasta " acqua in pentola! " pentola sul fuoco! " attendi! sì! bolle?! no! sale! no! attendi! pasta! cotta?! sì! pasta! scola! Ta l e a l g o r i t m o n o n p u ò diventare un programma." " " " Perché?" " Innanzitutto l’algoritmo è descritto in italiano. Per diventare un programma dovrebbe essere riscritto in un linguaggio comprensibile al computer. " Tale traduzione risulta molto difficile da realizzare, a causa delle descrizioni molto approssimative delle varie operazioni, che solo un essere umano riesce a gestire. (Ad es.: dove si prende l’acqua? Su " Inoltre, l’algoritmo non è quale fuoco va messa la " e s p r i m i b i l e i n t e r m i n i d i pentola? Come va messa la elaborazione di simboli: si tratta pentola sul fuoco?)" di " vera acqua e vere pentole, e un computer non ha l’hardware Forse un robot con telecamere, per manipolare tali oggetti." sensori, e braccia meccaniche adeguate potrebbe risolvere il problema della pasta, ma serve " comunque il software per comandarlo." " Esercizio" Disegnare il diagramma di flusso dell’algoritmo del calcolo della " media degli esami di un libretto. " " " " " Soluzione" Una possibile soluzione è quella di prendere" il libretto, andare alla parte dedicata ai voti e, se ci " sono dei voti, contarli, farne la somma e infine dividere la somma per"il numero dei voti per ottenere la media, che è il risultato cercato." Il tipo di operazioni di cui è composta questa soluzione" input " " controllo " condizione " " " Una possibile soluzione è quella " di prendere il libretto, andare alla parte dedicata "ai voti e, se ci sono dei voti, contarli, farne la somma e infine dividere la " somma per il numero dei voti per ottenere la media, che è il risultato cercato." output " " " operazione " " " Algoritmo per calcolare la media dei voti di un libretto" libretto vai alla sezione voti! " sì! " n ç conto i voti " s ç sommo i voti m ç s/n m! ci sono voti? ! no! s ç sommo i voti Un’operazione del tipo mostrato sopra è complessa perché in " passaggio. Il primo passaggio è quello realtà include più di un descritto a destra della freccia e indica un’operazione che " tipicamente produce un risultato. La freccia rappresenta il secondo passaggio: il risultato ottenuto deve essere conservato " per poter essere utilizzato in un momento successivo. La lettera o il nome a sinistra delle freccia rappresenta il “luogo” dove il risultato viene salvato e può essere utilizzato come riferimento per richiamarlo." In informatica, i “luoghi” dove vengono salvati i risultati delle operazioni si chiamano variabili. Un termine mutuato dalla matematica che vuole indicare che tale luogo può contenere, a seconda delle situazioni, valori differenti, variabili e non costanti." Variabili Nel caso dell’algoritmo del calcolo della media dei voti abbiamo " usato tre variabili. n per conservare il numero dei voti nel libretto; " s per conservare la somma dei voti; m per conservare il valore della media, ottenuta richiamando i " una divisione tra loro." valori di s e n e facendo Come ultima operazione dell’algoritmo, visto che l’obiettivo era quello di calcolare la media dei voti, richiamiamo il vlaore di m e lo mandiamo in output." Ora entriamo dentro il computer per studiarne i componenti principali e le loro funzionalità." Hardware Componenti di un computer" In questo contesto non intendiamo “computer” nell’accezione originale di persona che calcola di cui vogliamo astrarre le operazioni principali…! …ma proprio come calcolatore dei nostri giorni.! Il componente più importante è la CPU (Central Processing Unit), il processore in italiano. Nella metafora della persona che fa di conto, la CPU corrisponde al cervello, perché è la parte del computer che esegue le operazioni.! CPU" La CPU è un circuito elettronico costituito da un notevole numero di transistor. Ogni transistor, per come è costruito, reagisce a stimoli elettrici in ingresso con una specifica tensione elettrica in uscita (Vout in figura). Quando diciamo che la CPU esegue delle operazioni, intendiamo dire che le arrivano segnali elettrici in ingresso che rappresentano i dati e indicano l’operazione da eseguire.! I transistor della CPU reagiscono agli stimoli e mandano in uscita altri segnali elettrici, che rappresentano il risultato delle operazioni eseguite.! I transistor in una CPU sono molto numerosi (oggi arrivano ai 2 miliardi per processore), e hanno continuato a crescere di numero da quando le prime CPU sono state costruite. L’andamento è curiosamente costante, e prevede un raddoppio ogni anno e mezzo. Il primo ad accorgersi di questa tendenza è stato Gordon Moore, co-fondatore di Intel, una delle più grandi società prodruttrici di CPU, che ha quindi dato il nome a questo fenomeno, noto come “legge di Moore”.! Gordon E. Moore" 3" La CPU in realtà non è un blocco unitario, ma possiamo distinguere due parti in base alla loro funzione. La ALU (Arithmentic-Logical Unit, o unità aritmetico-logica) esegue le operazioni aritmetiche e logiche, appunto. ! +" 8" 5" ALU" stampa su schermo" La CU (Control Unit, o unità di controllo) è invece quella parte che comanda il trasferimento di informazione da una parte all’altra del computer. Di fatto, tutto ciò che avviene nel computer avviene perché dei segnali elettrici sono stati emessi dalla CU: anche l’ingresso di dati nella ALU, per esempio, è comandato dalla CU che esegue le istruzioni scritte nei programmi dati al computer.! “ciao”" CU"