implementation of programming languages (project)...• reactive programming approaches are...

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

Upload: others

Post on 27-Jun-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

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?