presentazioni - dipartimento di...

24
22/09/16 1 PROGRAMMAZIONE 2 1.Introduzione AA 2016-2017 1 Gianluigi Ferrari o Email [email protected] o Web h?p://pages.di.unipi.it/ferrari/ o Di cosa mi occupo (ricerca) o Formal methods in So?ware Engineering ü VerificaJon, model checking, and staJc analysis of programs o Programming languages & models for Concurrent/Distributed Systems ü Service oriented & Cloud compuJng ü Programming languages for IoT o Security ü Language-based security 2 PRESENTAZIONI

Upload: others

Post on 23-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

1

PROGRAMMAZIONE21.Introduzione

AA2016-2017

1

  GianluigiFerrario  [email protected]  Webh?p://pages.di.unipi.it/ferrari/

o  Dicosamioccupo(ricerca)o  FormalmethodsinSo?wareEngineering

ü VerificaJon,modelchecking,andstaJcanalysisofprogramso  Programminglanguages&modelsforConcurrent/DistributedSystems

ü Serviceoriented&CloudcompuJngü ProgramminglanguagesforIoT

o  Securityü Language-basedsecurity

2

PRESENTAZIONI

Page 2: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

2

  FabioGadduccio  [email protected]  Webpagesdi.unipi.it/gadducci  Dicosamioccupo(ricerca)o  FormalmethodsinSo?wareEngineering

ü VerificaJon,modelchecking,andstaJcanalysisofprogramso  Programminglanguages&modelsforConcurrent/DistributedSystems

ü ServiceorientedcompuJngü TheoreJcalfoundaJons

o  Visualmodelingü GraphicalspecificaJonsandmodeltransformaJons

3

PRESENTAZIONI

PROGRAMMAZIONE2

Cosastudiamo?DuetemaJcheprincipali

Page 3: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

3

Tecnicheperlaprogrammazioneorientataadogge^(inpiccolo)o  Specifica,implementazione,correMezza

o ProgeMareeprogrammareunsistemaü DimostrarelacorreMezzadiunaimplementazioneètantoimportantequantoprogrammare

o  Programmazioneconcorrente(sepossibile)EsemplificateuJlizzandoJavao  nonècompitodiquestocorsointrodurreillinguaggionellasuainterezza…

o  nétantomenolesuelibrerie(cheimpareretedasoli,quandoviservono)

5

ProgrammazioneOO

Unavalangadilibri…

Page 4: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

4

Materialedida^co

B.Liskov,J.GuMagProgramdevelopmentin

Java(AddisonWesley2000)Datato,macopretu^gli

aspe^conceMualifondamentali

Materialedida^co

M.Herlihy,N.ShavitTheartofmul5processor

programming(MorganKaufmann2012)Programmazione

concorrenteetecnichepermulJ-core

Page 5: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

5

Materialedida^co

R.Bruni,A.Corradini,V.GervasiProgrammazioneinJava(Apogeo2011)

O^maintroduzioneperchipensadiaverelacuneconlaprogrammazione

Online

  OracleJavatutorials,docs.oracle.com/javase/tutorial/java/  DavidEck,Introduc5ontoprogrammingusingJava,math.hws.edu/javanotes/  OnlinenetrovatemolJaltri…  …senJteviliberidiseguirelavostracuriosità

Page 6: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

6

Obie^vi

  TanVLinguaggidiprogrammazioneo  C,ML,Java,C#,…Python,Javascript,Ruby,Scala,F#.....

  ObieYvo1:acquisirecompetenzegeneralichepossanoessereapplicateaunavarietàdilinguaggidiprogrammazione.  ObieYvo2:acquisirelecompetenzeperimparare“prestoebene”unnuovolinguaggiodiprogrammazione.

LINGUAGGIDIPROGRAMMAZIONE

Page 7: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

7

Comescegliereunlinguaggio

Scelta?…1.  Lelibrerie2.  AmbienJdiprogrammazione3.  Le“bestpracJce”aziendali

NostroobieYvo:fornireglistrumenVchevipermeMerannodifarescelteconsapevoli

  Studiareiprincipichestannoallabasedeilinguaggidiprogrammazione  Essenzialepercomprendereilproge?o,larealizzazioneel’applicazionepraJcadeilinguaggi  Nonciinteressarisponderealladomanda“JavaèmegliodiC#”?

14

LinguaggidiProgrammazione

Page 8: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

8

ParadigmilinguisVci:o  ImperaVvo,funzionale,orientatoaglioggeYImplementazione:stru?ureatempodiesecuzioneo  Qualisonolestru?uredelrun-Jme?o  ComevengonogesJte?o  QualisonolerelazionitraparadigmilinguisJciestru?uredelkrunJme?

  Ilnostroapproccio:ladescrizionedell’implemementazionedellinguaggioèguidatadallasemanJcaformale!o  Stru?uradelrun-JmesimulatainOcaml.Cisononumerosilibrisull’argomentochesonouJliperilnostrocorso…mame?eremoadisposizionedellenote.

15

TanJaspe^importanJ…

Materialedida^co

M.Gabbrielli,S.MarVniLinguaggidiprogrammazione(McGraw-Hill2006)

Page 9: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

9

Materialedida^co

M.ScoMProgramminglanguagepragma5cs(MorganKaufmann2009)

Materialedida^co

P.Sesto?Programminglanguage

concepts(Springer2012)

Page 10: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

10

  Ilmaterialedida^codellelezionisaràdisponibilesullapaginawebcosìcometu^iprogrammiOCamleJavacheverrannodiscussinelleesercitazioni

  Provadiesame=progeMo+provascriMa+oraleo  ammissioneall’oraleconvotazione>=16/30nelloscri?o&

valutazioneposiJvadelproge?oo  2proveintermediepossonososJtuirelaprovascri?ao  2proge^intermedipossonososJtuireilproge?o

  Consiglio  seguireilcorsomantenendosialpassoconlostudioo  partecipare(a^vamente)alezioniedesercitazionio  sostenereleproveintermedie

19

PR2:istruzioniperl’uso

  Familiaritàcoiconce^basediprogrammazionefunzionale(Caml)eimperaJva(C)o  Programmazione1elaboratorioo  Logicaperlaprogrammazione

  Familiaritàalgoritmicaeprogrammazioneconlestru?uredaJdibase(liste,pile,code,alberi,hashtable,…)o  Algoritmicaelaboratorio

Competenzerichieste(nostreaspe?aJve)

Page 11: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

11

Linguaggieastrazione

  Ilinguaggidiprogrammazionesonoilpiùpotentestrumentodiastrazionemessoadisposizionedeiprogrammatorio  IlinguaggisisonoevoluJtrasformandoincostru^linguisJci(e

realizzandoliunavoltapertu?enell’implementazione)seMoridiapplicazioni(basididaJ,webapplicaJons,intelligenzaarJficiale,simulazione,etc.)

  Difondamentaleimportanzal’introduzionedimeccanismidiastrazione,cheperme?onodiestendereunlinguaggioprogrammandonuoveoperazioni,Jpididato,etc.

21

IldiagrammaevoluJvo

22

Page 12: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

12

TanJlinguaggi.Perché?

Prendiamoilmiglioreebasta!!!o  ComevedreteaCalcolabilitàeComplessità,ilinguaggidiprogrammazionesonotu^(Turing)equivalenJ:stessapotenzaespressiva

  ImigliorisonotanJ…o  VisioneOracle-Sun:Javao  VisioneMicrosow:C#,F#o  VisionedellosviluppatoreWeb:JavaScript,o  VisionedatascienJst:PythonTantemoJvazionidiverse:alcunilinguaggimegliosiada?anoaunparJcolarecontestoo  PROLOG:AI

Adayinthelifeofawebprogrammer

  Developwebappso  ApplicaJonframework(e.g.Mozilla)  Clientsideprogrammingo  Javascript(funzionalità),  Serversideprogrammingo  CGIscriptso  ScripJng(PHP,Pearl,Ruby,…)o  Javao  Databaseaccess(SQL)o  XMLperwebservicesSenzadimenJcareunsistemadiversioning(egGIT)

Page 13: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

13

Navigatesulweb

  Ilsitowww.scriptol.com/programming/fibonacci.phpdescriveilprogrammachecalcolainumeridifibonaccineiprincipalilinguaggidiprogrammazione

  Ilsitowww.99-bo?les-of-beer.netdecrivecomeprogrammarein1500linguaggidiprogrammazioneiltestodi“99Bo>lesofBeer”

Unaclassifica…

TIOBEindex2016

Page 14: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

14

Un’altraclassifica:PYPL

PopularitYofProgrammingLanguage

Unaterzaclassifica

AnalisiquanJtaJvadeiproge^disponibilisullapia?aformaGithubo  h?p://githut.info/

Page 15: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

15

Unpo’distoriadeilinguaggidiprogrammazione

IlinguaggidiprogrammazionenasconoconlamacchinadidiTuring(fondazione)elamacchinadiVonNeumann(macchinaaprogrammamemorizzato)•  iprogrammisonounparJcolareJpodidatorappresentatonellamemoriadellamacchina

•  lamacchinapossiedeuninterpretecapacedieseguireilprogrammamemorizzato,equindidiimplementareognialgoritmodescrivibilenel“linguaggiomacchina”

•  unlinguaggiomacchinadotatodisemplicioperazioniprimiJveperlasceltaeperiterare(osimili)èTuring-equivalente,cioépuòdescriveretu^glialgoritmi

30

Linguaggidiprogrammazione

Page 16: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

16

31

Anni‘50

  FORTRANeCOBOL(sempreverdi)o  notazionisimbolicheorientaterispe^vamentealcalcoloscienJfico(numerico)eallagesJonedaJ(anchesumemoriasecondaria)

o  astrazioneprocedurale(so?oprogrammi,maconcara?erisJchemoltosimiliaicostru^forniJdailinguaggimacchina)

o  meccanismilinguisVciperintrodurrenuoveoperazioniestruMuredaV(peresempio,gliarrayinFORTRANeirecordinCOBOL)

o  all’occhiomoderno:nulladisignificaJvamentediversodailinguaggimacchina

ü FondamenV(teoria)ü  formalizzazionedegliaspe^sinta^ciü  primirisultaJsemanJcibasaJsullambda-calcolo

ü CaraMerisVchecomuniü  introduzionedellanozionediambienteperlagesJonedegliidenJficatorieleregolediscope

ü  veraastrazioneproceduraleconricorsioneü ALGOL60

ü  primolinguaggioimperaJvoveramenteadaltolivelloü  scopingstaJcoegesJonedinamicadellamemoriaastack

ü LISP(sempreverde)ü  primolinguaggiofunzionale,dire?amenteispiratoallambda-calcolo(lateoriaritorna)

ü  scopingdinamico,stru?uredaJdinamiche,gesJonedinamicadellamemoriaaheapcongarbagecollector

32

Ifavolosi‘60:LISPeALGOL

Page 17: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

17

• ALGOL60,proto9podeilinguaggiimpera9vi•  LISP,proto9podeilinguaggilogiciefunzionali

• Analizzandoiduelinguaggiciaccorgiamocheoriginanoconce^similinonacasobasaJsullateoria•  lagesJonedell’ambientetramitelostack

• Gliapproccirestanodiversieoriginanoduefiloni•  ilfiloneimpera5vo(esempioC)•  ilfilonefunzionale(esempioOCaml)

33

Eperalprecisione…

•  PL/I:primotentaJvodilinguaggio“globale”(targatoIBM)•  tentaJvodisintesifraLISP,ALGOL60eCOBOL•  fallitopermancanzadiunavisionesemanJcaunitaria

•  SIMULA67:nascedifa?olaprogrammazioneaoggeC•  estensionediALGOL60orientatoallasimulazionediscreta•  quasisconosciuto,riscoperto15annidopo

34

Lafinedeglianni‘60

Page 18: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

18

•  Glianni’70•  metodologiediprogrammazione,JpididaJastra^,modularità,classieogge^

•  programmazionedisistemainlinguaggiadaltolivello:eccezionieconcorrenza

•  Unesempio:PASCAL•  estensionediALGOL60condefinizionediJpi(nonastra^),usoesplicitodipuntatoriegesJonedinamicadellamemoriaaheap(senzagarbagecollector)

•  sempliceimplementazionemista(conP-Code,antesignanodelbytecode),facilmenteportabile

35

EvoluzionedelfiloneimperaJvo

•  C:PASCAL+moduli+Jpiastra^+eccezioni+interfacciaperinteragireconilsistemaoperaJvo

•  ADA:ilsecondotentaJvodilinguaggio“totalitario”(targatoUSDoD)•  C+concorrenza+costru^perlaprogrammazioneintemporeale

•  proge?oambizioso:grandeenfasisusemanJcastaJca(proprietàverificabilidalcompilatore)

•  C++:C+classieogge^(allocaJsulloheap,ancorasenzagarbagecollector)

36

IldopoPASCAL

Page 19: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

19

37

Laprogrammazionelogica

PROLOG•  implementazionediunframmentodelcalcolodeipredicaJdelprimoordine(lateoriacheaiuta)

•  stru?uredaJmoltoflessibili(termini)concalcoloeffe?uatodall’algoritmodiunificazione

•  computazioninon-determinisJche•  gesJonememoriaaheapcongarbagecollector

CLP(ConstraintLogicProgramming)•  PROLOG+calcolosudominidiversi(anchenumerici)conopportunialgoritmidisoluzionedivincoli

38

Laprogrammazionefunzionale

ML:implementazionedellambda-calcoloJpato•  definizionedinuoviJpiricorsivi,ivalorideinuoviJpisonotermini,chepossonoesserevisitaJconunmeccanismodipa?ernmatching(versionesemplificatadell’unificazione)

•  scopingstaJco(adifferenzadiLISP)•  semanJcastaJcamoltopotente(inferenzaecontrollodeiJpi)• unprogramma“corre?o”perlasemanJcastaJcaquasisemprevabene

•  gesJonememoriaaheapcongarbagecollector

HASKELL:MLconregoladivalutazione“lazy”

Page 20: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

20

•  Moltecara?erisJchedalfiloneimperaJvo•  essenzialmentetu?equellediC++

•  Alcunecara?erisJchedeilinguaggilogico-funzionali•  gesJonedellamemoriacongarbagecollector

•  UsodelmeccanismodiclassiedereditarietàperridurreilnumerodimeccanismiprimiJvi•  quasitu?oèrealizzatoconclassipredefinitenellelibrerie

•  Implementazionemista,Jpicadelfilonelogico•  chenefacilitalaportabilitàelorendemoltoada?oadessereintegratonelleapplicazionidirete

39

Java

C#

  C#:linguaggiodiprogrammazioneaogge^sviluppatoperlaprogrammazionenelframework.NETo  il“meglio”diJavaeC++

  IJpiprimiJvidellinguaggiohannounacorrispondenzaprecisaconiJpidisponibiliarun-Jme

Page 21: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

21

SCALA

  Scalasmoothlyintegratesfeaturesofobject-orientedandfuncJonallanguages

F#

  MLspiegatoalpopolo

Page 22: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

22

Evoluzionedeilinguaggi

a.  UnecosistemadiapplicazionidifferenJb.  Enfasicrescentesulleastrazioniperilprogrammatorec.  Cara?erisJchesignificaJve:migliorarelaaffidabilità,

lamanutenibilitàelasicurezzadelsowwared.  Aspe^moderni:astrazionipermobilitàedistribuzionee.  PrimiJvelinguisJcheeastrazioniperparallelismoe

concorrenzaf.  Trend:mul5-paradigmprogramming

Unesempio

  Pythonlinguaggiodiprogrammazionesviluppatoafineanni‘80daGuidovanRossum(CWI)  Uno“scripJnglanguage”  LinguaggiomulJ-paradigma:supportainmodonaJvoogge^efunzionidiordinesuperioreJpichedellaprogrammazionefunzionale  TipidinamiciegesJonedinamicadellamemoria

Page 23: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

23

Ruby

  RubylinguaggiodiscripJngsviluppatoafineanni’90daYukihiroMatsumoto  InfluenzatodaPerlandSmalltalk  MulJ-paradigma:funzionale,aogge^,imperaJvoconmeccanismidimeta-programmazione(LISPcheritorna)  Ruby(comelodescrivono)o  everythingisanobjecto  everyopera5onisamethodcallo  allprogrammingismeta-programming  Usatonellosviluppodiapplicazioniweb

ParadigmafunzionaleperJavaeC#

  Java8:laversionecorrentediJavaIntroduzionedimeccanismilinguisJciperlaprogrammazionefunzionale:Lambdao  Problema:introdurreLambdasenzadoverricompilareicodicibinariesistenJ.

EspressioniLambdasonodisponibiliancheinC#o  …conilmedesimoscopo

Page 24: PRESENTAZIONI - Dipartimento di Informaticapages.di.unipi.it/ferrari/CORSI/PR2/LEZIONI2017/PR2001.pdf · PRESENTAZIONI 22/09/16 2 Fabio Gadducci o Email fabio.gadducci@unipi.it o

22/09/16

24

Modellicomputazionali

² Comevedremomeglionellasecondapartedelcorsoaognilinguaggioèassociatounmodellodicalcolo

²  ImperaVvo:Fortran(1957)

²  Funzionale:Lisp(1958)

²  AoggeY:Simula(1967)

²  Logico:Prolog(1972)

²  Relazionale:SQL(1974)

Ilproge?odiPR2

  Unmetodoefficacepercomprenderecosasignifica“modellodicomputazione”èproge?areesviluppareunlinguaggiodiprogrammazioneo  Ilproge?odiPR2siproponequestoobie^vo!!