Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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
SoCwareisEverywhere
Programminginthe21century • SoCwareascomplexasever• Commandlineinterfacenotenough• DatacomesfrommulKplesources:structured(DB)andunstructured
• Singlecomputernotenough• SoCwaredevelopmentisagroupacKvity• DeploymentonWebormobiledevices
ComplexityPromptsforInnovaKon
• Object-OrientedProgrammingallowseverlargerapplicaKonstobebuilt
• Butlimitedsupportforreuse• OS+librariesnotenough• Reusablecomponentsareneeded• MulK-KerapplicaKonsdevelopmentincreasesthechoicesonhowtobuildapplicaKons
KeyIngredientsforComplexSoCware
• Advancedfeaturesextendingprogramminglanguages
• Componentmodelstoensurereusability• Frameworkstosupportefficientdevelopmentof(componentbased)applicaKons
• Execu9onenvironmentsprovidingrunKmesupportforeverdynamicsoCwaresystems
5
TheSoCwareArchitect
• Anewroleisneeded:So;wareArchitect• tocreate,defineorchooseanapplica9onframework• tocreatethecomponentdesignaccordingtoacomponentmodel
• tostructureacomplexapplicaKonintopieces• tounderstandtheinteracKonsanddependenciesamongcomponents
• toselecttheexecu9onenvironment/pla>ormbasedoncost/performancecriteria
• toorganizeandsupervisethedevelopmentprocess
CourseObjecKves• Understandprogramminglanguagetechnology:
– ExecuKonModels– Run-Kmesystems
• Analyzeprogrammingmetaphors:– Objects– Components– Pa;erns
• Learnadvancedprogrammingtechniques• Presentstate-of-the-artframeworksincorporaKngthesetechniques
• PracKcewithalltheseconceptsthroughsmallprojects
CourseSyllabus
• ProgrammingLanguagesandAbstractMachines• RunTimeSystemsandtheJVM• Component-basedProgramming• SoCwareFrameworksandInversionofControl• PolymorphismandGenericProgramming• FuncKonalprogrammingandHaskell• ScripKngLanguagesandPython
8
ProgrammingLanguagesandAbstractMachines
• Syntax,SemanKcsandPragmaKcsofPLs• ProgramminglanguagesandAbstractMachines
• InterpretaKonvs.CompilaKonvs.Mixed• ExamplesofVirtualMachines• ExamplesofCompilaKonSchemes
9
Run-TimeSystemsandtheJVM• RTSsprovideaVirtualExecuKonEnvironmentinterfacingaprograminexecuKonwiththeOS.
• Theysupport,amongothers:– MemoryManagement,ThreadManagement– ExcepKonHandlingandSecurity– AOTandJITCompilaKon– DynamicLink/Load– DebuggingSupportandReflecKon– VerificaKon
• Aconcreteexample:theJavaVirtualMachine
Component-basedProgramming
• Componentmodelsandframeworks,anIntroducKon
• Examplesofcomponent-basedframeworks:– JavaBeansandNetBeans– SpringandSpringBeans– COM– CLRand.NET– OSGiandEclipse– HadoopMap/Reduce
SoCwareFrameworksandInversionofControl
• So;wareFramework:AcollecKonofcommoncodeprovidinggenericfunc%onalitythatcanbeselec%velyoverriddenorspecializedbyusercodeprovidingspecificfunc%onality
• Applica9onFramework:AsoCwareframeworkusedtoimplementthestandardstructureofanapplicaKonforaspecificdevelopmentenvironment
FrameworkFeatures• Frameworks,likeso(warelibraries,providereusableabstrac4onsofcodewrappedinawell-definedAPI
• But:Inversionofcontrol– unlikeinlibraries,theoverallprogram'sflowofcontrolisnotdictatedbythecaller,butbytheframework
• Helpssolvingrecurringdesignproblems• DrivessoluKon
– Providesadefaultbehavior– Dictateshowtofill-in-the-blanks
• Non-modifiableframeworkcode– Extensibility:usuallybyselecKveoverriding
OOSoCwareFramework
• Object-orientedprogrammingframeworksconsistsofasetofabstractclasses
• AnapplicaKoncanbebuiltsimplyinheriKngfrompre-exisKngclassesintheframework
• InstanKaKonofaframeworkconsistsofcomposingandsubclassingtheexisKngclasses
ExamplesofFrameworks
• GeneralsoCwareframeworks– .NET–Windowsplakorm.Provideslanguageinteroperability
– AndroidSDK–SupportsdevelopmentofappsinJava(butdoesnotuseaJVM!)
– Spring–Cross-plakorm,forJavaapplicaKons– Cocoa–Apple’snaKveOOAPIformacOS.IncludesCstandardlibraryandtheObjecKve-CrunKme.
– Eclipse–Cross-plakorm,easilyextensibleIDEwithplugins
ExamplesofFrameworks
• FrameworksforApplicaKonwithGUI– MFC-MicrosoCFoundaKonClassLibrary.C++object-orientedlibraryforWindows.
– Gnome–Wri;eninC;mainlyforLinux
– Qt-Cross-plakorm;wri;eninC++
ExamplesofFrameworks
• WebApplicaKonFrameworks[basedonModel-View-Controllerdesignpa;ern]– ASP.NETbyMicrosoCforwebsites,webapplicaKonsandwebservices
– GWT-GoogleWebToolkit(GWT)– Rails-Wri;eninRuby-Providesdefaultstructuresfordatabases,webservicesandwebpages.
ExamplesofFrameworks
• Concurrency– HadoopMap/Reduce-soCwareframeworkforapplicaKonswhichprocessbigamountsofdatain-parallelonlargeclusters(thousandsofnodes)inafault-tolerantmanner.
• Map:Takesinputdataandconvertsitintoasetoftuples(key/valuepairs).
• Reduce:TakestheoutputfromMapandcombinesthedatatuplesintoasmallersetoftuples.
FrameworkDesign
• IntellectualChallengingTask• Requiresadeepunderstandingoftheproblemdomain
• Requiresmasteringofso;ware(design)paQerns,OOmethodsandpolymorphisminparKcular
PolymorphismandGenericProgramming
• AclassificaKonofPolymorphism• PolymorphisminC++:inclusionpolymorphismandtemplates
• JavaGenerics• TheStandardTemplateLibrary:anoverview• Genericsandinheritance:invariance,covarianceandcontravariance
20
FuncKonalprogrammingandHaskell
• IntroducKontoFuncKonalProgramming• EvaluaKonstrategies(lambda-calculus)• Haskell:mainfeatures• TypeClassesandoverloading• Monads• FuncKonalprogramminginJava
– LambdasandStreamAPI
21
ScripKngLanguagesandPython
• OverviewofscripKnglanguages• MainfeaturesofPython• ImperaKve,funcKonalandOOprogramminginPython
• Higher-orderfuncKonsandDecorators• OntheimplementaKonofPython:theGlobalInterpreterLock
22
SelectedAdvancedConceptsinProgrammingLanguage
• OverloadingandTypeClassesinHaskell• ClosuresvsDelegatesinCLI• AlgebraicdatatypesandAcKvepa;ernsinF#• AssociaKvearraysinscripKnglanguages• OwnershipandborrowinginRust• ExtensionsinSwiC