23
301AA - Advanced Programming Lecturer: Andrea Corradini [email protected] h;p://pages.di.unipi.it/corradini/ Course pages: h;p://pages.di.unipi.it/corradini/Dida@ca/AP-19/ AP-02: Mo%va%ons and Introduc%on

301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

301AA-AdvancedProgramming

Lecturer:AndreaCorradini [email protected]

h;p://pages.di.unipi.it/corradini/

Coursepages:h;p://pages.di.unipi.it/corradini/Dida@ca/AP-19/

AP-02:Mo%va%onsandIntroduc%on

Page 2: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

SoCwareisEverywhere

Page 3: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

Programminginthe21century •  SoCwareascomplexasever•  Commandlineinterfacenotenough•  DatacomesfrommulKplesources:structured(DB)andunstructured

•  Singlecomputernotenough•  SoCwaredevelopmentisagroupacKvity•  DeploymentonWebormobiledevices

Page 4: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

ComplexityPromptsforInnovaKon

•  Object-OrientedProgrammingallowseverlargerapplicaKonstobebuilt

•  Butlimitedsupportforreuse•  OS+librariesnotenough•  Reusablecomponentsareneeded•  MulK-KerapplicaKonsdevelopmentincreasesthechoicesonhowtobuildapplicaKons

Page 5: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

KeyIngredientsforComplexSoCware

•  Advancedfeaturesextendingprogramminglanguages

•  Componentmodelstoensurereusability•  Frameworkstosupportefficientdevelopmentof(componentbased)applicaKons

•  Execu9onenvironmentsprovidingrunKmesupportforeverdynamicsoCwaresystems

5

Page 6: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

TheSoCwareArchitect

•  Anewroleisneeded:So;wareArchitect•  tocreate,defineorchooseanapplica9onframework•  tocreatethecomponentdesignaccordingtoacomponentmodel

•  tostructureacomplexapplicaKonintopieces•  tounderstandtheinteracKonsanddependenciesamongcomponents

•  toselecttheexecu9onenvironment/pla>ormbasedoncost/performancecriteria

•  toorganizeandsupervisethedevelopmentprocess

Page 7: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

CourseObjecKves•  Understandprogramminglanguagetechnology:

–  ExecuKonModels–  Run-Kmesystems

•  Analyzeprogrammingmetaphors:– Objects–  Components–  Pa;erns

•  Learnadvancedprogrammingtechniques•  Presentstate-of-the-artframeworksincorporaKngthesetechniques

•  PracKcewithalltheseconceptsthroughsmallprojects

Page 8: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

CourseSyllabus

•  ProgrammingLanguagesandAbstractMachines•  RunTimeSystemsandtheJVM•  Component-basedProgramming•  SoCwareFrameworksandInversionofControl•  PolymorphismandGenericProgramming•  FuncKonalprogrammingandHaskell•  ScripKngLanguagesandPython

8

Page 9: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

ProgrammingLanguagesandAbstractMachines

•  Syntax,SemanKcsandPragmaKcsofPLs•  ProgramminglanguagesandAbstractMachines

•  InterpretaKonvs.CompilaKonvs.Mixed•  ExamplesofVirtualMachines•  ExamplesofCompilaKonSchemes

9

Page 10: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

Run-TimeSystemsandtheJVM•  RTSsprovideaVirtualExecuKonEnvironmentinterfacingaprograminexecuKonwiththeOS.

•  Theysupport,amongothers:– MemoryManagement,ThreadManagement–  ExcepKonHandlingandSecurity– AOTandJITCompilaKon– DynamicLink/Load– DebuggingSupportandReflecKon–  VerificaKon

•  Aconcreteexample:theJavaVirtualMachine

Page 11: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

Component-basedProgramming

•  Componentmodelsandframeworks,anIntroducKon

•  Examplesofcomponent-basedframeworks:–  JavaBeansandNetBeans– SpringandSpringBeans– COM– CLRand.NET– OSGiandEclipse– HadoopMap/Reduce

Page 12: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

SoCwareFrameworksandInversionofControl

•  So;wareFramework:AcollecKonofcommoncodeprovidinggenericfunc%onalitythatcanbeselec%velyoverriddenorspecializedbyusercodeprovidingspecificfunc%onality

•  Applica9onFramework:AsoCwareframeworkusedtoimplementthestandardstructureofanapplicaKonforaspecificdevelopmentenvironment

Page 13: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

FrameworkFeatures•  Frameworks,likeso(warelibraries,providereusableabstrac4onsofcodewrappedinawell-definedAPI

•  But:Inversionofcontrol–  unlikeinlibraries,theoverallprogram'sflowofcontrolisnotdictatedbythecaller,butbytheframework

•  Helpssolvingrecurringdesignproblems•  DrivessoluKon

–  Providesadefaultbehavior–  Dictateshowtofill-in-the-blanks

•  Non-modifiableframeworkcode–  Extensibility:usuallybyselecKveoverriding

Page 14: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

OOSoCwareFramework

•  Object-orientedprogrammingframeworksconsistsofasetofabstractclasses

•  AnapplicaKoncanbebuiltsimplyinheriKngfrompre-exisKngclassesintheframework

•  InstanKaKonofaframeworkconsistsofcomposingandsubclassingtheexisKngclasses

Page 15: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

ExamplesofFrameworks

•  GeneralsoCwareframeworks–  .NET–Windowsplakorm.Provideslanguageinteroperability

– AndroidSDK–SupportsdevelopmentofappsinJava(butdoesnotuseaJVM!)

–  Spring–Cross-plakorm,forJavaapplicaKons–  Cocoa–Apple’snaKveOOAPIformacOS.IncludesCstandardlibraryandtheObjecKve-CrunKme.

–  Eclipse–Cross-plakorm,easilyextensibleIDEwithplugins

Page 16: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

ExamplesofFrameworks

•  FrameworksforApplicaKonwithGUI– MFC-MicrosoCFoundaKonClassLibrary.C++object-orientedlibraryforWindows.

– Gnome–Wri;eninC;mainlyforLinux

– Qt-Cross-plakorm;wri;eninC++

Page 17: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

ExamplesofFrameworks

•  WebApplicaKonFrameworks[basedonModel-View-Controllerdesignpa;ern]– ASP.NETbyMicrosoCforwebsites,webapplicaKonsandwebservices

– GWT-GoogleWebToolkit(GWT)– Rails-Wri;eninRuby-Providesdefaultstructuresfordatabases,webservicesandwebpages.

Page 18: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

ExamplesofFrameworks

•  Concurrency– HadoopMap/Reduce-soCwareframeworkforapplicaKonswhichprocessbigamountsofdatain-parallelonlargeclusters(thousandsofnodes)inafault-tolerantmanner.

• Map:Takesinputdataandconvertsitintoasetoftuples(key/valuepairs).

•  Reduce:TakestheoutputfromMapandcombinesthedatatuplesintoasmallersetoftuples.

Page 19: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

FrameworkDesign

•  IntellectualChallengingTask•  Requiresadeepunderstandingoftheproblemdomain

•  Requiresmasteringofso;ware(design)paQerns,OOmethodsandpolymorphisminparKcular

Page 20: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

PolymorphismandGenericProgramming

•  AclassificaKonofPolymorphism•  PolymorphisminC++:inclusionpolymorphismandtemplates

•  JavaGenerics•  TheStandardTemplateLibrary:anoverview•  Genericsandinheritance:invariance,covarianceandcontravariance

20

Page 21: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

FuncKonalprogrammingandHaskell

•  IntroducKontoFuncKonalProgramming•  EvaluaKonstrategies(lambda-calculus)•  Haskell:mainfeatures•  TypeClassesandoverloading•  Monads•  FuncKonalprogramminginJava

– LambdasandStreamAPI

21

Page 22: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

ScripKngLanguagesandPython

•  OverviewofscripKnglanguages•  MainfeaturesofPython•  ImperaKve,funcKonalandOOprogramminginPython

•  Higher-orderfuncKonsandDecorators•  OntheimplementaKonofPython:theGlobalInterpreterLock

22

Page 23: 301AA - Advanced Programmingpages.di.unipi.it/corradini/Didattica/AP-19/SLIDES/AP-2019-02.pdf · – Hadoop Map/Reduce - soCware framework for applicaons which process big amounts

SelectedAdvancedConceptsinProgrammingLanguage

•  OverloadingandTypeClassesinHaskell•  ClosuresvsDelegatesinCLI•  AlgebraicdatatypesandAcKvepa;ernsinF#•  AssociaKvearraysinscripKnglanguages•  OwnershipandborrowinginRust•  ExtensionsinSwiC