Implementation of Programming Languages (Project)...• Reactive programming approaches are...

17
Implementation of Programming Languages (Project) Guido Salvaneschi Ragnar Mogk

Transcript of Implementation of Programming Languages (Project)...• Reactive programming approaches are...

Page 1: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

ImplementationofProgrammingLanguages

(Project)

GuidoSalvaneschiRagnarMogk

Page 2: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Outline

• Administrivia• Intro• Schedule• Topics

Page 3: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

GENERALINFORMATION

Page 4: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Administrivia

• GuidoSalvaneschi,RagnarMogk– Findusbyemail– [email protected][email protected]– OfficeA213/A207– GroupofProf.MiraMezini (STG)

Page 5: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Intro

• Implementasoftwareartifactaccordingtoagivenspecification.

• Generalscope:programminglanguages:– Extensions,codegenerators– Tools,IDEs– Analysistechniques– Performanceassessments– Prototypeswithinnovativeabstractions

Page 6: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Timeline

• Periodicdiscussions/meetings.

• Presentationanddeliveryoftheartifactandthedocumentation:endofthesemester.

Page 7: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

GuidelinesandSuggestions

• Dependingonthegoaloftheproject• Ingeneral:– DeliverRUNNINGcode– Deliversomedocumentation– Optional:finalpresentation/demotodiscussyourwork

• Teamworkingisgood!– Organizeateamevenwithpeopleyoudon’tknow(yet)

Page 8: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Grades

• Dependingontheproject• Someguidelines:– Howmuchofthespecificationwasimplemented?– DidIsaythatthecodehastorun?– Whatistheoverallqualityofthecode?

• E.g.isitpainfultomodify/extendit?• Isitself-documenting?

– Whatisthequalityofthedocumentation?

Page 9: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Wheretostart

• Sendmeanemailwithyournameandalistof3topicsinorderofpreference.

• Orarrangeanappointment:– Askclarificationsifneeded– Discusspossiblecustomizations– Discusstheprojectsinmoredetail– Consideryourprogrammingskills

• Topicswillbeassigned• Discusstheprojectindetailwiththeinstructor

Page 10: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

TOPICS

Page 11: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

AutomatedRefactoringforAsynchronousApplications

• Anumberofapplicationsareasynchronous– Webapplications,mobileapps

• Modernlanguagessupportdedicatedabstractions– Async constructs– Eventstreams

• Needtoportalotofexistingsoftware• ImplementaproofofconcepttoolwithAndroidapplications

Page 12: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Transparentreactivity!

• Reactiveprogrammingapproachesarebottom-up– Primitivereactivevalues(e.g.,Vars,Events)– Derivedvalues(eventstreams,signals)

• Refactoringexistingcoderequirestop-down

@ReactiveFigurecomputeFigure(){…computeFigureColor() ……computeFigureShadow() …

}

ColorcomputeFigureColor(){ …}

ShadowcomputeFigureShadow(){ …}

Page 13: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

AdvancedtypesinScala

• TheScalatypesystemisarguablystateoftheartin“advanced”typesystemsformainstreamlanguages

• Anumberofadvancedfeaturescanbeencoded– Sessiontypessupportstaticcheckofprotocolcorrectness

– Dependenttypes

• ImplementexamplesoftypeencodingintheScalatypesystem

Page 14: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

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);

Page 15: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

PerformanceevaluationofBigDataProcessingsystems

• Hadoop,Dryad,Shark,Spark,Sparkstreaming,ApacheFlink,…

• Differenttrade-offs– Structuredvs.unstructureddata– Latency/throughput– Scalability

• Provideacomprehensiveevaluationofthesesystems

Page 16: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

Programmingmodelforcloudcomputing

• Virtuallyinfinitecomputationalresources.– Anywhere,anytime– Ondemand

• Languageissues:– Deployment– Dynamicreconfiguration– Designpatterns– Async communication

• Implementan(existing)languagedesignforcloudcomputingonarealcloudplatform(e.g.,OpenStack)

Page 17: Implementation of Programming Languages (Project)...• Reactive programming approaches are bottom-up – Primitive reactive values (e.g., Vars, Events) – Derived values (event streams,

QUESTIONS?