+ All Categories
Home > Documents > PROGRAMMAZIONE 2 1.Introduzione - Persone - Dipartimento...

PROGRAMMAZIONE 2 1.Introduzione - Persone - Dipartimento...

Date post: 17-Feb-2019
Category:
Upload: builien
View: 216 times
Download: 0 times
Share this document with a friend
24
14/10/17 1 PROGRAMMAZIONE 2 1.Introduzione PR2 2017-2018 1 PRESENTAZIONI Gianluigi Ferrari o Email [email protected] o Web hFp://pages.di.unipi.it/ferrari/ o Di cosa mi occupo (ricerca) o Formal methods in SoCware Engineering ü VerificaQon, model checking, and staQc analysis of programs o Programming languages & models for Concurrent/Distributed Systems ü Service oriented & Cloud compuQng ü Programming languages for IoT o Security ü Language-based security PR2 2017-2018 2
Transcript

14/10/17

1

PROGRAMMAZIONE21.Introduzione

PR22017-2018 1

PRESENTAZIONI

•  GianluigiFerrario  [email protected]  WebhFp://pages.di.unipi.it/ferrari/

o  Dicosamioccupo(ricerca)o  FormalmethodsinSoCwareEngineering

ü VerificaQon,modelchecking,andstaQcanalysisofprogramso  Programminglanguages&modelsforConcurrent/DistributedSystems

ü Serviceoriented&CloudcompuQngü ProgramminglanguagesforIoT

o  Securityü Language-basedsecurity

PR22017-2018 2

14/10/17

2

PRESENTAZIONI

•  FabioGadduccio  [email protected]  WebhFp://pages.di.unipi.it/gadducci/

•  Dicosamioccupo(ricerca)o  FormalmethodsinSoCwareEngineering

ü VerificaQon,modelchecking,andstaQcanalysisofprogramso  Programminglanguages&modelsforConcurrent/DistributedSystems

ü ServiceorientedcompuQngü TheoreQcalfoundaQons

o  Visualmodelingü GraphicalspecificaQonsandmodeltransformaQons

PR22017-2018 3

PROGRAMMAZIONE2

QualisonogliargomenQdelcorso?DuetemaQcheprincipali

PR22017-2018 4

14/10/17

3

ProgrammazioneOO

•  TecnicheperlaprogrammazioneOO(inpiccolo)o  Specifica,implementazione,correQezza

o ProgeQareeprogrammareunsistemao DimostrarelacorreQezzadiunaimplementazioneètantoimportantequantoprogrammare

o  Programmazioneconcorrente(sepossibile)•  EsemplificateuQlizzandoJava

–  Nonècompitodiquestocorsointrodurreillinguaggionellasuainterezza…nétantomenolesuelibrerie(cheimpareretedasoli,quandoviservono)

PR22017-2018 5

Unavalangadilibri…

PR22017-2018 6

14/10/17

4

Materialedidahco(testodiriferimento)

B. Liskov, J. Guttag Program development in Java (Addison Wesley 2000) Datato, ma copre tutti gli aspetti

concettuali fondamentali

PR22017-2018 7

Materialedidahco(perchiècurioso)

F. Carrano, T. Henry Data Structures and Abstractions

with Java (Pearson 2017)

PR22017-2018 8

14/10/17

5

Materialedidahco

R. Bruni, A. Corradini, V. Gervasi Programmazione in Java (Apogeo 2011)

Ottima introduzione per chi pensa di avere lacune con la programmazione

PR22017-2018 9

Online

•  OracleJavatutorials,docs.oracle.com/javase/tutorial/java/

•  DavidEck,Introduc2ontoprogrammingusingJava,math.hws.edu/javanotes/

•  OnlinenetrovatemolQaltri…•  …senQteviliberidiseguirelavostracuriosità

PR22017-2018 10

14/10/17

6

LINGUAGGIDIPROGRAMMAZIONE

PR22017-2018 11

Comescegliereunlinguaggio

Scelta?…1.  Lelibrerie2.  AmbienQdiprogrammazione3.  Le“bestpracQce”aziendali

NostroobieVvo:fornireglistrumenXchevipermeQerannodifarescelteconsapevoli

PR22017-2018 12

14/10/17

7

LinguaggidiProgrammazione

•  Studiareiprincipichestannoallabasedeilinguaggidiprogrammazione

•  EssenzialepercomprendereilprogeFo,larealizzazioneel’applicazionepraQcadeilinguaggi

•  Nonciinteressarisponderealladomanda“JavaèmegliodiC#”?

PR22017-2018 13

TanQaspehimportanQ…

•  ParadigmilinguisXci:–  ImperaXvo,funzionale,orientatoaglioggeV

•  Implementazione:struFureatempodiesecuzione–  QualisonolestruFuredelrun-Qme?–  ComevengonogesQte?–  QualisonolerelazionitraparadigmilinguisQciestruFuredelrun-Qme?

•  Ilnostroapproccio:ladescrizionedell’implemementazionedellinguaggioèguidatadallasemanQcaformale!–  StruFuradelrun-QmesimulatainOcaml

•  CisononumerosilibrisultemachesonouQliperilcorso…mameFeremoadisposizionedellenote

PR22017-2018 14

14/10/17

8

Materialedidahco(testodiriferimento)

M. Gabbrielli, S. Martini Linguaggi di programmazione (McGraw-Hill 2006)

PR22017-2018 15

Materialedidahco(perchiècurioso)

M. Scott Programming language pragmatics (Morgan Kaufmann 2009)

PR22017-2018 16

14/10/17

9

Materialedidahco(perchiècurioso)

P. Sestoft Programming language concepts (Springer 2012)

PR22017-2018 17

PR2:istruzioniperl’uso

•  IlmaterialedidahcodellelezionisaràdisponibilesullapaginawebcosìcometuhiprogrammiOCamleJavacheverrannodiscussinelleesercitazioni

•  Provadiesame=progeQo+provascriQa+oraleo  ammissioneall’oraleconvotazione>=16/30nelloscriFo&

valutazioneposiQvadelprogeFoo  2proveintermediepossonososQtuirelaprovascriFao  2progehintermedipossonososQtuireilprogeFo

•  Consiglio  seguireilcorsomantenendosialpassoconlostudioo  partecipare(ahvamente)alezioniedesercitazionio  sostenereleproveintermedie

PR22017-2018 18

14/10/17

10

Competenzerichieste(nostreaspeFaQve)

•  Familiaritàcoiconcehbasediprogrammazionefunzionale(OCaML)eimperaQva(C)o Programmazione1elaboratorioo Logicaperlaprogrammazione

•  FamiliaritàalgoritmicaenellaprogrammazioneconlestruFuredaQdibase(liste,pile,code,alberi,hashtable,…)o Algoritmicaelaboratorio

PR22017-2018 19

Linguaggieastrazione

•  Ilinguaggidiprogrammazionesonoilpiùpotentestrumentodiastrazionemessoadisposizionedeiprogrammatori–  IlinguaggisisonoevoluQtrasformandoincostruhlinguisQci(erealizzandoliunavoltapertuFenell’implementazione)

•  seQoridiapplicazioni(basididaQ,webapplicaQons,intelligenzaarQficiale,simulazione,etc.)

•  Difondamentaleimportanzal’introduzionedimeccanismidiastrazione,chepermeFonodiestendereunlinguaggioprogrammandonuoveoperazioni,Qpididato,etc.

PR22017-2018 20

14/10/17

11

LinguaggidiProgrammazione

PR22017-2018 21

TanQlinguaggi.Perché?

•  Prendiamoilmiglioreebasta!!!–  ComevedreteaCalcolabilitàeComplessità,ilinguaggidi

programmazionesonotuh(Turing)equivalenQ:stessapotenzaespressiva

•  ImigliorisonotanQ…–  VisioneOracle-Sun:Java–  VisioneMicrosow:C#,F#–  VisionedellosviluppatoreWeb:JavaScript,–  VisionedatascienQst:Python

•  TantemoQvazionidiverse:alcunilinguaggimegliosiadaFanoaunparQcolarecontesto–  PROLOG:AI

PR22017-2018 22

14/10/17

12

Adayinthelifeofawebprogrammer

•  Webapps–  ApplicaQonframework(e.g.Mozilla)

•  Clientsideprogrammingo  JavaScript(funzionalità)

•  Serversideprogrammingo  CGIscriptso  ScripQng(PHP,Pearl,Ruby,…)o  Javao  Databaseaccess(SQL)o  XMLperwebservices

•  SenzadimenQcareunsistemadiversioning(e.g.GIT)

PR22017-2018 23

Navigatesulweb

•  Ilsitowww.scriptol.com/programming/fibonacci.phpdescriveilprogrammachecalcolainumeridiFibonaccineiprincipalilinguaggidiprogrammazione

•  Ilsitowww.99-boFles-of-beer.netdecrivecomeprogrammarein1500linguaggidiprogrammazioneiltestodi“99Bo8lesofBeer”

PR22017-2018 24

14/10/17

13

Unaclassifica…

TIOBEindex2016

PR22017-2018 25

Un’altraclassifica:PYPL

PopularityofProgrammingLanguages

PR22017-2018 26

14/10/17

14

Unaterzaclassifica

•  Analisi quantitativa dei progetti disponibili sulla piattaforma Github – http://githut.info/

PR22017-2018 27

Unpo’distoriadeilinguaggidiprogrammazione

PR22017-2018 28

14/10/17

15

Linguaggidiprogrammazione

Ilinguaggidiprogrammazione“nascono”conlemacchinediTuring(fondazione)eVonNeumann(aprogrammamemorizzato)•  iprogrammisonounparQcolareQpodidatorappresentatonellamemoriadellamacchina

•  lamacchinapossiedeuninterpretecapacedieseguireilprogrammamemorizzato,equindidiimplementareognialgoritmodescrivibilenel“linguaggiomacchina”

•  unlinguaggiomacchinadotatodisemplicioperazioniprimiQveperlasceltaeperiterare(osimili)èTuring-equivalente,cioépuòdescriveretuhglialgoritmi

PR22017-2018 29

Anni’50

•  FORTRANeCOBOL(sempreverdi)–  notazionisimbolicheorientaterispehvamentealcalcoloscienQfico(numerico)eallagesQonedaQ(anchesumemoriasecondaria)

–  astrazioneprocedurale(soFoprogrammi,maconcaraFerisQchemoltosimiliaicostruhforniQdailinguaggimacchina)

– meccanismilinguisXciperintrodurrenuoveoperazioniestruQuredaX(peresempio,gliarrayinFORTRANeirecordinCOBOL)

–  all’occhiomoderno:nulladisignificaQvamentediversodailinguaggimacchina

PR22017-2018 30

14/10/17

16

Ifavolosi’60:LISPeALGOL

ü FondamenX(teoria)ü formalizzazionedegliaspehsintahciü primirisultaQsemanQcibasaQsullambda-calcolo

ü CaraQerisXchecomuniü introduzionedellanozionediambienteperlagesQonedegliidenQficatorieleregolediscope

ü veraastrazioneproceduraleconricorsioneü ALGOL60

ü primolinguaggioimperaQvoveramenteadaltolivelloü scopingstaQcoegesQonedinamicadellamemoriaastack

ü LISP(sempreverde)ü primolinguaggiofunzionale,direFamenteispiratoallambda-calcolo(lateoriaritorna)

ü scopingdinamico,struFuredaQdinamiche,gesQonedinamicadellamemoriaaheapcongarbagecollector

PR22017-2018 31

Eperalprecisione…

• ALGOL60,proto9podeilinguaggiimpera9vi•  LISP,proto9podeilinguaggilogiciefunzionali

• AnalizzandoiduelinguaggiciaccorgiamocheoriginanoconcehsimilinonacasobasaQsullateoria•  lagesQonedell’ambientetramitelostack

• Gliapproccirestanodiversieoriginanoduefiloni•  ilfiloneimpera2vo(e.g.C)•  ilfilonefunzionale(e.g.OCaML)

PR22017-2018 32

14/10/17

17

Lafinedeglianni‘60

•  PL/I:primotentaQvodilinguaggio“globale”(targaIBM)•  tentaQvodisintesifraLISP,ALGOL60eCOBOL•  fallitopermancanzadiunavisionesemanQcaunitaria

•  SIMULA67:nascedifaFolaprogrammazioneaoggeB•  estensionediALGOL60orientatoallasimulazionediscreta•  quasisconosciuto,riscoperto15annidopo

PR22017-2018 33

EvoluzionedelfiloneimperaQvo

•  Glianni’70•  metodologiediprogrammazione,QpididaQastrah,modularità,classieoggeh

•  programmazionedisistemainlinguaggiadaltolivello:eccezionieconcorrenza

•  Unesempio:PASCAL•  estensionediALGOL60condefinizionediQpi(nonastrah),usoesplicitodipuntatoriegesQonedinamicadellamemoriaaheap(senzagarbagecollector)

•  sempliceimplementazionemista(conP-Code,antesignanodelbytecode),facilmenteportabile

PR22017-2018 34

14/10/17

18

IldopoPASCAL

•  C:PASCAL+moduli+Qpiastrah+eccezioni+interfacciaperinteragireconilsistemaoperaQvo

•  ADA:ilsecondotentaQvodilinguaggio“totalitario”(targatoUSDoD)•  C+concorrenza+costruhperlaprogrammazioneintemporeale

•  progeFoambizioso:grandeenfasisusemanQcastaQca(proprietàverificabilidalcompilatore)

•  C++:C+classieoggeh(allocaQsulloheap,ancorasenzagarbagecollector)

PR22017-2018 35

Laprogrammazionelogica

PROLOG•  implementazionediunframmentodelcalcolodeipredicaQdelprimoordine(lateoriacheaiuta)

•  struFuredaQmoltoflessibili(termini)concalcoloeffeFuatodall’algoritmodiunificazione

•  computazioninon-determinisQche•  gesQonememoriaaheapcongarbagecollector

CLP(ConstraintLogicProgramming)•  PROLOG+calcolosudominidiversi(e.g.numerici)conopportunialgoritmidisoluzionedivincoli

PR22017-2018 36

14/10/17

19

Laprogrammazionefunzionale

ML:implementazionedellambda-calcoloQpato•  definizionedinuoviQpiricorsivi,icuivalorisonoterminichepossonoesserevisitaQconunmeccanismodipaFernmatching(versionesemplificatadell’unificazione)

•  scopingstaQco(adifferenzadiLISP)•  semanQcastaQcapotente(inferenzaecontrollodeiQpi)

• unprogramma“correFo”perlasemanQcastaQcaquasisemprevabene

•  gesQonememoriaaheapcongarbagecollector

HASKELL:MLconregoladivalutazione“lazy”

PR22017-2018 37

•  MoltecaraFerisQchedalfiloneimperaQvo•  essenzialmentetuFequellediC++

•  AlcunecaraFerisQchedeilinguaggilogico-funzionali•  gesQonedellamemoriacongarbagecollector

•  UsodelmeccanismodiclassiedereditarietàperridurreilnumerodimeccanismiprimiQvi•  quasituFoèrealizzatoconclassipredefinitenellelibrerie

•  Implementazionemista,Qpicadelfilonelogico•  chenefacilitalaportabilitàelorendemoltoadaFoaessereintegratonelleapplicazionidirete

JAVA

PR22017-2018 38

14/10/17

20

C#

•  C#:linguaggiodiprogrammazioneaoggehsviluppatoperlaprogrammazionenelframework.NETo  il“meglio”diJavaeC++

•  IQpiprimiQvidellinguaggiohannounacorrispondenzaprecisaconiQpidisponibiliarun-Qme

PR22017-2018 39

SCALA

•  Scalasmoothlyintegratesfeaturesofobject-orientedandfuncQonallanguages

PR22017-2018 40

14/10/17

21

F#

•  MLspiegatoalpopolo

PR22017-2018 41

Evoluzionedeilinguaggi

a.  UnecosistemadiapplicazionidifferenQb.  Enfasicrescentesulleastrazioniperilprogrammatorec.  CaraFerisQchesignificaQve:migliorarelaaffidabilità,

lamanutenibilitàelasicurezzadelsowwared.  Aspehmoderni:astrazionipermobilitàedistribuzionee.  PrimiQvelinguisQcheeastrazioniperparallelismoe

concorrenzaf.  Trend:mul2-paradigmprogramming

PR22017-2018 42

14/10/17

22

Unesempio:PYTHON

•  Pythonlinguaggiodiprogrammazionesviluppatoafineanni‘80daGuidovanRossum(CWI)

•  Uno“scripQnglanguage”•  LinguaggiomulQ-paradigma:supportainmodonaQvooggehefunzionidiordinesuperioreQpichedellaprogrammazionefunzionale

•  TipidinamiciegesQonedinamicadellamemoria

PR22017-2018 43

Unaltroesempio:RUBY

•  RubylinguaggiodiscripQngsviluppatoafineanni’90daYukihiroMatsumoto

•  InfluenzatodaPerlandSmalltalk•  MulQ-paradigma:funzionale,aoggeh,imperaQvoconmeccanismidimeta-programmazione(LISPritorna!)

•  Ruby(comelodescrivono)o everythingisanobjecto everyopera2onisamethodcallo allprogrammingismeta-programming

•  Usatonellosviluppodiapplicazioniweb

PR22017-2018 44

14/10/17

23

ParadigmafunzionaleperJAVAeC#

•  Java8:laversionecorrentediJava•  IntroduzionedimeccanismilinguisQciperlaprogrammazionefunzionale:Lambda–  Problema:introdurreLambdasenzadoverricompilareicodicibinariesistenQ

•  EspressioniLambdasonodisponibiliancheinC#– …conilmedesimoscopo

PR22017-2018 45

Modellicomputazionali

² Comevedremomeglionellasecondapartedelcorsoaognilinguaggioèassociatounmodellodicalcolo

² ImperaXvo:Fortran(1957)

² Funzionale:Lisp(1958)

² AoggeV:Simula(1967)

² Logico:Prolog(1972)

² Relazionale:SQL(1974)

PR22017-2018 46

14/10/17

24

IlprogeFodiPR2

•  Unmetodoefficacepercomprenderecosasignifica“modellodicomputazione”èprogeFareesviluppareunlinguaggiodiprogrammazioneo IlprogeFodiPR2siproponequestoobiehvo!!

PR22017-2018 47


Recommended