Laboratorio di Architettura lezione 1 Comunicazione MM→Studenti
Transcript
Laboratorio di Architettura lezione 1 Comunicazione MM→Studenti
Laboratorio di Architettura lezione 1 Massimo Marchiori W3C/MIT/UNIVE Comunicazione à Studenti à MM l Studenti à Studenti l MM l Studenti MMà MMàStudenti l Speciale mailing list sottoscrivere, ognuno col proprio indirizzo di email l Potete usare piu’ indirizzi oltre a dsi.unive.it l Questo vale anche come “ticket” per il corso: non si puo’ fare se non sottoscriverete a questa lista l Attenzione che viaggio molto… l Dovrete MM à Studenti l Home Page del Corso: http://www.dsi.unive.it/~lab-arch (in costruzione) l NOTA: e’ DIVERSA da quella dell’anno scorso 1 Studenti à MM l Indirizzo email del corso: [email protected] l Please NON usate la mia email personale a unive.it TRANNE che non riguardi cose urgenti o che richiedano una risposta veloce l ASSOLUTAMENTE NON USATE [email protected] l à 1 punto in meno per ogni email… Struttura delle Lezioni l l l Lezioni teoriche: in Aula 1,2 Laboratorio: All’inizio con me A regime, ogni settimana: un giorno col Dott. Sorato (assistente di laboratorio) un giorno da soli Ricevimento esteso con me (orario da annunciare) Studenti à Studenti l Mailing list per gli studenti (in costruzione) l Puo’ essere usata come “forum” per discussioni tra tutti voi riguardo al corso l Dovrebbe anche essere archiviata e disponibile sul web Overview del Corso (flessibile) flessibile) Programma.htm 2 Sondaggi l Quanti sanno usare Linux/Unix l Quanti sanno usare Windows Linguaggio Macchina l Prima reazione: l BUUUUHH! l Quanti hanno gia’ visto qualcosa di linguaggio macchina l Quanti hanno fatto programmazione (e quindi sanno il C…)? Ragioni contro 1. 2. 3. E’ noioso E’ difficile Non serve a niente Ragioni contro l Noioso? Ehm…, si’… difficile? Mito. l Non serve a niente? Falso. l E’ 3 Ragioni a favore l l Propedeuticita’: aiuta a far capire come funziona veramente un computer Alto/Basso livello: aiuta a scrivere meglio nel linguaggio di piu’ alto livello (ad esempio, C), perche’ si capisce come poi viene eseguito Ragioni a favore (2) l E’ il PIU’ POTENTE dei linguaggi di programmazione: consente accesso completo a TUTTE le risorse del computer Intuizione di fondo l l l Il linguaggio di alto livello “astrae” dalla specifica piattaforma, fornendo costrutti piu’ semplici e generali Cioe’, e’ una “interfaccia generica” buona per ogni computer (con tutti i vantaggi che questo comporta) Ma proprio perche’ e’ uguale per tutte le macchine, NON puo’ comprenderne le particolari funzionalita’… POTENZA l Il linguaggio macchina permette di fare cose non solo fisicamente impossibili per altri linguaggi (tipo, accedere e manipolare schede grafiche, registri di memoria etc), l Ma anche cose impossibili (e abbastanza rivoluzionarie) a livello CONCETTUALE 4 ESEMPI l Programmi che si auto-modificano (si riscrivono da soli!) l Il concetto che il DATO e’ equivalente al PROGRAMMA, concetto che ha portato a rivoluzioni quali il teorema di Godel in logica, la call-by-reference in C, l’inheritance in Java e C++, etc etc… Cos’e’ un computer? l Classica domanda da un milione di dollari… ;-) l Il computer e’ una MACCHINA DEL TEMPO l Il fuso orario ha colpito…? Infine, Infine, IMPORTANTISSIMO l SPAZIO l TEMPO LA MACCHINA DEL TEMPO l La caratteristica essenziale e distintiva del computer, e’ che riesce ad accorciare lo scorrere del tempo 5 La Ferrari dei linguaggi di programmazione l Tornando al linguaggio macchina dunque, il linguaggio macchina ha il vantaggio di essere il piu’ veloce tra tutti i linguaggi di programmazione SPAZIO E TEMPO l Spazio e tempo sono intimamente correlati fra loro (come vedremo in una lezione successiva) SPAZIO l Spazio inteso in termini di memoria, grandezza del programma l Il linguaggio macchina e’ anche il linguaggio piu’ economico (che occupa meno spazio) di tutti gli altri linguaggi ESERCIZIO e PARADOSSO l The Evolution of a Programmer.htm 6 QUINDI..??? l Il linguaggio macchina non e’ il piu’ economico? l Il fuso orario ha colpito ancora?? l Esercizio per casa… TEMPO in pratica l l l CONTRO: la velocita’ dei computer cresce di continuo, quindi l’argomentazione della velocita’ non e’ molto rilevante RISPOSTA1: parzialmente vero, MA l’effettivo incremento di velocita’ nei processori non e’ cosi’ alto… à Il Pentium III a 800MhZ NON E’ 2 volte piu’ veloce del Pentium III a 400Mhz…(!) SPAZIO e TEMPO in pratica l Si’, solite cose teoriche… ma poi in pratica? visione piu’ critica dal punto di vista pratico l Una TEMPO in pratica l RISPOSTA2…. EsemPio 7 ???!!??? l l l Perche’?? Hanno Pentium’s a 5000Mhz..???!?! E similmente, considerate l’esempio piu’ eclatante: I videogames I videogames hanno il problema critico della velocita’ al massimo grado: poca velocita’ implica poca interattivita’ e poco realismo, che significa che il miracolo della “macchina del tempo” rivela tutte le sue pecche… SPAZIO in pratica l CONTRO: La RAM e la memoria su disco aumenta sempre piu’, quindi l’argomentazione dell’economicita’ non e’ molto rilevante l RISPOSTA: e’ vero, ma solo in certi contesti… DOVE E’ LA MACCHINA DEL TEMPO…? l Per ovviare a questo, I videogames usano ormai quasi tutti SCHEDE GRAFICHE dedicate… l à che altro non sono che processori con codice dedicato, esclusivamente in linguaggio macchina (!) Quindi in pratica? pratica? l All’analisi pratica, la verita’ sta nel mezzo: il linguaggio macchina ha dei vantaggi, e degli svantaggi l Occorre usarlo in quei contesti dove serve, non e’ la soluzione per ogni problema (come non lo e’ nessun linguaggio…) 8 APPROCCIO IBRIDO l Per la sue caratteristiche uniche, ogni linguaggio di programmazione che si rispetti permette l’INTERFACCIA con il linguaggio macchina l à potete usare il linguaggio macchina esattamente nei punti critici dove serve, e usare il vostro linguaggio di alto livello preferito nel resto del progetto CONCLUSIONE l Tutto questo non solo vi serve a qualcosa dal punto di vista “culturale” e “intellettivo”, ma anche dal punto di vista pratico. l à Puo’ essere un po’ noioso, ma ne vale la pena… 9