49
PROGRAMMAZIONE 2 1.Introduzione 1

PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

PROGRAMMAZIONE21.Introduzione

1

Page 2: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

PRESENTAZIONI

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

o Dicosamioccupo(ricerca)o FormalmethodsinSoftwareEngineering

✓Verification,modelchecking,andstaticanalysisofprogramso Programminglanguages&modelsforConcurrent/DistributedSystems

✓Serviceoriented&Cloudcomputing✓ProgramminglanguagesforIoT

o Security✓ Language-basedsecurity

2

Page 3: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

PRESENTAZIONI

• FrancescaLevio [email protected] Webhttp://pages.di.unipi.it/levi/

• Dicosamioccupo(ricerca)o FormalmethodsinSoftwareEngineering

✓Verification,modelchecking,andstaticanalysisofprogramso Programminglanguages&modelsforConcurrent/DistributedSystems

✓Systemsbiology✓Theoreticalfoundations

3

Page 4: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

PROGRAMMAZIONE2

Qualisonogliargomentidelcorso?Duetematicheprincipali

4

Page 5: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

ProgrammazioneOO

• TecnicheperlaprogrammazioneOO(inpiccolo)o Specifica,implementazione,correttezza

o Progettareeprogrammareunsistemao Dimostrarelacorrettezzadiunaimplementazioneètantoimportantequantoprogrammare

o Programmazioneconcorrente(sepossibile)

• EsemplificateutilizzandoJava– Nonècompitodiquestocorsointrodurreillinguaggionellasuainterezza…

nétantomenolesuelibrerie(cheimpareretedasoli,quandoviservono)

5

Page 6: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Unavalangadilibri…

6

Page 7: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Materialedidattico(testodiriferimento)

B. Liskov, J. Guttag Program development in Java (Addison Wesley 2000)

Datato, ma copre tutti gli aspetti concettuali fondamentali

7

Page 8: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Materialedidattico(perchiècurioso)

F. Carrano, T. Henry Data Structures and Abstractions

with Java (Pearson 2017)

8

Page 9: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Materialedidattico

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

Ottima introduzione per chi pensa di avere lacune con la programmazione

9

Page 10: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Online

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

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

• Onlinenetrovatemoltialtri…• …sentiteviliberidiseguirelavostracuriosità

10

Page 11: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

LINGUAGGIDIPROGRAMMAZIONE

11

Page 12: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Comescegliereunlinguaggio

Scelta? …

1.Le librerie 2.Ambienti di programmazione 3.Le “best practice” aziendali

Nostro obiettivo: fornire gli strumenti che vi permetteranno di fare scelte consapevoli

12

Page 13: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

LinguaggidiProgrammazione

• Studiareiprincipichestannoallabasedeilinguaggidiprogrammazione

• Essenzialepercomprendereilprogetto,larealizzazioneel’applicazionepraticadeilinguaggi

• Nonciinteressarisponderealladomanda“JavaèmegliodiC#”?

13

Page 14: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Tantiaspettiimportanti…

• Paradigmilinguistici:– Imperativo,funzionale,orientatoaglioggetti

• Implementazione:struttureatempodiesecuzione– Qualisonolestrutturedelrun-time?– Comevengonogestite?– Qualisonolerelazionitraparadigmilinguisticiestrutturedelrun-time?

• Ilnostroapproccio:ladescrizionedell’implemementazionedellinguaggioèguidatadallasemanticaformale!– Strutturadelrun-timesimulatainOcaml

• Cisononumerosilibrisultemachesonoutiliperilcorso…mametteremoadisposizionedellenote

14

Page 15: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Materialedidattico(testodiriferimento)

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

15

Page 16: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Materialedidattico(perchiècurioso)

M. Scott Programming language pragmatics (Morgan Kaufmann 2009)

16

Page 17: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Materialedidattico(perchiècurioso)

P. Sestoft Programming language concepts (Springer 2012)

17

Page 18: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

PR2:istruzioniperl’uso

• Ilmaterialedidattico(inclusiilucidi)dellelezionisaràdisponibilesullapaginaweb(incostruzione)cosìcometuttiiprogrammiOCamleJavacheverrannodiscussinelleesercitazioni

• Provadiesame=progetto+provascrittao scritto&valutazionepositivadelprogettoo 2proveintermediepossonosostituirelaprovascrittao 2progettiintermedipossonosostituireilprogetto

• Consiglio seguireilcorsomantenendosialpassoconlostudioo partecipare(attivamente)alezioniedesercitazionio sostenereleproveintermedie

18

Page 19: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Competenzerichieste(nostreaspettative)

• Familiaritàcoiconcettibasediprogrammazionefunzionale(OCaML)eimperativa(C)o Programmazione1elaboratorioo Logicaperlaprogrammazione

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

19

Page 20: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Linguaggieastrazione

• Ilinguaggidiprogrammazionesonoilpiùpotentestrumentodiastrazionemessoadisposizionedeiprogrammatori– Ilinguaggisisonoevolutitrasformandoincostruttilinguistici(erealizzandoli

unavoltapertuttenell’implementazione)

• settoridiapplicazioni(basididati,webapplications,intelligenzaartificiale,simulazione,etc.)

• Difondamentaleimportanzal’introduzionedimeccanismidiastrazione,chepermettonodiestendereunlinguaggioprogrammandonuoveoperazioni,tipididato,etc.

20

Page 21: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

LinguaggidiProgrammazione

21

Page 22: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Tantilinguaggi.Perché?

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

programmazionesonotutti(Turing)equivalenti:stessapotenzaespressiva

• Imigliorisonotanti…– VisioneOracle-Sun:Java– VisioneMicrosoft:C#,F#– VisionedellosviluppatoreWeb:JavaScript,– Visionedatascientist:Python

• Tantemotivazionidiverse:alcunilinguaggimegliosiadattanoaunparticolarecontesto– PROLOG:AI

22

Page 23: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Adayinthelifeofawebprogrammer

• Webapps– Applicationframework(e.g.Mozilla)

• Clientsideprogrammingo JavaScript(funzionalità)

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

• Senzadimenticareunsistemadiversioning(e.g.GIT)

23

Page 24: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Navigatesulweb

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

• Ilsitowww.99-bottles-of-beer.netdecrivecomeprogrammarein1500linguaggidiprogrammazioneiltestodi“99BottlesofBeer”

24

Page 25: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Unaclassifica…

TIOBE index 2016

25

Page 26: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Un’altraclassifica:PYPL

Popularity of Programming Languages

26

Page 27: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Unaterzaclassifica

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

27

Page 28: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Unpo’distoriadeilinguaggidiprogrammazione

28

Page 29: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Linguaggidiprogrammazione

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

macchina• lamacchinapossiedeuninterpretecapacedieseguireilprogrammamemorizzato,

equindidiimplementareognialgoritmodescrivibilenel“linguaggiomacchina”• unlinguaggiomacchinadotatodisemplicioperazioniprimitiveperlasceltaeper

iterare(osimili)èTuring-equivalente,cioépuòdescriveretuttiglialgoritmi

29

Page 30: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Anni’50

• FORTRANeCOBOL(sempreverdi)– notazionisimbolicheorientaterispettivamentealcalcoloscientifico(numerico)eallagestionedati(anchesumemoriasecondaria)

– astrazioneprocedurale(sottoprogrammi,maconcaratteristichemoltosimiliaicostruttifornitidailinguaggimacchina)

– meccanismilinguisticiperintrodurrenuoveoperazioniestrutturedati(peresempio,gliarrayinFORTRANeirecordinCOBOL)

– all’occhiomoderno:nulladisignificativamentediversodailinguaggimacchina

30

Page 31: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Ifavolosi’60:LISPeALGOL

✓ Caratteristichecomuni✓ introduzionedellanozionediambienteperlagestionedegliidentificatorieleregolediscope

✓ veraastrazioneproceduraleconricorsione✓ ALGOL60✓ primolinguaggioimperativoveramenteadaltolivello✓ scopingstaticoegestionedinamicadellamemoriaastack

✓ LISP(sempreverde)✓ primolinguaggiofunzionale,direttamenteispiratoallambda-calcolo(lateoriaritorna)

✓ scopingdinamico,strutturedatidinamiche,gestionedinamicadellamemoriaaheapcongarbagecollector

✓ Fondamenti(teoria)✓ formalizzazionedegliaspettisintattici✓ primirisultatisemanticibasatisullambda-calcolo

31

Page 32: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

E per la precisione

» LISP prototipo del paradigma logico e funzionale » ALGOL prototipo del filone imperativo

» Analizzando i due linguaggi ci accorgiamo che originano concetti simili non a caso basati sulla teoria• lagestionedell’ambientetramitelostack

» Gliapproccirestanodiversiegeneranoil• ilfiloneimperativo(e.g.C)• ilfilonefunzionale(e.g.OCaML)

32

Page 33: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Lafinedeglianni‘60

• PL/I:primotentativodilinguaggio“globale”(targaIBM)• tentativodisintesifraLISP,ALGOL60eCOBOL• fallitopermancanzadiunavisionesemanticaunitaria

• SIMULA67:nascedifattolaprogrammazioneaoggetti• estensionediALGOL60orientatoallasimulazionediscreta• quasisconosciuto,riscoperto15annidopo

33

Page 34: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Evoluzionedelfiloneimperativo

.Glianni’70• metodologiediprogrammazione,tipididatiastratti,modularità,classie

oggetti• programmazionedisistemainlinguaggiadaltolivello:eccezionie

concorrenza

• Unesempio:PASCAL• estensionediALGOL60condefinizioneditipi(nonastratti),usoesplicitodi

puntatoriegestionedinamicadellamemoriaaheap(senzagarbagecollector)

• sempliceimplementazionemista(conP-Code,antesignanodelbytecode),facilmenteportabile

34

Page 35: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

IldopoPASCAL

• C:PASCAL+moduli+tipiastratti+eccezioni+interfacciaperinteragireconilsistemaoperativo

• ADA:ilsecondotentativodilinguaggio“totalitario”(targatoUSDoD)• C+concorrenza+costruttiperlaprogrammazioneintemporeale• progettoambizioso:grandeenfasisusemanticastatica(proprietàverificabili

dalcompilatore)

• C++:C+classieoggetti(allocatisulloheap,ancorasenzagarbagecollector)

35

Page 36: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Laprogrammazionelogica

PROLOG• implementazionediunframmentodelcalcolodeipredicatidelprimoordine(lateoriacheaiuta)

• strutturedatimoltoflessibili(termini)concalcoloeffettuatodall’algoritmodiunificazione

• computazioninon-deterministiche• gestionememoriaaheapcongarbagecollector

CLP(ConstraintLogicProgramming)PROLOG+calcolosudominidiversi(e.g.numerici)con

opportunialgoritmidisoluzionedivincoli

36

Page 37: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Laprogrammazionefunzionale

ML:implementazionedellambda-calcolotipato• definizionedinuovitipiricorsivi,icuivalorisonoterminichepossonoessere

visitaticonunmeccanismodipatternmatching(versionesemplificatadell’unificazione)

• scopingstatico(adifferenzadiLISP)• semanticastaticapotente(inferenzaecontrollodeitipi)

• unprogramma“corretto”perlasemanticastaticaquasisemprevabene• gestionememoriaaheapcongarbagecollector

HASKELL:MLconregoladivalutazione“lazy”

37

Page 38: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

• Moltecaratteristichedalfiloneimperativo• essenzialmentetuttequellediC++

• Alcunecaratteristichedeilinguaggilogico-funzionali• gestionedellamemoriacongarbagecollector

• Usodelmeccanismodiclassiedereditarietàperridurreilnumerodimeccanismiprimitivi• quasituttoèrealizzatoconclassipredefinitenellelibrerie

• Implementazionemista,tipicadelfilonelogico• chenefacilitalaportabilitàelorendemoltoadattoaessereintegratonelleapplicazionidirete

JAVA

38

Page 39: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

C#

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

• Itipiprimitividellinguaggiohannounacorrispondenzaprecisaconitipidisponibiliarun-time

39

Page 40: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

SCALA

• Scalasmoothlyintegratesfeaturesofobject-orientedandfunctionallanguages

40

Page 41: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

F#

• MLspiegatoalpopolo

41

Page 42: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Evoluzionedeilinguaggi

a. Unecosistemadiapplicazionidifferentib. Enfasicrescentesulleastrazioniperilprogrammatorec. Caratteristichesignificative:migliorarelaaffidabilità,la

manutenibilitàelasicurezzadelsoftwared. Aspettimoderni:astrazionipermobilitàedistribuzionee. Primitivelinguisticheeastrazioniperparallelismoe

concorrenzaf. Trend:multi-paradigmprogramming

42

Page 43: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Unesempio:PYTHON

• Pythonlinguaggiodiprogrammazionesviluppatoafineanni‘80daGuidovanRossum(CWI)

• Uno“scriptinglanguage”• Linguaggiomulti-paradigma:supportainmodonativooggettiefunzionidiordinesuperioretipichedellaprogrammazionefunzionale

• Tipidinamiciegestionedinamicadellamemoria

43

Page 44: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Unaltroesempio:RUBY

• Rubylinguaggiodiscriptingsviluppatoafineanni’90daYukihiroMatsumoto

• InfluenzatodaPerlandSmalltalk• Multi-paradigma:funzionale,aoggetti,imperativoconmeccanismidimeta-programmazione(LISPritorna!)

• Ruby(comelodescrivono)o everythingisanobjecto everyoperationisamethodcallo allprogrammingismeta-programming

• Usatonellosviluppodiapplicazioniweb

44

Page 45: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

ParadigmafunzionaleperJAVAeC#

• Java8:laversionecorrentediJava• Introduzionedimeccanismilinguisticiperlaprogrammazionefunzionale:Lambda– Problema:introdurreLambda– senzadoverricompilareicodicibinariesistenti

• EspressioniLambdasonodisponibiliancheinC#– …conilmedesimoscopo

45

Page 46: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Modellicomputazionali

◇ Comevedremomeglionellasecondapartedelcorsoaognilinguaggioèassociatounmodellodicalcolo◇ Imperativo:Fortran(1957)

◇ Funzionale:Lisp(1958)

◇ Aoggetti:Simula(1967)

◇ Logico:Prolog(1972)

◇ Relazionale:SQL(1974)

46

Page 47: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

IlprogettodiPR2

• Unmetodoefficacepercomprenderecosasignifica“modellodicomputazione”èprogettareesviluppareunlinguaggiodiprogrammazioneo IlprogettodiPR2siproponequestoobiettivo!!

• Esercitazionididuetipi:esercitazioniditeoria(orientatealloscritto)epratiche(noninlaboratorio)

47

Page 48: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Concludendo

» Prima parte del corso: Metodologie di programmazione OO usando Java

» Seconda parte del corso: Linguaggi di programmazione ad alto livello e della loro implementazione

» Useremo Ocaml per implementare un interprete di un linguaggio didattico

48

Page 49: PROGRAMMAZIONE 2 1.Introduzionepages.di.unipi.it/levi/PR2-19-01.pdf · 2019-09-16 · introduzione della nozione di ambiente per la gestione degli identificatori e le regole di scope

Pagina Web

» Lucididellelezioni(voltapervolta)» Testidialcuniscrittidegliesamidianniprecedenti» LinkperscaricareJavaeOcaml» Ilmaterialedidatticopotrebberisultareunpo’dispersivoquindiper

ogniargomentolezioneilriferimentoallapartecorrispondentenelmaterialedidatticoconsigliato

o Webhttp://pages.di.unipi.it/levi/PR2levi2019.html

49