Functional and Reactive Patterns in Idiomatically Imperative Programming Languages
Functional and reactive programming patterns provide powerful sets of tools for dealing with complexity and scalability. These stand in stark contrast to the imperative programming patterns which permeate the industry. This report seeks to investigate the extent to which a set of common imperative p...
Main Author: | |
---|---|
Format: | Others |
Language: | English |
Published: |
KTH, Skolan för elektroteknik och datavetenskap (EECS)
2018
|
Subjects: | |
Online Access: | http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-231426 |
id |
ndltd-UPSALLA1-oai-DiVA.org-kth-231426 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-UPSALLA1-oai-DiVA.org-kth-2314262018-08-25T06:42:57ZFunctional and Reactive Patterns in Idiomatically Imperative Programming LanguagesengFunktionella och reaktiva programmeringsmönster i imperativa programspråkSandström, JesperKTH, Skolan för elektroteknik och datavetenskap (EECS)2018Functional ProgrammingReactive ProgrammingSoftware ArchitectureProgramming patternsProgramming ParadigmsComputer SciencesDatavetenskap (datalogi)Functional and reactive programming patterns provide powerful sets of tools for dealing with complexity and scalability. These stand in stark contrast to the imperative programming patterns which permeate the industry. This report seeks to investigate the extent to which a set of common imperative programming languages can be used to implement such functional and reactive patterns, and what the implications of doing so are. This is done by implementing and using a framework based on such patterns in Java, Kotlin, Objective-C, and Swift. The results show that this is possible in all of these languages, but the extent to which this can be considered idiomatic is questionable. Upholding immutability and referential transparency is highlighted as the main source of concern in this regard. Funktionella och reaktiva programmeringsmönster förser utvecklare med kraftfulla abstraktioner för att hantera komplexitet och skalbarhet. Dagens industri förlitar sig dock till en majoritet på imperativa programspråk, där dessa mönster inte nödvändigtvis kan utnyttjas. Syftet med denna rapport är därför att undersöka hur sådana mönster kan tillämpas i imperativa programspråk. Detta görs genom att studera implementationen och användandet av ett ramverk för funktionell och reaktiv programmering i fyra programspråk: Java, Kotlin, Objective-C och Swift. Rapporten finner att de mönster undersökta i denna rapport går att implementera med existerande språkfunktioner för alla dessa språk, men frågan om detta kan anses idiomatiskt är oklar. Det huvudsakliga problemet är att säkerställa att funktioner skrivs utan sidoeffekter och att datastrukturerna som används inte är muterbara. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-231426TRITA-EECS-EX ; 2018:321application/pdfinfo:eu-repo/semantics/openAccess |
collection |
NDLTD |
language |
English |
format |
Others
|
sources |
NDLTD |
topic |
Functional Programming Reactive Programming Software Architecture Programming patterns Programming Paradigms Computer Sciences Datavetenskap (datalogi) |
spellingShingle |
Functional Programming Reactive Programming Software Architecture Programming patterns Programming Paradigms Computer Sciences Datavetenskap (datalogi) Sandström, Jesper Functional and Reactive Patterns in Idiomatically Imperative Programming Languages |
description |
Functional and reactive programming patterns provide powerful sets of tools for dealing with complexity and scalability. These stand in stark contrast to the imperative programming patterns which permeate the industry. This report seeks to investigate the extent to which a set of common imperative programming languages can be used to implement such functional and reactive patterns, and what the implications of doing so are. This is done by implementing and using a framework based on such patterns in Java, Kotlin, Objective-C, and Swift. The results show that this is possible in all of these languages, but the extent to which this can be considered idiomatic is questionable. Upholding immutability and referential transparency is highlighted as the main source of concern in this regard. === Funktionella och reaktiva programmeringsmönster förser utvecklare med kraftfulla abstraktioner för att hantera komplexitet och skalbarhet. Dagens industri förlitar sig dock till en majoritet på imperativa programspråk, där dessa mönster inte nödvändigtvis kan utnyttjas. Syftet med denna rapport är därför att undersöka hur sådana mönster kan tillämpas i imperativa programspråk. Detta görs genom att studera implementationen och användandet av ett ramverk för funktionell och reaktiv programmering i fyra programspråk: Java, Kotlin, Objective-C och Swift. Rapporten finner att de mönster undersökta i denna rapport går att implementera med existerande språkfunktioner för alla dessa språk, men frågan om detta kan anses idiomatiskt är oklar. Det huvudsakliga problemet är att säkerställa att funktioner skrivs utan sidoeffekter och att datastrukturerna som används inte är muterbara. |
author |
Sandström, Jesper |
author_facet |
Sandström, Jesper |
author_sort |
Sandström, Jesper |
title |
Functional and Reactive Patterns in Idiomatically Imperative Programming Languages |
title_short |
Functional and Reactive Patterns in Idiomatically Imperative Programming Languages |
title_full |
Functional and Reactive Patterns in Idiomatically Imperative Programming Languages |
title_fullStr |
Functional and Reactive Patterns in Idiomatically Imperative Programming Languages |
title_full_unstemmed |
Functional and Reactive Patterns in Idiomatically Imperative Programming Languages |
title_sort |
functional and reactive patterns in idiomatically imperative programming languages |
publisher |
KTH, Skolan för elektroteknik och datavetenskap (EECS) |
publishDate |
2018 |
url |
http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-231426 |
work_keys_str_mv |
AT sandstromjesper functionalandreactivepatternsinidiomaticallyimperativeprogramminglanguages AT sandstromjesper funktionellaochreaktivaprogrammeringsmonsteriimperativaprogramsprak |
_version_ |
1718726966902784000 |