AA 2016-2017 PROGRAMMAZIONE 2...

48
PROGRAMMAZIONE 2 1.Introduzione AA 2016-2017 1

Transcript of AA 2016-2017 PROGRAMMAZIONE 2...

Page 1: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

PROGRAMMAZIONE21.Introduzione

AA2016-2017

1

Page 2: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

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

o  Dicosamioccupo(ricerca)o  FormalmethodsinSo?wareEngineering

! VerificaIon,modelchecking,andstaIcanalysisofprogramso  Programminglanguages&modelsforConcurrent/DistributedSystems

! Serviceoriented&CloudcompuIng! ProgramminglanguagesforIoT

o  Security! Language-basedsecurity

2

PRESENTAZIONI

Page 3: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

  FabioGadduccio  [email protected]  Webh=p://pages.di.unipi.it/gadducci/  Dicosamioccupo(ricerca)o  FormalmethodsinSo?wareEngineering

! VerificaIon,modelchecking,andstaIcanalysisofprogramso  Programminglanguages&modelsforConcurrent/DistributedSystems

! ServiceorientedcompuIng! TheoreIcalfoundaIons

o  Visualmodeling! GraphicalspecificaIonsandmodeltransformaIons

3

PRESENTAZIONI

Page 4: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

PROGRAMMAZIONE2

Cosastudiamo?DuetemaIcheprincipali

Page 5: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Tecnicheperlaprogrammazioneorientataadogge](inpiccolo)o  Specifica,implementazione,correMezza

o ProgeMareeprogrammareunsistema! DimostrarelacorreMezzadiunaimplementazioneètantoimportantequantoprogrammare

o  Programmazioneconcorrente(sepossibile)EsemplificateuIlizzandoJavao  nonècompitodiquestocorsointrodurreillinguaggionellasuainterezza…

o  nétantomenolesuelibrerie(cheimpareretedasoli,quandoviservono)

5

ProgrammazioneOO

Page 6: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Unavalangadilibri…

Page 7: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Materialedida]co

B.Liskov,J.GuMagProgramdevelopmentin

Java(AddisonWesley2000)Datato,macopretu]gli

aspe]conceMualifondamentali

Page 8: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Materialedida]co

M.Herlihy,N.ShavitTheartofmul5processor

programming(MorganKaufmann2012)Programmazione

concorrenteetecnichepermulI-core

Page 9: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Materialedida]co

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

O]maintroduzioneperchipensadiaverelacuneconlaprogrammazione

Page 10: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Online

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

Page 11: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Obie]vi

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

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

Page 12: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

LINGUAGGIDIPROGRAMMAZIONE

Page 13: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Comescegliereunlinguaggio

Scelta?…1.  Lelibrerie2.  AmbienIdiprogrammazione3.  Le“bestpracIce”aziendali

NostroobieYvo:fornireglistrumenVchevipermeMerannodifarescelteconsapevoli

Page 14: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

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

14

LinguaggidiProgrammazione

Page 15: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

ParadigmilinguisVci:o  ImperaVvo,funzionale,orientatoaglioggeYImplementazione:stru=ureatempodiesecuzioneo  Qualisonolestru=uredelrun-Ime?o  ComevengonogesIte?o  QualisonolerelazionitraparadigmilinguisIciestru=uredelkrunIme?

  Ilnostroapproccio:ladescrizionedell’implemementazionedellinguaggioèguidatadallasemanIcaformale!o  Stru=uradelrun-ImesimulatainOcaml.Cisononumerosilibrisull’argomentochesonouIliperilnostrocorso…mame=eremoadisposizionedellenote.

15

TanIaspe]importanI…

Page 16: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Materialedida]co

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

Page 17: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Materialedida]co

M.ScoMProgramminglanguagepragma5cs(MorganKaufmann2009)

Page 18: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Materialedida]co

P.Sesto?Programminglanguage

concepts(Springer2012)

Page 19: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

  Ilmaterialedida]codellelezionisaràdisponibilesullapaginawebcosìcometu]iprogrammiOCamleJavacheverrannodiscussinelleesercitazioni

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

valutazioneposiIvadelproge=oo  2proveintermediepossonososItuirelaprovascri=ao  2proge]intermedipossonososItuireilproge=o

  Consiglio  seguireilcorsomantenendosialpassoconlostudioo  partecipare(a]vamente)alezioniedesercitazionio  sostenereleproveintermedie

19

PR2:istruzioniperl’uso

Page 20: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

  Familiaritàcoiconce]basediprogrammazionefunzionale(Caml)eimperaIva(C)o  Programmazione1elaboratorioo  Logicaperlaprogrammazione

  Familiaritàalgoritmicaeprogrammazioneconlestru=uredaIdibase(liste,pile,code,alberi,hashtable,…)o  Algoritmicaelaboratorio

Competenzerichieste(nostreaspe=aIve)

Page 21: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Linguaggieastrazione

  Ilinguaggidiprogrammazionesonoilpiùpotentestrumentodiastrazionemessoadisposizionedeiprogrammatorio  IlinguaggisisonoevoluItrasformandoincostru]linguisIci(e

realizzandoliunavoltapertu=enell’implementazione)seMoridiapplicazioni(basididaI,webapplicaIons,intelligenzaarIficiale,simulazione,etc.)

  Difondamentaleimportanzal’introduzionedimeccanismidiastrazione,cheperme=onodiestendereunlinguaggioprogrammandonuoveoperazioni,Ipididato,etc.

21

Page 22: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

IldiagrammaevoluIvo

22

Page 23: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

TanIlinguaggi.Perché?

Prendiamoilmiglioreebasta!!!o  ComevedreteaCalcolabilitàeComplessità,ilinguaggidiprogrammazionesonotu](Turing)equivalenI:stessapotenzaespressiva

  ImigliorisonotanI…o  VisioneOracle-Sun:Javao  VisioneMicrosov:C#,F#o  VisionedellosviluppatoreWeb:JavaScript,o  VisionedatascienIst:PythonTantemoIvazionidiverse:alcunilinguaggimegliosiada=anoaunparIcolarecontestoo  PROLOG:AI

Page 24: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Adayinthelifeofawebprogrammer

  Developwebappso  ApplicaIonframework(e.g.Mozilla)  Clientsideprogrammingo  Javascript(funzionalità),  Serversideprogrammingo  CGIscriptso  ScripIng(PHP,Pearl,Ruby,…)o  Javao  Databaseaccess(SQL)o  XMLperwebservicesSenzadimenIcareunsistemadiversioning(egGIT)

Page 25: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Navigatesulweb

  Ilsitowww.scriptol.com/programming/fibonacci.phpdescriveilprogrammachecalcolainumeridifibonaccineiprincipalilinguaggidiprogrammazione

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

Page 26: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Unaclassifica…

TIOBEindex2016

Page 27: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Un’altraclassifica:PYPL

PopularitYofProgrammingLanguage

Page 28: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Unaterzaclassifica

AnalisiquanItaIvadeiproge]disponibilisullapia=aformaGithubo  h=p://githut.info/

Page 29: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Unpo’distoriadeilinguaggidiprogrammazione

Page 30: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

IlinguaggidiprogrammazionenasconoconlamacchinadidiTuring(fondazione)elamacchinadiVonNeumann(macchinaaprogrammamemorizzato)•  iprogrammisonounparIcolareIpodidatorappresentatonellamemoriadellamacchina

•  lamacchinapossiedeuninterpretecapacedieseguireilprogrammamemorizzato,equindidiimplementareognialgoritmodescrivibilenel“linguaggiomacchina”

•  unlinguaggiomacchinadotatodisemplicioperazioniprimiIveperlasceltaeperiterare(osimili)èTuring-equivalente,cioépuòdescriveretu]glialgoritmi

30

Linguaggidiprogrammazione

Page 31: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

31

Anni‘50

  FORTRANeCOBOL(sempreverdi)o  notazionisimbolicheorientaterispe]vamentealcalcoloscienIfico(numerico)eallagesIonedaI(anchesumemoriasecondaria)

o  astrazioneprocedurale(so=oprogrammi,maconcara=erisIchemoltosimiliaicostru]forniIdailinguaggimacchina)

o  meccanismilinguisVciperintrodurrenuoveoperazioniestruMuredaV(peresempio,gliarrayinFORTRANeirecordinCOBOL)

o  all’occhiomoderno:nulladisignificaIvamentediversodailinguaggimacchina

Page 32: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

! FondamenV(teoria)!  formalizzazionedegliaspe]sinta]ci!  primirisultaIsemanIcibasaIsullambda-calcolo

! CaraMerisVchecomuni!  introduzionedellanozionediambienteperlagesIonedegliidenIficatorieleregolediscope

!  veraastrazioneproceduraleconricorsione! ALGOL60

!  primolinguaggioimperaIvoveramenteadaltolivello!  scopingstaIcoegesIonedinamicadellamemoriaastack

! LISP(sempreverde)!  primolinguaggiofunzionale,dire=amenteispiratoallambda-calcolo(lateoriaritorna)

!  scopingdinamico,stru=uredaIdinamiche,gesIonedinamicadellamemoriaaheapcongarbagecollector

32

Ifavolosi‘60:LISPeALGOL

Page 33: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

• ALGOL60,proto9podeilinguaggiimpera9vi•  LISP,proto9podeilinguaggilogiciefunzionali

• Analizzandoiduelinguaggiciaccorgiamocheoriginanoconce]similinonacasobasaIsullateoria•  lagesIonedell’ambientetramitelostack

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

33

Eperalprecisione…

Page 34: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

•  PL/I:primotentaIvodilinguaggio“globale”(targatoIBM)•  tentaIvodisintesifraLISP,ALGOL60eCOBOL•  fallitopermancanzadiunavisionesemanIcaunitaria

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

34

Lafinedeglianni‘60

Page 35: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

•  Glianni’70•  metodologiediprogrammazione,IpididaIastra],modularità,classieogge]

•  programmazionedisistemainlinguaggiadaltolivello:eccezionieconcorrenza

•  Unesempio:PASCAL•  estensionediALGOL60condefinizionediIpi(nonastra]),usoesplicitodipuntatoriegesIonedinamicadellamemoriaaheap(senzagarbagecollector)

•  sempliceimplementazionemista(conP-Code,antesignanodelbytecode),facilmenteportabile

35

EvoluzionedelfiloneimperaIvo

Page 36: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

•  C:PASCAL+moduli+Ipiastra]+eccezioni+interfacciaperinteragireconilsistemaoperaIvo

•  ADA:ilsecondotentaIvodilinguaggio“totalitario”(targatoUSDoD)•  C+concorrenza+costru]perlaprogrammazioneintemporeale

•  proge=oambizioso:grandeenfasisusemanIcastaIca(proprietàverificabilidalcompilatore)

•  C++:C+classieogge](allocaIsulloheap,ancorasenzagarbagecollector)

36

IldopoPASCAL

Page 37: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

37

Laprogrammazionelogica

PROLOG•  implementazionediunframmentodelcalcolodeipredicaIdelprimoordine(lateoriacheaiuta)

•  stru=uredaImoltoflessibili(termini)concalcoloeffe=uatodall’algoritmodiunificazione

•  computazioninon-determinisIche•  gesIonememoriaaheapcongarbagecollector

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

Page 38: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

38

Laprogrammazionefunzionale

ML:implementazionedellambda-calcoloIpato•  definizionedinuoviIpiricorsivi,ivalorideinuoviIpisonotermini,chepossonoesserevisitaIconunmeccanismodipa=ernmatching(versionesemplificatadell’unificazione)

•  scopingstaIco(adifferenzadiLISP)•  semanIcastaIcamoltopotente(inferenzaecontrollodeiIpi)• unprogramma“corre=o”perlasemanIcastaIcaquasisemprevabene

•  gesIonememoriaaheapcongarbagecollector

HASKELL:MLconregoladivalutazione“lazy”

Page 39: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

•  Moltecara=erisIchedalfiloneimperaIvo•  essenzialmentetu=equellediC++

•  Alcunecara=erisIchedeilinguaggilogico-funzionali•  gesIonedellamemoriacongarbagecollector

•  UsodelmeccanismodiclassiedereditarietàperridurreilnumerodimeccanismiprimiIvi•  quasitu=oèrealizzatoconclassipredefinitenellelibrerie

•  Implementazionemista,Ipicadelfilonelogico•  chenefacilitalaportabilitàelorendemoltoada=oadessereintegratonelleapplicazionidirete

39

Java

Page 40: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

C#

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

  IIpiprimiIvidellinguaggiohannounacorrispondenzaprecisaconiIpidisponibiliarun-Ime

Page 41: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

SCALA

  Scalasmoothlyintegratesfeaturesofobject-orientedandfuncIonallanguages

Page 42: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

F#

  MLspiegatoalpopolo

Page 43: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Evoluzionedeilinguaggi

a.  UnecosistemadiapplicazionidifferenIb.  Enfasicrescentesulleastrazioniperilprogrammatorec.  Cara=erisIchesignificaIve:migliorarelaaffidabilità,

lamanutenibilitàelasicurezzadelsovwared.  Aspe]moderni:astrazionipermobilitàedistribuzionee.  PrimiIvelinguisIcheeastrazioniperparallelismoe

concorrenzaf.  Trend:mul5-paradigmprogramming

Page 44: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Unesempio

  Pythonlinguaggiodiprogrammazionesviluppatoafineanni‘80daGuidovanRossum(CWI)  Uno“scripInglanguage”  LinguaggiomulI-paradigma:supportainmodonaIvoogge]efunzionidiordinesuperioreIpichedellaprogrammazionefunzionale  TipidinamiciegesIonedinamicadellamemoria

Page 45: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Ruby

  RubylinguaggiodiscripIngsviluppatoafineanni’90daYukihiroMatsumoto  InfluenzatodaPerlandSmalltalk  MulI-paradigma:funzionale,aogge],imperaIvoconmeccanismidimeta-programmazione(LISPcheritorna)  Ruby(comelodescrivono)o  everythingisanobjecto  everyopera5onisamethodcallo  allprogrammingismeta-programming  Usatonellosviluppodiapplicazioniweb

Page 46: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

ParadigmafunzionaleperJavaeC#

  Java8:laversionecorrentediJavaIntroduzionedimeccanismilinguisIciperlaprogrammazionefunzionale:Lambdao  Problema:introdurreLambdasenzadoverricompilareicodicibinariesistenI.

EspressioniLambdasonodisponibiliancheinC#o  …conilmedesimoscopo

Page 47: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Modellicomputazionali

" Comevedremomeglionellasecondapartedelcorsoaognilinguaggioèassociatounmodellodicalcolo

"  ImperaVvo:Fortran(1957)

"  Funzionale:Lisp(1958)

"  AoggeY:Simula(1967)

"  Logico:Prolog(1972)

"  Relazionale:SQL(1974)

Page 48: AA 2016-2017 PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/gadducci/oldCorsi/PR2-16/PR2-16-001.pdf · o seguire il corso mantenendosi al passo con lo studio o partecipare (avamente)

Ilproge=odiPR2

  Unmetodoefficacepercomprenderecosasignifica“modellodicomputazione”èproge=areesviluppareunlinguaggiodiprogrammazioneo  Ilproge=odiPR2siproponequestoobie]vo!!