implementation of programming languages (project)...• reactive programming approaches are...
TRANSCRIPT
ImplementationofProgrammingLanguages
(Project)
GuidoSalvaneschiRagnarMogk
Outline
• Administrivia• Intro• Schedule• Topics
GENERALINFORMATION
Administrivia
• GuidoSalvaneschi,RagnarMogk– Findusbyemail– [email protected]– [email protected]– OfficeA213/A207– GroupofProf.MiraMezini (STG)
Intro
• Implementasoftwareartifactaccordingtoagivenspecification.
• Generalscope:programminglanguages:– Extensions,codegenerators– Tools,IDEs– Analysistechniques– Performanceassessments– Prototypeswithinnovativeabstractions
Timeline
• Periodicdiscussions/meetings.
• Presentationanddeliveryoftheartifactandthedocumentation:endofthesemester.
GuidelinesandSuggestions
• Dependingonthegoaloftheproject• Ingeneral:– DeliverRUNNINGcode– Deliversomedocumentation– Optional:finalpresentation/demotodiscussyourwork
• Teamworkingisgood!– Organizeateamevenwithpeopleyoudon’tknow(yet)
Grades
• Dependingontheproject• Someguidelines:– Howmuchofthespecificationwasimplemented?– DidIsaythatthecodehastorun?– Whatistheoverallqualityofthecode?
• E.g.isitpainfultomodify/extendit?• Isitself-documenting?
– Whatisthequalityofthedocumentation?
Wheretostart
• Sendmeanemailwithyournameandalistof3topicsinorderofpreference.
• Orarrangeanappointment:– Askclarificationsifneeded– Discusspossiblecustomizations– Discusstheprojectsinmoredetail– Consideryourprogrammingskills
• Topicswillbeassigned• Discusstheprojectindetailwiththeinstructor
TOPICS
AutomatedRefactoringforAsynchronousApplications
• Anumberofapplicationsareasynchronous– Webapplications,mobileapps
• Modernlanguagessupportdedicatedabstractions– Async constructs– Eventstreams
• Needtoportalotofexistingsoftware• ImplementaproofofconcepttoolwithAndroidapplications
Transparentreactivity!
• Reactiveprogrammingapproachesarebottom-up– Primitivereactivevalues(e.g.,Vars,Events)– Derivedvalues(eventstreams,signals)
• Refactoringexistingcoderequirestop-down
@ReactiveFigurecomputeFigure(){…computeFigureColor() ……computeFigureShadow() …
}
ColorcomputeFigureColor(){ …}
ShadowcomputeFigureShadow(){ …}
AdvancedtypesinScala
• TheScalatypesystemisarguablystateoftheartin“advanced”typesystemsformainstreamlanguages
• Anumberofadvancedfeaturescanbeencoded– Sessiontypessupportstaticcheckofprotocolcorrectness
– Dependenttypes
• ImplementexamplesoftypeencodingintheScalatypesystem
Fastreactiveprogramming• Reactive/streamprogramminggonepopular
– MicrosoftRx,Bacon.js,Netflix’sbackend,…– Designimprovementbutslow!
• RPontopofOracle’sTruffle/Graal– Optimizations”forfree”– Easyaccessto
justintimecompiler
List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");myList.stream().filter(s-> s.startsWith("c")).map(String::toUpperCase).sorted().forEach(System.out::println);
PerformanceevaluationofBigDataProcessingsystems
• Hadoop,Dryad,Shark,Spark,Sparkstreaming,ApacheFlink,…
• Differenttrade-offs– Structuredvs.unstructureddata– Latency/throughput– Scalability
• Provideacomprehensiveevaluationofthesesystems
Programmingmodelforcloudcomputing
• Virtuallyinfinitecomputationalresources.– Anywhere,anytime– Ondemand
• Languageissues:– Deployment– Dynamicreconfiguration– Designpatterns– Async communication
• Implementan(existing)languagedesignforcloudcomputingonarealcloudplatform(e.g.,OpenStack)
QUESTIONS?