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...

Full description

Bibliographic Details
Main Author: Sandström, Jesper
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