La materia di cui sono fa0 i sogni digitali - Gian Luigi Ferrari Dipar7mento di Informa7ca Universita' di Pisa
←
                            
                                                            
                                →
                                
                            Trascrizione del contenuto della pagina
                            
                        Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
                        La	
  materia	
  di	
  cui	
  sono	
  fa0	
  
         i	
  sogni	
  digitali	
  
           Gian	
  Luigi	
  Ferrari	
  
      Dipar7mento	
  di	
  Informa7ca	
  
           Universita’	
  di	
  Pisa	
  Presentazioni	
  
! Gian	
  Luigi	
  Ferrari	
  
     o   Informa7co	
  
! Di	
  cosa	
  mi	
  occupo	
  (ricerca)	
  	
  
     o   Linguaggi	
  di	
  Programmazione	
  
           ! Service	
  Oriented	
  Compu7ng	
  
           ! Cloud	
  Compu7ng	
  
           ! Internet	
  of	
  things	
  
     o   Ingegneria	
  del	
  soDware	
  (Verifica7on,	
  Model	
  Checking,	
  Program	
  
         Analysis)	
  
     o   Sicurezza	
  
           ! Language	
  Based	
  Security	
  
! Di	
  cosa	
  mi	
  occupo	
  (dileNo)	
  
     o   Divulgazione	
  scien7fica	
  	
  Informa7ca	
  
! Informa7ca:	
  ha	
  trasformato	
  la	
  societa’	
  e	
  il	
  modo	
  
  di	
  costruire	
  la	
  conoscenza	
  
    o   SoDware	
  is	
  ea7ng	
  the	
  world!!	
  
! Informa7ca:	
  tecnologia	
  non	
  neutrale	
  
    o   Impone	
  a	
  chi	
  la	
  uso	
  uno	
  sguardo	
  diverso	
  
        nell’organizzazione	
  dei	
  fenomeni	
  
! Informa7ca:	
  scienza	
  sperimentale	
  
    o   Spesso	
  ridoNa	
  all’aspeNo	
  meramente	
  strumentale	
  Calcoli	
  e	
  linguaggi	
  
! Scienza	
  che	
  studia	
  i	
  
  procedimen7	
  di	
  
  calcolo	
  effe0vi.	
  
! La	
  crisi	
  dei	
  fondamen7	
  
                                      Calcolo	
  come	
  manipolazione	
  combinatoria	
  
  della	
  matema7ca	
                di	
  insiemi	
  fini3	
  e	
  discre3	
  di	
  simboli	
  secondo	
  
  (Gödel,	
  Church,	
                un	
  insieme	
  finito	
  di	
  regole	
  
  Kleene,	
  Post	
  e	
  Turing)	
  Linguaggi e programmazione ! Linguaggio di programmazione e’ uno strumento linguis6co pensato per comunicare e controllare il comportamento di una opportuna tecnologia. ! Comunicazione come insieme dei fenomeni che portano alla distribuzione di informazioni ! Controllo come insieme delle struNure che regolano l’elaborazione dell’informazione ! Programma= Comunicazione informazione + Controllo
Programmare?
Programmare?
Strana forma di inglese
Non è magia: tu0 possono imparare
… anche se
PROGRAMMARE E’ FICO
Medicina
Automo7ve
ROBOTICA
CINEMA
GIOCHI
WEB APPS
STESSI CONCETTI ALLA BASE
Programmare	
  e’	
  costruire	
  un	
  
  modello	
  computazionale	
  
                                           25	
  Astrazione ! In informa7ca “astrazione” indica, l’operazione conceNuale con la quale si passa da una descrizione di basso livello ad una descrizione dello stesso conceNo ad un livello più alto, che subordina alcuni deNagli ed evidenzia alcune caraNeris7che importan7 sulle quali si vuole richiamare l’aNenzione
Astrazione	
  
! Quali	
  sono	
  i	
  meccanismi	
  di	
  astrazione	
  lega7	
  alla	
  
  programmazione:	
  
  o usando	
  direNamente	
  i	
  costru0	
  del	
  linguaggio	
  ad	
  
     alto	
  livello	
  invece	
  che	
  una	
  delle	
  numerosissime	
  
     sequenze	
  di	
  istruzioni	
  in	
  linguaggio	
  macchina	
  
     “equivalen7”	
  	
  
! l’astrazione	
  è	
  scelta	
  dal	
  proge0sta	
  del	
  linguaggio	
  	
  
  o quali	
  e	
  quante	
  quanto	
  complicato	
  diventa	
  il	
  
     linguaggio?	
  
! meglio	
  progeNare	
  linguaggi	
  dota7	
  di	
  meccanismi	
  
  che	
  permeNano	
  di	
  definire	
  le	
  astrazioni	
  che	
  servono	
  Astrazioni	
  e	
  linguaggi	
  
o   astrazione	
  procedurale	
  
      !si	
  aggiungono	
  nuove	
  operazioni	
  	
  
o   astrazione	
  di	
  da6	
  
      !si	
  aggiungono	
  nuovi	
  7pi	
  di	
  dato	
  
o   iterazione	
  astraHa	
  
      !permeNe	
  di	
  iterare	
  su	
  elemen7	
  di	
  una	
  
       collezione,	
  senza	
  sapere	
  come	
  ques7	
  vengono	
  
       oNenu7	
  
o   Tipi	
  e	
  gerarchie	
  di	
  6po	
  	
  
      !permeNe	
  di	
  astrarre	
  da	
  specifici	
  7pi	
  di	
  dato	
  a	
  
       famiglie	
  di	
  7pi	
  correla7	
  La	
  torre	
  di	
  Babele	
  
                                  29	
  Elogio della Torre di Babele ! Alan J. Perlis, 1922 – 1990: ! A good programming language is a conceptual universe for thinking about programming ! A language that doesn’t affect the way you think about programming, is not worth knowing. ! There will always be things we wish to say in our programs that in all known languages can only be said poorly.
Tan7	
  Linguaggi.	
  Perche’?	
  
! Prendiamo	
  il	
  migliore	
  e	
  basta!!!	
  
    o   Sono	
  tu0	
  Turing	
  Equivalen7:	
  stessa	
  potenza	
  
        espressiva	
  
! I	
  migliori	
  sono	
  tan7	
  (numerose	
  risposte)	
  
    o   Oracle-‐Sun:	
  Java	
  
    o   MicrosoD:	
  C#	
  
    o   Web-‐programmer:	
  Javascript	
  
! Tante	
  mo7vazioni:	
  alcuni	
  linguaggi	
  meglio	
  si	
  
  adaNano	
  a	
  un	
  par7colare	
  contesto	
  MACCHINE	
  ASTRATTE	
  
! una	
  collezione	
  di	
  struNure	
  da7	
  ed	
  algoritmi	
  in	
  grado	
  di	
  
  memorizzare	
  ed	
  eseguire	
  programmi	
  
         Memoria	
                                                      Operazioni	
  
                                       Interprete
                    primi7ve	
  
                                                                            op1
       Programma
                                                                            op2
                                      Controllo
                           …
           Dati
                                                                             ...
                                                                            opn
                                                                                         32	
  L’INTERPRETE	
                            start
controllo	
  
                                     acquisisci la
                                  prossima istruzione
                                       decodifica
controllo	
                     acquisisci gli operandi
                                      seleziona
operazioni	
     esegui op1   esegui op2              ...   esegui opn   esegui alt
 controllo	
                      memorizza il risultato
                stop
                                                                                     33	
  INTERPRETAZIONE	
  E	
  COMPILAZIONE	
  
                                                                 realizzazione
             ML                                       MI                            MO
    Programma in L
                          Programma in LMI
                          traduzione
! ML	
  	
  	
  =	
  MI	
  	
  	
  	
  interpretazione	
  pura	
  
! MO	
  	
  	
  =	
  MI	
  	
  	
  	
  compilazione	
  pura	
  
                                                                                         34	
  Compilazione ! Teorema: Fissa6 due linguaggi di programmazione L1 e L2 esiste un programma C[L1>L2] tale che per ogni programma P scriHo in L1, C[L1>L2] (P ) e’ un programma in L2 equivalente a P .
Compilatori meta-‐circolari ! Un compilatore per un linguaggio, scriNo in quello stesso linguaggio, C[L1>L2] scriNo in L1 ! Corrado Boehm, Ann. di Mat. Pura ed Applicata, vol. 37(4), 1954.
Circolarita’ (Escher)
SOGNI DIGITALI
Autonomic	
  Compu7ng	
  
!   Obie0vo:	
  suo	
  scopo	
  è	
  quello	
  di	
  fornire	
  gli	
  strumen7	
  
    necessari	
  affinche’	
  i	
  programmi	
  siano	
  in	
  grado	
  di	
  auto-‐
    ges7rsi	
  senza	
  l'intervento	
  umano.	
  
!   Self-‐configura6on:	
  Automa7c	
  configura7on	
  of	
  
    components;	
  
!   Self-‐healing:	
  Automa7c	
  discovery,	
  and	
  correc7on	
  of	
  
    faults;	
  
!   Self-‐op6miza6on:	
  Automa7c	
  monitoring	
  and	
  control	
  of	
  
    resources	
  to	
  ensure	
  the	
  op7mal	
  func7oning	
  with	
  respect	
  
    to	
  the	
  defined	
  requirements;	
  
!   Self-‐protec6on:	
  Proac7ve	
  iden7fica7on	
  and	
  protec7on	
  
    from	
  arbitrary	
  aNacks.	
  Adap7ve	
  SoDware	
  
! Adap6ve	
  soTware	
  uses	
  available	
  informa6on	
  
  about	
  changes	
  in	
  its	
  environment	
  to	
  improve	
  its	
  
  behaviour	
  
                                                     Peter	
  Norvig	
  
                                                     Director	
  of	
  Research	
  
                                                     Google	
  Inc.	
  Internet of things
Psyleron’s Mind-Lamp (Princeton U),
connections between the mind and the
physical world.
                                             MIT’s Fluid Interface Group: wearable
                                             device with a projector for deep
                                             interactions with the environment
    Neuro Sky's mind-controlled headset to
    play a video game.Sogni	
  	
  
              Probleni	
  di	
  ricerca	
  
! Definire	
  astrazioni	
  necessarie	
  per	
  programmare	
  
  applicazioni	
  ada0ve	
  in	
  IoT	
  
! ProgeNare	
  e	
  realizzare	
  i	
  linguaggi	
  di	
  
  programmazione	
  del	
  futuro.	
  Puoi anche leggere




























































