1 @article
{sethi2017internet
,
2 title={Internet of things
: architectures
, protocols
, and applications
},
3 author={Sethi
, Pallavi and Sarangi
, Smruti R
},
4 journal={Journal of Electrical and Computer Engineering
},
10 @inproceedings
{muccini2018iot
,
11 author="Muccini
, Henry and Moghaddam
, Mahyar Tourchi"
,
12 editor="Cuesta
, Carlos E. and Garlan
, David and P
{\'e
}rez
, Jennifer"
,
13 title="IoT Architectural Styles"
,
14 booktitle="Software Architecture"
,
16 publisher="Springer International Publishing"
,
19 abstract="IoT components are becoming more and more ubiquitous. Thus
, the necessity of architecting IoT applications is bringing a substantial attention towards software engineering community. On this occasion
, different styles and patterns can facilitate shaping the IoT architectural characteristics. This study aims at defining
, identifying
, classifying
, and re
-designing a class of IoT styles and patterns at the architectural level. Conforming a systematic mapping study
(SMS
) selection procedure
, we picked out
63 papers among over
2,300 candidate studies. To this end
, we applied a rigorous classification and extraction framework to select and analyze the most influential domain
-related information. Our analysis revealed the following main findings
: (i
) facing by various architectural styles that attempted to
address various aspects of IoT systems
, cloud and fog are discerned as their most important components.
(ii
) distributed patterns are not widely discussed for IoT architecture
, however
, there is foreseen a grow specially for their industrial applications.
(iii
) starting from the last few years on
, there is still a growing scientific interest on IoT architectural styles. This study gives a solid foundation for classifying existing and future approaches for IoT styles beneficial for academic and industrial researchers. It provides a set of
abstract IoT reference architectures to be applicable on various architectural styles."
,
20 isbn
="
978-3-030-00761-4"
23 @inproceedings
{rosenberg1997some
,
24 title={Some misconceptions about lines of code
},
25 author={Rosenberg
, Jarrett
},
26 booktitle={Proceedings fourth international software metrics symposium
},
31 doi
={10.1109/METRIC
.1997.637174},
32 address={Albuquerque
, NM
, USA
}
35 @inproceedings
{cooper2006links
,
36 address = {Berlin
, Heidelberg
},
37 title = {Links
: {Web
} {Programming
} {Without
} {Tiers
}},
38 isbn
= {978-3-540-74792-5},
39 abstract = {Links is a programming language for web applications that generates code for all three tiers of a web application from a single source
, compiling into JavaScript to run on the client and into SQL to run on the database. Links supports rich clients running in what has been dubbed `Ajax' style
, and supports concurrent processes with statically
-typed message passing. Links is scalable in the sense that session state is preserved in the client rather than the server
, in contrast to other approaches such as Java Servlets or PLT Scheme. Client
-side concurrency in JavaScript and transfer of computation between client and server are both supported by translation into continuation
-passing style.
},
40 booktitle = {Formal
{Methods
} for
{Components
} and
{Objects
}},
41 publisher = {Springer Berlin Heidelberg
},
42 author = {Cooper
, Ezra and Lindley
, Sam and Wadler
, Philip and Yallop
, Jeremy
},
43 editor = {de Boer
, Frank S. and Bonsangue
, Marcello M. and Graf
, Susanne and de Roever
, Willem
-Paul
},
48 @inproceedings
{serrano2006hop
,
49 title={Hop
: a language for programming the web
2.0},
50 author={Serrano
, Manuel and Gallesio
, Erick and Loitsch
, Florian
},
51 booktitle={OOPSLA Companion
},
55 address={Portland
, Oregon
, USA
},
58 @inproceedings
{lloyd1994practical
,
59 title={Practical Advtanages of Declarative Programming.
},
60 author={Lloyd
, John W
},
61 booktitle={GULP
-PRODE
(1)},
67 author ={Jeremy Singer
, Dejice Jacob
, Kristian Hentschel
},
69 title ={Anyscale Sensors
},
70 url
={https
://bitbucket.org
/jsinger
/anyscale
-sensors
/src
/master
/Readme.md
},
72 lastaccessed
={April
1, 2016},
75 @article
{pechtchanski2005immutability
,
76 title={Immutability specification and its applications
},
77 author={Pechtchanski
, Igor and Sarkar
, Vivek
},
78 journal={Concurrency and Computation
: Practice and Experience
},
83 publisher={Wiley Online Library
}
86 @inproceedings
{steiner_firmata_2009
,
87 title = {Firmata
: {Towards
} {Making
} {Microcontrollers
} {Act
} {Like
} {Extensions
} of the
{Computer
}.
},
89 author = {Steiner
, Hans
-Christoph
},
94 @article
{levis_mate_2002
,
95 title = {Maté
: {A
} tiny virtual machine for sensor networks
},
98 journal = {ACM Sigplan Notices
},
99 author = {Levis
, Philip and Culler
, David
},
103 file
= {Levis and Culler
- Matd A Tiny Virtual Machine for Sensor Networks.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/RMPGY9NI
/Levis and Culler
- Matd A Tiny Virtual Machine for Sensor Networks.pdf
:application
/pdf
}
106 @inproceedings
{gill_remote_2015
,
107 author = {Gill
, Andy and Sculthorpe
, Neil and Dawson
, Justin and Eskilson
, Aleksander and Farmer
, Andrew and Grebe
, Mark and Rosenbluth
, Jeffrey and Scott
, Ryan and Stanton
, James
},
108 title = {The Remote Monad Design Pattern
},
110 doi
= {10.1145/2804302.2804311},
111 booktitle = {Proceedings of the
2015 ACM SIGPLAN Symposium on Haskell
},
115 @article
{light2017mosquitto
,
116 title={Mosquitto
: server and client implementation of the MQTT protocol
},
117 author={Light
, Roger
},
118 journal={Journal of Open Source Software
},
125 @article
{adl2006compiler
,
126 title={Compiler and runtime support for efficient software transactional memory
},
127 author={Adl
-Tabatabai
, Ali
-Reza and Lewis
, Brian T and Menon
, Vijay and Murphy
, Brian R and Saha
, Bratin and Shpeisman
, Tatiana
},
128 journal={ACM SIGPLAN Notices
},
136 @inproceedings
{schwarz2002disassembly
,
137 title={Disassembly of executable code revisited
},
138 author={Schwarz
, Benjamin and Debray
, Saumya and Andrews
, Gregory
},
139 booktitle={Ninth Working Conference on Reverse Engineering
, 2002. Proceedings.
},
145 @article
{hughes1989functional
,
146 title={Why functional programming matters
},
147 author={Hughes
, John
},
148 journal={The computer
journal},
153 publisher={Oxford University Press
}
156 @article
{davidson2018expressiveness
,
157 title={Expressiveness
, meanings and machines
},
158 author={Davidson
, Joe and Michaelson
, Greg
},
159 journal={Computability
},
164 publisher={IOS Press
}
167 @inproceedings
{troyer_building_2018
,
168 title = {Building
{IoT
} {Systems
} {Using
} {Distributed
} {First
}-{Class
} {Reactive
} {Programming
}},
169 booktitle = {2018 {IEEE
} {International
} {Conference
} on
{Cloud
} {Computing
} {Technology
} and
{Science
} ({CloudCom
})},
170 author = {Troyer
, de
, Christophe and Nicolay
, Jens and Meuter
, de
, Wolfgang
},
175 address = {Nicosia
, Cyprus
},
178 @article
{harth_predictive_2018
,
179 author = {Natascha Harth and Christos Anagnostopoulos and Dimitrios Pezaros
},
180 title = {Predictive intelligence to the edge
: impact on edge analytics
},
181 journal = {Evolving Systems
},
188 @inproceedings
{naik2017choice
,
189 title={Choice of effective messaging protocols for IoT systems
: MQTT
, CoAP
, AMQP and HTTP
},
190 author={Naik
, Nitin
},
191 booktitle={2017 IEEE international systems engineering symposium
(ISSE
)},
197 @book
{guinard_building_2016
,
200 title = {Building the
{Web
} of
{Things
}: {With
} {Examples
} in
{Node
}.
{Js
} and
{Raspberry
} {Pi
}},
201 isbn
= {1-61729-268-0},
202 publisher = {Manning Publications Co.
},
203 author = {Guinard
, Dominique and Trifa
, Vlad
},
206 @article
{maccormack2007impact
,
207 title={The impact of component modularity on design evolution
: Evidence from the software industry
},
208 author={MacCormack
, Alan and Rusnak
, John and Baldwin
, Carliss Y
},
209 journal={Harvard Business School Technology \
& Operations Mgt. Unit Research Paper
},
214 doi
={10.2139/ssrn
.1071720},
218 @inproceedings
{belle2013layered
,
219 address = {Boston
, MA
, USA
},
220 title = {The layered architecture revisited
: {Is
} it an optimization problem?
},
222 isbn
= {978-1-5108-4159-8},
223 shorttitle
= {{SEKE
} 2013},
224 booktitle = {Proceedings of the
{Twenty
}-{Fifth
} {International
} {Conference
} on
{Software
} {Engineering
} \
& {Knowledge
} {E
}},
225 publisher = {KSI Research Inc
},
226 author = {Belle
, Alvine Boaye and El
-Boussaidi
, Ghizlane and Desrosiers
, Christian and Mili
, Hafedh
},
231 @inproceedings
{lee2001component
,
232 title={Component identification method with coupling and cohesion
},
233 author={Lee
, Jong Kook and Jung
, Seung Jae and Kim
, Soo Dong and Jang
, Woo Hyun and Ham
, Dong Han
},
234 booktitle={Proceedings Eighth Asia
-Pacific Software Engineering Conference
},
239 address={Macao
, China
},
242 @article
{antoniu2007combining
,
243 title={Combining data sharing with the master
--worker paradigm in the common component architecture
},
244 author={Antoniu
, Gabriel and Bouziane
, Hinde Lilia and Jan
, Mathieu and P
{\'e
}rez
, Christian and Priol
, Thierry
},
245 journal={Cluster Computing
},
253 @inproceedings
{grgic2016web
,
254 title={A web
-based IoT solution for monitoring data using MQTT protocol
},
255 author={Grgi
{\'c
}, Kre
{\v
{s
}}imir and
{\v
{S
}}peh
, Ivan and He
{\dj
}i
, Ivan
},
256 booktitle={2016 international conference on smart systems and technologies
(SST
)},
262 @inproceedings
{athanasopoulos2006interoperability
,
263 title={Interoperability among heterogeneous services
},
264 author={Athanasopoulos
, George and Tsalgatidou
, Aphrodite and Pantazoglou
, Michael
},
265 booktitle={2006 IEEE International Conference on Services Computing
(SCC'
06)},
271 @article
{mazzei2018full
,
272 title={A full stack for quick prototyping of IoT solutions
},
273 author={Mazzei
, Daniele and Baldi
, Giacomo and Montelisciani
, Gabriele and Fantoni
, Gualtiero
},
274 journal={Annals of Telecommunications
},
282 @article
{barrett2015fine
,
283 title={Fine
-grained language composition
: A case study
},
284 author={Barrett
, Edd and Bolz
, Carl Friedrich and Diekmann
, Lukas and Tratt
, Laurence
},
285 journal={arXiv preprint arXiv
:1503.08623},
289 @inproceedings
{patwardhan2004communication
,
290 title={Communication breakdown
: analyzing cpu usage in commercial web workloads
},
291 author={Patwardhan
, Jaidev P and Lebeck
, Alvin R and Sorin
, Daniel J
},
292 booktitle={IEEE International Symposium on
-ISPASS Performance Analysis of Systems and Software
, 2004},
298 @inproceedings
{cooper2008essence
,
299 title={The essence of form abstraction
},
300 author={Cooper
, Ezra and Lindley
, Sam and Wadler
, Philip and Yallop
, Jeremy
},
301 booktitle={Asian Symposium on Programming Languages and Systems
},
304 organization={Springer
}
307 @article
{rinard2003credible
,
308 title={Credible compilation
},
309 author={Rinard
, Martin C
},
313 @inproceedings
{bucur2014prototyping
,
314 title={Prototyping symbolic execution engines for interpreted languages
},
315 author={Bucur
, Stefan and Kinder
, Johannes and Candea
, George
},
316 booktitle={Proceedings of the
19th international conference on Architectural support for programming languages and operating systems
},
321 @inproceedings
{barany2014python
,
322 title={Python interpreter performance deconstructed
},
323 author={Barany
, Gerg
{\"o
}},
324 booktitle={Proceedings of the Workshop on Dynamic Languages and Applications
},
329 @article
{mayer2017multi
,
330 title={On multi
-language software development
, cross
-language links and accompanying tools
: a survey of professional software developers
},
331 author={Mayer
, Philip and Kirsch
, Michael and Le
, Minh Anh
},
332 journal={Journal of Software Engineering Research and Development
},
340 @inproceedings
{mayer2015empirical
,
341 author = {Mayer
, Philip and Bauer
, Alexander
},
342 title = {An Empirical Analysis of the Utilization of Multiple Programming Languages in Open Source Projects
},
344 isbn
= {9781450333504},
345 publisher = {Association for Computing Machinery
},
346 address = {New York
, NY
, USA
},
347 doi
= {10.1145/2745802.2745805},
348 abstract = {Background
: Anecdotal evidence suggests that software applications are usually implemented using a combination of
(programming
) languages. Aim
: We want to provide empirical evidence on the phenomenon of multi
-language programming. Methods
: We use data mining of
1150 open source projects selected for diversity from a public repository to a
) investigate the projects for
number and
type of languages found and the relative sizes of the languages
; b
) report on associations between the
number of languages found and the size
, age
, number of contributors
, and
number of commits of a project using a
(Quasi
-)Poisson regression model
, and c
) discuss concrete associations between the general
-purpose languages and domain
-specific languages found using frequent item set mining. Results
: We found a
) a mean
number of
5 languages per project with a clearly dominant main general
-purpose language and
5 often
-used DSL types
, b
) a significant influence of the size
, number of commits
, and the main language on the
number of languages as well as no significant influence of age and
number of contributors
, and c
) three language ecosystems grouped around XML
, Shell
/Make
, and HTML
/CSS. Conclusions
: Multi
-language programming seems to be common in open
-source projects and is a factor which must be dealt with in tooling and when assessing development and maintenance of such software systems.
},
349 booktitle = {Proceedings of the
19th International Conference on Evaluation and Assessment in Software Engineering
},
352 location
= {Nanjing
, China
},
356 @article
{avizienis85n
,
357 author={A.
{Avizienis
}},
358 journal={IEEE Transactions on Software Engineering
},
359 title={The N
-Version Approach to Fault
-Tolerant Software
},
364 doi
={10.1109/TSE
.1985.231893}
368 @inproceedings
{motta2018challenges
,
369 author = {Motta
, Rebeca C. and de Oliveira
, K\'
{a
}thia M. and Travassos
, Guilherme H.
},
370 title = {On Challenges in Engineering IoT Software Systems
},
372 isbn
= {9781450365031},
373 publisher = {Association for Computing Machinery
},
374 address = {New York
, NY
, USA
},
375 doi
= {10.1145/3266237.3266263},
376 abstract = {Contemporary software systems
, such as the Internet of Things
(IoT
), Industry
4.0, and Smart Cities are new technology paradigms that offer challenges for their construction since they are calling into question our traditional form of developing software. They are a promising paradigm for the integration of devices and communications technologies. It is leading to a shift from the classical monolithic view of development where stakeholder receive a software product at the end
(that we have been doing for decades
), to software systems materialized through physical objects interconnected by networks and with embedded software to support daily activities. We need therefore to revisit our way of developing software systems and start to consider the particularities required by these new sorts of applications. This paper presents research toward the definition of a framework to support the systems engineering of IoT applications
, where we evolved the Zachman's Framework as an alternative to the
organization of this architecture. The activities were two folded to
address this goal
: a
) we identified leading concerns of IoT applications
, recovered from technical literature
, practitioners and a Government Report
, in different studies
; b
) we structured the IoT paradigm in different facets. These activities provided
14 significant concerns and seven facets that together represent the engineering challenges to be faced both by research and practice towards the advancement of IoT in practice.
},
377 booktitle = {Proceedings of the XXXII Brazilian Symposium on Software Engineering
},
380 keywords = {challenges
, concerns
, internet of things
, IoT
, literature review
, empirical software engineering
},
381 location
= {Sao Carlos
, Brazil
},
385 @article
{gubbi2013internet
,
386 title={Internet of Things
(IoT
): A vision
, architectural elements
, and future directions
},
387 author={Gubbi
, Jayavardhana and Buyya
, Rajkumar and Marusic
, Slaven and Palaniswami
, Marimuthu
},
388 journal={Future generation computer systems
},
396 @article
{guzman2018human
,
397 title={What is human
-machine communication
, anyway
},
398 author={Guzman
, Andrea L
},
399 journal={Human
-machine communication
: Rethinking communication
, technology
, and ourselves
},
402 publisher={Peter Lang New York
}
405 @article
{wan2016software
,
406 title={Software
-defined industrial internet of things in the context of industry
4.0},
407 author={Wan
, Jiafu and Tang
, Shenglong and Shu
, Zhaogang and Li
, Di and Wang
, Shiyong and Imran
, Muhammad and Vasilakos
, Athanasios V
},
408 journal={IEEE Sensors Journal
},
416 @article
{batory1992design
,
417 title={The design and implementation of hierarchical software systems with reusable components
},
418 author={Batory
, Don and O'malley
, Sean
},
419 journal={ACM Transactions on Software Engineering and Methodology
(TOSEM
)},
424 publisher={ACM New York
, NY
, USA
}
427 @article
{mockus2002two
,
428 title={Two case studies of open source software development
: Apache and Mozilla
},
429 author={Mockus
, Audris and Fielding
, Roy T and Herbsleb
, James D
},
430 journal={ACM Transactions on Software Engineering and Methodology
(TOSEM
)},
435 publisher={ACM New York
, NY
, USA
}
438 @inproceedings
{le2015microservice
,
439 title={Microservice
-based architecture for the NRDC
},
440 author={Le
, Vinh D and Neff
, Melanie M and Stewart
, Royal V and Kelley
, Richard and Fritzinger
, Eric and Dascalu
, Sergiu M and Harris
, Frederick C
},
441 booktitle={2015 IEEE
13th International Conference on Industrial Informatics
(INDIN
)},
446 address={Cambridge
, UK
},
449 @inproceedings
{kodali2016low
,
450 title={Low cost ambient monitoring using ESP8266
},
451 author={Kodali
, Ravi Kishore and Mahesh
, Kopulwar Shishir
},
452 booktitle={2016 2nd International Conference on Contemporary Computing and Informatics
(IC3I
)},
457 address={Greater Noida
, India
}
460 @article
{beaven1993explaining
,
461 title={Explaining
type errors in polymorphic languages
},
462 author={Beaven
, Mike and Stansifer
, Ryan
},
463 journal={ACM Letters on Programming Languages and Systems
(LOPLAS
)},
468 publisher={ACM New York
, NY
, USA
}
471 @phdthesis
{armstrong2003making
,
472 title={Making reliable distributed systems in the presence of software errors
},
473 author={Armstrong
, Joe
},
477 @article
{madsen1990strong
,
478 title={Strong typing of object
-oriented languages revisited
},
479 author={Madsen
, Ole Lehrmann and Magnusson
, Boris and M
{\o
}lier
-Pedersen
, Birger
},
480 journal={ACM SIGPLAN Notices
},
485 publisher={ACM New York
, NY
, USA
}
488 @article
{cass20182017
,
489 title={The
2017 top programming languages
},
490 author={Cass
, Stephen
},
491 journal={IEEE Spectrum
},
496 @book
{tollervey2017programming
,
497 title={Programming with MicroPython
: Embedded Programming with Microcontrollers and Python
},
498 author={Tollervey
, Nicholas H
},
500 publisher={" O'Reilly Media
, Inc."
}
503 @inproceedings
{alpernaswonderful
,
504 author = {Alpernas
, Kalev and Feldman
, Yotam M. Y. and Peleg
, Hila
},
505 title = {The Wonderful Wizard of LoC
: Paying Attention to the Man behind the Curtain of Lines
-of
-Code Metrics
},
507 isbn
= {9781450381789},
508 publisher = {Association for Computing Machinery
},
509 address = {New York
, NY
, USA
},
510 doi
= {10.1145/3426428.3426921},
511 abstract = {Lines
-of
-code metrics
(loc
) are commonly reported in Programming Languages
(PL
), Software Engineering
(SE
), and Systems papers. This convention has several different
, often contradictory
, goals
, including demonstrating the `hardness' of a problem
, and demonstrating the `easiness' of a problem. In many cases
, the reporting of loc metrics is done not with a clearly communicated intention
, but instead in an automatic
, checkbox
-ticking
, manner. In this paper we investigate the uses of code metrics in PL
, SE
, and System papers. We consider the different goals that reporting metrics aims to achieve
, several various domains wherein metrics are relevant
, and various alternative metrics and their pros and cons for the different goals and domains. We argue that communicating claims about research software is usually best achieved not by reporting quantitative metrics
, but by reporting the qualitative experience of researchers
, and propose guidelines for the cases when quantitative metrics are appropriate. We end with a case study of the one area in which lines of code are not the default measurement
---code produced by papers' solutions
---and identify how measurements offered are used to support an explicit claim about the algorithm. Inspired by this positive example
, we call for other cogent measures to be developed to support other claims authors wish to make.
},
512 booktitle = {Proceedings of the
2020 ACM SIGPLAN International Symposium on New Ideas
, New Paradigms
, and Reflections on Programming and Software
},
515 keywords = {research papers
, loc
, lines of code
},
516 location
= {Virtual
, USA
},
517 series = {Onward
! 2020}
520 @inproceedings
{epstein2011towards
,
521 author = {Epstein
, Jeff and Black
, Andrew P. and Peyton Jones
, Simon
},
522 title = {Towards Haskell in the Cloud
},
524 isbn
= {9781450308601},
525 publisher = {Association for Computing Machinery
},
526 address = {New York
, NY
, USA
},
527 doi
= {10.1145/2034675.2034690},
528 abstract = {We present Cloud Haskell
, a domain
-specific language for developing programs for a distributed computing environment. Implemented as a shallow embedding in Haskell
, it provides a message
-passing communication model
, inspired by Erlang
, without introducing incompatibility with Haskell's established shared
-memory concurrency. A
key contribution is a method for serializing function closures for transmission across the network. Cloud Haskell has been implemented
; we present example code and some preliminary performance measurements.
},
529 booktitle = {Proceedings of the
4th ACM Symposium on Haskell
},
532 keywords = {message
-passing
, haskell
, erlang
},
533 location
= {Tokyo
, Japan
},
534 series = {Haskell '
11}
538 title={Akka essentials
},
539 address={Livery Place
, 35 Livery Street
, Birmingham B3
2PB
, UK
},
540 author={Gupta
, Munish
},
542 publisher={Packt Publishing Ltd
}
545 @article
{millman2011python
,
546 title={Python for scientists and engineers
},
547 author={Millman
, K Jarrod and Aivazis
, Michael
},
548 journal={Computing in Science \
& Engineering
},
557 title = "Python Official Forum"
,
560 note = "https
://www.python.org
/community
/forums
/"
564 title = "Micropython Official Forum"
,
567 note = "https
://forum.micropython.org
/"
571 title = "Official Micropython Docs"
,
574 note = "https
://docs.micropython.org
/en
/latest
/"
578 author = "HaskellWiki"
,
579 title = "Introduction to IO
--- HaskellWiki
{,} "
,
581 url
= "https
://wiki.haskell.org
/index.php?
title=Introduction_to_IO
&oldid
=63493"
,
582 note = "
[Online
; accessed
19-January
-2021]"
586 author = {{CircuitPython Team
}},
587 title = "CircuitPython"
,
589 url
= "https
://circuitpython.org
/"
,
590 note = "
[Online
; accessed
2-March
-2022]"
593 @InProceedings
{GenericProgrammingExtensionForClean
,
594 author = "Alimarine
, Artem and Plasmeijer
, Rinus"
,
595 editor = "Arts
, Thomas and Mohnen
, Markus"
,
596 title="A Generic Programming Extension for Clean"
,
597 booktitle="Implementation of Functional Languages"
,
599 publisher="Springer Berlin Heidelberg"
,
600 address="Berlin
, Heidelberg"
,
602 abstract="Generic programming enables the programmer to define functions by induction on the structure of types. Defined once
, such a generic function can be used to generate a specialized function for any user defined data
type. Several ways to support generic programming in functional languages have been proposed
, each with its own pros and cons. In this paper we describe a combination of two existing approaches
, which has the advantages of both of them. In our approach overloaded functions with class variables of an arbitrary kind can be defined generically. A single generic definition defines a kind
-indexed family of overloaded functions
, one for each kind. For instance
, the generic mapping function generates an overloaded mapping function for each kind."
,
603 isbn
="
978-3-540-46028-2"
605 @inproceedings
{HinzeGenericFunctionalProgramming
,
606 author = {Hinze
, Ralf
},
607 title = {A New Approach to Generic Functional Programming
},
610 publisher = {Association for Computing Machinery
},
611 address = {New York
, NY
, USA
},
612 doi
= {10.1145/325694.325709},
613 abstract = {This paper describes a new approach to generic functional programming
, which allows us to define functions generically for all datatypes expressible in Haskell. A generic function is one that is defined by induction on the structure of types. Typical examples include pretty printers
, parsers
, and comparison functions. The advanced
type system of Haskell presents a real challenge
: datatypes may be parameterized not only by types but also by
type constructors
, type definitions may involve mutual recursion
, and recursive calls of
type constructors can be arbitrarily nested. We show that—despite this complexity—a generic function is uniquely defined by giving cases for primitive types and
type constructors
(such as disjoint unions and cartesian products
). Given this information a generic function can be specialized to arbitrary Haskell datatypes. The
key idea of the approach is to model types by terms of the simply typed $\lambda
-calculus augmented by a family of recursion operators. While conceptually simple
, our approach places high demands on the
type system
: it requires polymorphic recursion
, rank
-n types
, and a strong form of
type constructor polymorphism. Finally
, we point out connections to Haskell's class system and show that our approach generalizes
type classes in some respects.
},
614 booktitle = {Proceedings of the
27th ACM SIGPLAN
-SIGACT Symposium on Principles of Programming Languages
},
617 location
= {Boston
, MA
, USA
},
620 @inproceedings
{TOP
-PPDP12
,
621 author = {Plasmeijer
, Rinus and Lijnse
, Bas and Michels
, Steffen and Achten
, Peter and Koopman
, Pieter
},
622 title = {Task
-Oriented Programming in a Pure Functional Language
},
624 isbn
= {9781450315227},
625 publisher = {Association for Computing Machinery
},
626 address = {New York
, NY
, USA
},
627 doi
= {10.1145/2370776.2370801},
628 abstract = {Task
-Oriented Programming
(TOP
) is a novel programming paradigm for the construction of distributed systems where users work together on the internet. When multiple users collaborate
, they need to interact with each other frequently. TOP supports the definition of tasks that react to the progress made by others. With TOP
, complex multi
-user interactions can be programmed in a declarative style just by defining the tasks that have to be accomplished
, thus eliminating the need to worry about the implementation detail that commonly frustrates the development of applications for this domain. TOP builds on four core concepts
: tasks that represent computations or work to do which have an observable value that may change over time
, data sharing enabling tasks to observe each other while the work is in progress
, generic
type driven generation of user interaction
, and special combinators for sequential and parallel task composition. The semantics of these core concepts is defined in this paper. As an example we present the iTask3 framework
, which embeds TOP in the functional programming language Clean.
},
629 booktitle = {Proceedings of the
14th Symposium on Principles and Practice of Declarative Programming
},
632 keywords = {task
-oriented programming
, clean
},
633 location
= {Leuven
, Belgium
},
638 author = {Plasmeijer
, Rinus and Achten
, Peter and Koopman
, Pieter
},
639 title = {{iTasks
}: {E
}xecutable
{S
}pecifications of
{I
}nteractive
{W
}ork
{F
}low
{S
}ystems for the
{W
}eb
},
640 booktitle = {{P
}roceedings of the
12th
{ACM SIGPLAN
} {I
}nternational
{C
}onference on
{F
}unctional
{P
}rogramming
({ICFP
} 2007)},
641 address = {{F
}reiburg
, {G
}ermany
},
645 isbn
= "
978-1-59593-815-2"
,
648 @article
{FinallyTagless
,
649 author = {Jacques Carette and Oleg Kiselyov and Chung
{-}chieh Shan
},
650 title = {Finally tagless
, partially evaluated
: Tagless staged interpreters
651 for simpler typed languages
},
652 journal = {J. Funct. Program.
},
657 url
= {https
://doi.org
/10.1017/S0956796809007205
},
658 doi
= {10.1017/S0956796809007205
},
659 timestamp
= {Sun
, 02 Jun
2019 21:00:12 +0200},
660 biburl
= {https
://dblp.org
/rec
/journals
/jfp
/CaretteKS09.bib
},
661 bibsource
= {dblp computer science bibliography
, https
://dblp.org
}
664 @inproceedings
{oortgiese_distributed_2017
,
665 title = {A
{Distributed
} {Dynamic
} {Architecture
} for
{Task
} {Oriented
} {Programming
}},
666 booktitle = {Proceedings of the
29th
{Symposium
} on
{Implementation
} and
{Application
} of
{Functional
} {Programming
} {Languages
}},
668 author = {Oortgiese
, Arjan and van Groningen
, John and Achten
, Peter and Plasmeijer
, Rinus
},
671 address = {Bristol
, UK
}
674 @inproceedings
{stefik14programming
,
675 author = {Stefik
, Andreas and Hanenberg
, Stefan
},
676 title = {The Programming Language Wars
: Questions and Responsibilities for the Programming Language Community
},
678 doi
= {10.1145/2661136.2661156},
679 booktitle = {Proceedings of the
2014 ACM International Symposium on New Ideas
, New Paradigms
, and Reflections on Programming \
& Software
},
683 @inproceedings
{ParametricLenses
,
684 author = {Domoszlai
, L\'
{a
}szl\'
{o
} and Lijnse
, Bas and Plasmeijer
, Rinus
},
685 title = {Parametric Lenses
: Change Notification for Bidirectional Lenses
},
687 isbn
= {9781450332842},
688 publisher = {Association for Computing Machinery
},
689 address = {New York
, NY
, USA
},
690 doi
= {10.1145/2746325.2746333},
691 abstract = {Most complex applications inevitably need to maintain dependencies between subsystems based on some shared data. The dependent parts must be informed that the shared information is changed. As every actual notification has some communication cost
, and every triggered task has associated computation cost
, it is crucial for the overall performance of the application to reduce the
number of notifications as much as possible. To achieve this
, one must be able to define
, with arbitrary precision
, which party is depending on which data. In this paper we offer a general solution to this general problem. The solution is based on an extension to bidirectional lenses
, called parametric lenses. With the help of parametric lenses one can define compositional parametric views in a declarative way to access some shared data. Parametric views
, besides providing read
/write access to the shared data
, also enable to observe changes of some parts
, given by an explicit parameter
, the focus domain. The focus domain can be specified as a
type-based query language defined over one or more resources using predefined combinators of parametric views.
},
692 booktitle = {Proceedings of the
26th International Symposium on Implementation and Application of Functional Languages
},
695 keywords = {notification systems
, parametric views
, lenses
, parametric lenses
, Bi
-directional programming
},
696 location
= {Boston
, MA
, USA
},
700 @article
{10.1145/1543134.1411301,
701 author = {Rodriguez
, Alexey and Jeuring
, Johan and Jansson
, Patrik and Gerdes
, Alex and Kiselyov
, Oleg and Oliveira
, Bruno C. d. S.
},
702 title = {Comparing Libraries for Generic Programming in Haskell
},
704 issue_date
= {February
2009},
705 publisher = {Association for Computing Machinery
},
706 address = {New York
, NY
, USA
},
710 doi
= {10.1145/1543134.1411301},
711 abstract = {Datatype
-generic programming is defining functions that depend on the structure
, or "shape"
, of datatypes. It has been around for more than
10 years
, and a lot of progress has been made
, in particular in the lazy functional programming language Haskell. There are morethan
10 proposals for generic programming libraries orlanguage extensions for Haskell. To compare and characterise the many generic programming libraries in atyped functional language
, we introduce a set of criteria and develop a generic programming benchmark
: a set of characteristic examples testing various facets of datatype
-generic programming. We have implemented the benchmark for nine existing Haskell generic programming libraries and present the evaluation of the libraries. The comparison is useful for reaching a common standard for generic programming
, but also for a programmer who has to choose a particular approach for datatype
-generic programming.
},
712 journal = {SIGPLAN Not.
},
716 keywords = {datatype
-generic programming
, libraries comparison
}
719 @inproceedings
{ComparingGenericProgramming
,
720 author = {Rodriguez
, Alexey and Jeuring
, Johan and Jansson
, Patrik and Gerdes
, Alex and Kiselyov
, Oleg and Oliveira
, Bruno C. d. S.
},
721 title = {Comparing Libraries for Generic Programming in Haskell
},
723 isbn
= {9781605580647},
724 publisher = {Association for Computing Machinery
},
725 address = {New York
, NY
, USA
},
726 doi
= {10.1145/1411286.1411301},
727 abstract = {Datatype
-generic programming is defining functions that depend on the structure
, or "shape"
, of datatypes. It has been around for more than
10 years
, and a lot of progress has been made
, in particular in the lazy functional programming language Haskell. There are morethan
10 proposals for generic programming libraries orlanguage extensions for Haskell. To compare and characterise the many generic programming libraries in atyped functional language
, we introduce a set of criteria and develop a generic programming benchmark
: a set of characteristic examples testing various facets of datatype
-generic programming. We have implemented the benchmark for nine existing Haskell generic programming libraries and present the evaluation of the libraries. The comparison is useful for reaching a common standard for generic programming
, but also for a programmer who has to choose a particular approach for datatype
-generic programming.
},
728 booktitle = {Proceedings of the First ACM SIGPLAN Symposium on Haskell
},
731 keywords = {datatype
-generic programming
, libraries comparison
},
732 location
= {Victoria
, BC
, Canada
},
733 series = {Haskell '
08}
736 @InProceedings
{ComposingReactiveGUIs
,
737 author="Bjornson
, Joel
738 and Tayanovskyy
, Anton
740 editor="Hage
, Jurriaan
741 and Moraz
{\'a
}n
, Marco T."
,
742 title="Composing Reactive GUIs in F
{\#
} Using WebSharper"
,
743 booktitle="Implementation and Application of Functional Languages"
,
745 publisher="Springer Berlin Heidelberg"
,
746 address="Berlin
, Heidelberg"
,
748 abstract="We present a generic library for constructing composable and interactive user interfaces in a declarative style. The paper introduces flowlets
, an extension of formlets
[3,2] providing interactivity. Real
-world examples are given using the current implementation that compiles flowlets defined in F
{\#
} to JavaScript with WebSharper."
,
749 isbn
="
978-3-642-24276-2"
752 @inproceedings
{FunctionalReactiveAnimation
,
753 author = {Elliott
, Conal and Hudak
, Paul
},
754 title = {Functional Reactive Animation
},
757 publisher = {Association for Computing Machinery
},
758 address = {New York
, NY
, USA
},
759 doi
= {10.1145/258948.258973},
760 abstract = {Fran
(Functional Reactive Animation
) is a collection of data types and functions for composing richly interactive
, multimedia animations. The
key ideas in Fran are its notions of behaviors and events. Behaviors are time
-varying
, reactive values
, while events are sets of arbitrarily complex conditions
, carrying possibly rich information. Most traditional values can be treated as behaviors
, and when images are thus treated
, they become animations. Although these notions are captured as data types rather than a programming language
, we provide them with a denotational semantics
, including a proper treatment of real time
, to guide reasoning and implementation. A method to effectively and efficiently perform event detection using interval analysis is also described
, which relies on the partial information structure on the domain of event times. Fran has been implemented in Hugs
, yielding surprisingly good performance for an interpreter
-based system. Several examples are given
, including the ability to describe physical phenomena involving gravity
, springs
, velocity
, acceleration
, etc. using ordinary differential equations.
},
761 booktitle = {Proceedings of the Second ACM SIGPLAN International Conference on Functional Programming
},
764 location
= {Amsterdam
, The Netherlands
},
768 @inproceedings
{kochhar2016large
,
769 author={P. S.
{Kochhar
} and D.
{Wijedasa
} and D.
{Lo
}},
770 booktitle={23rd International Conference on Software Analysis
, Evolution
, and Reengineering
},
771 title={A Large Scale Study of Multiple Programming Languages and Code Quality
},
774 doi
={10.1109/SANER
.2016.112},
775 address={Osaka
, Japan
},
779 @inproceedings
{hao2020approaching
,
780 author = {Rebecca L. Hao and Elena L. Glassman
},
781 title = {{Approaching Polyglot Programming
: What Can We Learn from Bilingualism Studies?
}},
782 booktitle = {10th Workshop on Evaluation and Usability of Programming Languages and Tools
(PLATEAU
2019)},
786 doi
= {10.4230/OASIcs.PLATEAU
.2019.1},
789 @article
{cass2020top
,
790 title={The top programming languages
: Our latest rankings put Python on top
-again
-[Careers
]},
791 author={Cass
, Stephen
},
792 journal={IEEE Spectrum
},
800 @inproceedings
{tanganelli2015coapthon
,
801 title={CoAPthon
: Easy development of CoAP
-based IoT applications with Python
},
802 author={Tanganelli
, Giacomo and Vallati
, Carlo and Mingozzi
, Enzo
},
803 booktitle={2015 IEEE
2nd World Forum on Internet of Things
(WF
-IoT
)},
807 address={Milan
, Italy
}
810 @INPROCEEDINGS
{Wadler92comprehendingmonads
,
811 author = {Wadler
, Philip
},
812 title = {Comprehending Monads
},
815 publisher = {Association for Computing Machinery
},
816 address = {New York
, NY
, USA
},
817 doi
= {10.1145/91556.91592},
818 abstract = {Category theorists invented monads in the
1960's to concisely express certain aspects of universal algebra. Functional programmers invented list comprehensions in the
1970's to concisely express certain programs involving lists. This paper shows how list comprehensions may be generalised to an arbitrary monad
, and how the resulting programming feature can concisely express in a pure functional language some programs that manipulate state
, handle exceptions
, parse text
, or invoke continuations. A new solution to the old problem of destructive array update is also presented. No knowledge of category theory is assumed.
},
819 booktitle = {Proceedings of the
1990 ACM Conference on LISP and Functional Programming
},
822 location
= {Nice
, France
},
826 author = {Mott Macdonald
},
827 title = "University of Glasgow Smart Campus Digital Masterplan"
,
829 note = "\url
{https
://www.gla.ac.uk
/media
/Media_702108_smxx.pdf
}"
,
833 author = "Bijan Mottahedeh"
,
834 title = "An Introduction to the io XXX uring Asynchronous I
/O Framework"
,
836 url
= "https
://blogs.oracle.com
/linux
/an
-introduction
-to
-the
-io XXX uring
-asynchronous
-io
-framework"
,
837 note = "
[Online
; accessed
13-May
-2021]"
840 @inproceedings
{10.1145/1806596.1806601,
841 author = {Lee
, Byeongcheol and Wiedermann
, Ben and Hirzel
, Martin and Grimm
, Robert and McKinley
, Kathryn S.
},
842 title = {Jinn
: Synthesizing Dynamic Bug Detectors for Foreign Language Interfaces
},
844 isbn
= {9781450300193},
845 publisher = {Association for Computing Machinery
},
846 address = {New York
, NY
, USA
},
847 doi
= {10.1145/1806596.1806601},
848 abstract = {Programming language specifications mandate static and dynamic analyses to preclude syntactic and semantic errors. Although individual languages are usually well
-specified
, composing languages is not
, and this poor specification is a source of many errors in multilingual programs. For example
, virtually all Java programs compose Java and C using the Java Native Interface
(JNI
). Since JNI is informally specified
, developers have difficulty using it correctly
, and current Java compilers and virtual machines
(VMs
) inconsistently check only a subset of JNI constraints.This paper's most significant contribution is to show how to synthesize dynamic analyses from state machines to detect foreign function interface
(FFI
) violations. We identify three classes of FFI constraints encoded by eleven state machines that capture thousands of JNI and Python
/C FFI rules. We use a mapping function to specify which state machines
, transitions
, and program entities
(threads
, objects
, references
) to check at each FFI call and return. From this function
, we synthesize a context
-specific dynamic analysis to find FFI bugs. We build bug detection tools for JNI and Python
/C using this approach. For JNI
, we dynamically and transparently interpose the analysis on Java and C language transitions through the JVM tools interface. The resulting tool
, called Jinn
, is compiler and virtual machine independent. It detects and diagnoses a wide variety of FFI bugs that other tools miss. This approach greatly reduces the annotation burden by exploiting common FFI constraints
: whereas the generated Jinn code is
22,000+ lines
, we wrote only
1,400 lines of state machine and mapping code. Overall
, this paper lays the foundation for a more principled approach to developing correct multilingual software and a more concise and automated approach to FFI specification.
},
849 booktitle = {Proceedings of the
31st ACM SIGPLAN Conference on Programming Language Design and Implementation
},
852 keywords = {dynamic analysis
, multilingual programs
, foreign function interfaces
(FFI
), python
/C
, java native interface
(jni
), specification
, specification generation
, ffi bugs
},
853 location
= {Toronto
, Ontario
, Canada
},
860 author = {Lee
, Byeongcheol and Wiedermann
, Ben and Hirzel
, Martin and Grimm
, Robert and McKinley
, Kathryn S.
},
861 title = {Jinn
: Synthesizing Dynamic Bug Detectors for Foreign Language Interfaces
},
863 issue_date
= {June
2010},
864 publisher = {Association for Computing Machinery
},
865 address = {New York
, NY
, USA
},
869 doi
= {10.1145/1809028.1806601},
870 abstract = {Programming language specifications mandate static and dynamic analyses to preclude syntactic and semantic errors. Although individual languages are usually well
-specified
, composing languages is not
, and this poor specification is a source of many errors in multilingual programs. For example
, virtually all Java programs compose Java and C using the Java Native Interface
(JNI
). Since JNI is informally specified
, developers have difficulty using it correctly
, and current Java compilers and virtual machines
(VMs
) inconsistently check only a subset of JNI constraints.This paper's most significant contribution is to show how to synthesize dynamic analyses from state machines to detect foreign function interface
(FFI
) violations. We identify three classes of FFI constraints encoded by eleven state machines that capture thousands of JNI and Python
/C FFI rules. We use a mapping function to specify which state machines
, transitions
, and program entities
(threads
, objects
, references
) to check at each FFI call and return. From this function
, we synthesize a context
-specific dynamic analysis to find FFI bugs. We build bug detection tools for JNI and Python
/C using this approach. For JNI
, we dynamically and transparently interpose the analysis on Java and C language transitions through the JVM tools interface. The resulting tool
, called Jinn
, is compiler and virtual machine independent. It detects and diagnoses a wide variety of FFI bugs that other tools miss. This approach greatly reduces the annotation burden by exploiting common FFI constraints
: whereas the generated Jinn code is
22,000+ lines
, we wrote only
1,400 lines of state machine and mapping code. Overall
, this paper lays the foundation for a more principled approach to developing correct multilingual software and a more concise and automated approach to FFI specification.
},
871 journal = {SIGPLAN Not.
},
875 keywords = {specification generation
, specification
, python
/C
, dynamic analysis
, multilingual programs
, java native interface
(jni
), foreign function interfaces
(FFI
), ffi bugs
}
877 @inproceedings
{10.1145/1065010.1065019,
878 author = {Furr
, Michael and Foster
, Jeffrey S.
},
879 title = {Checking Type Safety of Foreign Function Calls
},
882 publisher = {Association for Computing Machinery
},
883 address = {New York
, NY
, USA
},
884 doi
= {10.1145/1065010.1065019},
885 abstract = {We present a multi
-lingual
type inference system for checking
type safety across a foreign function interface. The goal of our system is to prevent foreign function calls from introducing
type and memory safety violations into an otherwise safe language. Our system targets OCaml's FFI to C
, which is relatively lightweight and illustrates some interesting challenges in multi
-lingual
type inference. The
type language in our system embeds OCaml types in C types and vice
-versa
, which allows us to track
type information accurately even through the foreign language
, where the original types are lost. Our system uses representational types that can model multiple OCaml types
, because C programs can observe that many OCaml types have the same physical representation. Furthermore
, because C has a low
-level view of OCaml data
, our inference system includes a dataflow analysis to track memory offsets and tag information. Finally
, our
type system includes garbage collection information to ensure that pointers from the FFI to the OCaml heap are tracked properly. We have implemented our inference system and applied it to a small set of benchmarks. Our results show that programmers do misuse these interfaces
, and our implementation has found several bugs and questionable coding practices in our benchmarks.
},
886 booktitle = {Proceedings of the
2005 ACM SIGPLAN Conference on Programming Language Design and Implementation
},
889 keywords = {dataflow analysis
, multi
-lingual
type system
, representational
type, flow
-sensitive
type system
, foreign function interface
, FFI
, multi
-lingual
type inference
, foreign function calls
, OCaml
},
890 location
= {Chicago
, IL
, USA
},
895 author = {Furr
, Michael and Foster
, Jeffrey S.
},
896 title = {Checking Type Safety of Foreign Function Calls
},
898 issue_date
= {June
2005},
899 publisher = {Association for Computing Machinery
},
900 address = {New York
, NY
, USA
},
904 doi
= {10.1145/1064978.1065019},
905 abstract = {We present a multi
-lingual
type inference system for checking
type safety across a foreign function interface. The goal of our system is to prevent foreign function calls from introducing
type and memory safety violations into an otherwise safe language. Our system targets OCaml's FFI to C
, which is relatively lightweight and illustrates some interesting challenges in multi
-lingual
type inference. The
type language in our system embeds OCaml types in C types and vice
-versa
, which allows us to track
type information accurately even through the foreign language
, where the original types are lost. Our system uses representational types that can model multiple OCaml types
, because C programs can observe that many OCaml types have the same physical representation. Furthermore
, because C has a low
-level view of OCaml data
, our inference system includes a dataflow analysis to track memory offsets and tag information. Finally
, our
type system includes garbage collection information to ensure that pointers from the FFI to the OCaml heap are tracked properly. We have implemented our inference system and applied it to a small set of benchmarks. Our results show that programmers do misuse these interfaces
, and our implementation has found several bugs and questionable coding practices in our benchmarks.
},
906 journal = {SIGPLAN Not.
},
910 keywords = {foreign function calls
, multi
-lingual
type system
, OCaml
, multi
-lingual
type inference
, flow
-sensitive
type system
, FFI
, foreign function interface
, dataflow analysis
, representational
type}
913 @inproceedings
{plamauer2017evaluation
,
914 title={Evaluation of micropython as application layer programming language on cubesats
},
915 author={Plamauer
, Sebastian and Langer
, Martin
},
916 booktitle={ARCS
2017; 30th International Conference on Architecture of Computing Systems
},
921 address={Vienna
, Austria
}
924 @inproceedings
{egyed1999automatically
,
925 title={Automatically detecting mismatches during component
-based and model
-based development
},
926 author={Egyed
, Alexander and Gacek
, Cristina
},
927 booktitle={14th IEEE International Conference on Automated Software Engineering
},
934 author = {Ravulavaru
, Arvind
},
935 isbn
= {1-78883-378-3},
937 publisher = {Packt Publishing
},
938 title = {Enterprise internet of things handbook
: build end
-to
-end IoT solutions using popular IoT platforms
},
940 address = {Birmingham
, UK
},
943 @InProceedings
{Alphonsa20
,
944 author="Alphonsa
, Mandla"
,
947 title="A Review on IOT Technology Stack
, Architecture and Its Cloud Applications in Recent Trends"
,
948 booktitle="ICCCE
2020"
,
950 publisher="Springer Singapore"
,
953 abstract="The Internet of Things
(IoT
) senses
, gather and transmit data over the internet without any human interference. This technology is a mixture of embedded technology
, network technology and information technology. On various advancement of huge network and the broadcasting of
(IoT
), wireless sensored networks are considered to be part of the huge heterogeneous network. IoT architecture is the system of various rudiments like sensored networks
, protocol
, actuators
, cloud service and layers. Internet of Things can also be called as an event
-driven model. The IOT device is connected to gateway through Radio Frequency
, LORA
-WAN
, Node MCU Pin
-out. This review paper describes all protocol stack including its types of sensors in IOT their applications in real time environment and its architecture. In this paper we come together with the two different technologies Cloud Computing and IoT to observe the most common features
, and to determine the benefits of their integration. The Cloud IoT prototype involves various applications
, research issues and challenges."
,
954 isbn
="
978-981-15-7961-5"
956 @inproceedings
{jones_clean_io
,
957 author = {Jones
, Simon B
},
958 title = {Experiences with Clean I
/O
},
960 publisher = {BCS Learning \
& Development Ltd.
},
961 address = {Swindon
, GBR
},
962 abstract = {The Clean system is a powerful functional programming tool. It contains experiments
963 in a
number of different areas of functional language design. In particular
, it has
964 a novel proposal for the
organization of input and output
, and contains impressive
965 libraries of facilities for programming graphical user interfaces.Clean I
/O is based
966 on collections of operations that act to cause side effects on multiple explicit
abstract
967 values representing physical I
/O entities
, such as files and graphical interfaces.
968 A system of unique types is used to ensure that these values are individually single
969 threaded through the program
; and the side effecting I
/O operations are therefore
970 well controlled. This approach is distinct from monadic I
/O
, which is being widely
971 adopted
; monadic I
/O schemes are based on a single
, implicit environment
, and guarantee
972 that this is single threaded.In this paper we will show that the Clean and monadic
973 approaches to I
/O merge nicely. The functionality provided by the Clean and its I
/O
974 libraries allows libraries for monadic I
/O to be implemented. The paper presents an
975 implementation of a basic I
/O monad library in Clean that can serve for future development.
976 In itself
, the fact that the monadic approach can be implemented in Clean is unsurprising.
977 However
, some interesting technical difficulties arose during implementation of the
978 monad
; these and their solutions are discussed. The opportunity to express programs
979 using the implicit environments of monadic I
/O allows us to simplify Clean programs
980 by removing some of the spaghetti
, whilst retaining the generality of the explicit
981 environments where it is the most appropriate approach.
},
982 booktitle = {Proceedings of the
1995 International Conference on Functional Programming
},
985 location
= {Glasgow
, UK
},
989 @inproceedings
{sivieri2012drop
,
990 title={Drop the phone and talk to the physical world
: Programming the internet of things with Erlang
},
991 author={Sivieri
, Alessandro and Mottola
, Luca and Cugola
, Gianpaolo
},
992 booktitle={2012 Third International Workshop on Software Engineering for Sensor Network Applications
(SESENA
)},
998 @article
{chong2007secure
,
999 title={Secure web applications via automatic partitioning
},
1000 author={Chong
, Stephen and Liu
, Jed and Myers
, Andrew C and Qi
, Xin and Vikram
, Krishnaprasad and Zheng
, Lantian and Zheng
, Xin
},
1001 journal={ACM SIGOPS Operating Systems Review
},
1006 publisher={ACM New York
, NY
, USA
}
1009 @article
{zdancewic2002secure
,
1010 title={Secure program partitioning
},
1011 author={Zdancewic
, Steve and Zheng
, Lantian and Nystrom
, Nathaniel and Myers
, Andrew C
},
1012 journal={ACM Transactions on Computer Systems
(TOCS
)},
1017 publisher={ACM New York
, NY
, USA
}
1020 @article
{bhatt2012analysis
,
1021 title={Analysis of source lines of code
(SLOC
) metric
},
1022 author={Bhatt
, Kaushal and Tarey
, Vinit and Patel
, Pushpraj and Mits
, Kaushal Bhatt and Ujjain
, Datana
},
1023 journal={International Journal of Emerging Technology and Advanced Engineering
},
1028 publisher={Citeseer
}
1031 @article
{10.1145/2775050.2633367,
1032 author = {Ekblad
, Anton and Claessen
, Koen
},
1033 title = {A Seamless
, Client
-Centric Programming Model for Type Safe Web Applications
},
1035 issue_date
= {December
2014},
1036 publisher = {Association for Computing Machinery
},
1037 address = {New York
, NY
, USA
},
1041 doi
= {10.1145/2775050.2633367},
1042 abstract = {We propose a new programming model for web applications which is
(1) seamless
; one program and one language is used to produce code for both client and server
, (2) client
-centric
; the programmer takes the viewpoint of the client that runs code on the server rather than the other way around
, (3) functional and
type-safe
, and
(4) portable
; everything is implemented as a Haskell library that implicitly takes care of all networking code. Our aim is to improve the painful and error
-prone experience of today's standard development methods
, in which clients and servers are coded in different languages and communicate with each other using ad
-hoc protocols. We present the design of our library called Haste.App
, an example web application that uses it
, and discuss the implementation and the compiler technology on which it depends.
},
1043 journal = {SIGPLAN Not.
},
1047 keywords = {distributed systems
, web applications
, network communication
}
1050 @article
{jones_1992
, title={Implementing lazy functional languages on stock
1051 hardware
: the Spineless Tagless G
-machine
}, volume={2},
1052 DOI
={10.1017/S0956796800000319
}, number={2}, journal={Journal of Functional
1054 publisher={Cambridge University Press
}, author={Peyton Jones
, Simon
}, year={1992}, pages={127–
202}}
1057 @article
{domoszlai_implementing_2011
,
1058 title = {Implementing a non
-strict purely functional language in
{JavaScript
}},
1060 url
= {https
://www.researchgate.net
/profile
/Jan_Martin_Jansen2
/publication
/230607075_Implementing_a_non
-strict_purely_functional_language_in_JavaScript
/links
/53fc40190cf22f21c2f3b28a.pdf
},
1061 urldate
= {2017-05-23},
1062 journal = {Acta Universitatis Sapientiae
},
1063 author = {Domoszlai
, Laszlo and Bruel
, Eddy and Jansen
, Jan Martin
},
1066 file
= {53fc40190cf22f21c2f3b28a.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/2EVHREI3
/53fc40190cf22f21c2f3b28a.pdf
:application
/pdf
},
1068 @Inbook
{Domoszlai2013
,
1069 author={Domoszlai
, L
{\'a
}szl
{\'o
} and Kozsik
, Tam
{\'a
}s
},
1070 editor={Achten
, Peter and Koopman
, Pieter
},
1071 title={Clean Up the Web
!},
1072 bookTitle
={The Beauty of Functional Code
: Essays Dedicated to Rinus Plasmeijer on the Occasion of His
61st Birthday
},
1074 publisher={Springer Berlin Heidelberg
},
1075 address={Berlin
, Heidelberg
},
1077 abstract={Programming in Clean is much more appealing than programming in JavaScript. Therefore
, solutions that can replace JavaScript with Clean in client
-side web development are widely welcomed. This paper describes a technology for the cross
-compilation of Clean to JavaScript and for the tight integration of the generated code into a web application. Our solution is based on the iTask framework and its extension
, the so
-called Tasklets. The application server approach provides simple and easy deployment
, thus supporting rapid development. Examples are shown to illustrate how communication between the Clean and JavaScript code can be established.
},
1078 isbn
={978-3-642-40355-2},
1079 doi
={10.1007/978-3-642-40355-2_10
},
1080 url
={https
://doi.org
/10.1007/978-3-642-40355-2_10
}
1083 @inproceedings
{10.1145/3412932.3412941,
1084 author = {Staps
, Camil and van Groningen
, John and Plasmeijer
, Rinus
},
1085 title = {Lazy Interworking of Compiled and Interpreted Code for Sandboxing and Distributed Systems
},
1087 isbn
= {9781450375627},
1088 publisher = {Association for Computing Machinery
},
1089 address = {New York
, NY
, USA
},
1090 doi
= {10.1145/3412932.3412941},
1091 abstract = {More and more applications rely on the safe execution of code unknown at compile
-time
, for example in the implementation of web browsers and plugin systems. Furthermore
, these applications usually require some form of communication between the added code and its embedder
, and hence a communication channel must be set up in which values are serialized and deserialized. This paper shows that in a functional programming language we can solve these two problems at once
, if we realize that the execution of extra code is nothing more than the deserialization of a value which happens to be a function. To demonstrate this
, we describe the implementation of a serialization library for the language Clean
, which internally uses an interpreter to evaluate added code in a separate
, sandboxed environment. Remarkable is that despite the conceptual asymmetry between "host" and "interpreter"
, lazy interworking must be implemented in a highly symmetric fashion
, much akin to distributed systems. The library interworks on a low level with the native Clean program
, but has been implemented without any changes to the native runtime system. It can therefore easily be ported to other programming languages.We can use the same technique in the context of the web
, where we want to be able to share possibly lazy values between a server and a client. In this case the interpreter runs in WebAssembly in the browser and communicates seamlessly with the server
, written in Clean. We use this in the iTasks web framework to handle communication and offload computations to the client to reduce stress on the server
-side. Previously
, this framework cross
-compiled the Clean source code to JavaScript and used JSON for communication. The interpreter has a more predictable and better performance
, and integration is much simpler because it interworks on a lower level with the web server.
},
1092 booktitle = {Proceedings of the
31st Symposium on Implementation and Application of Functional Languages
},
1095 keywords = {functional programming
, sandboxing
, web
-assembly
, laziness
, interpreters
},
1096 location
= {Singapore
, Singapore
},
1100 @inproceedings
{elliott_guilt_2015
,
1101 title = {Guilt free ivory
},
1103 booktitle = {{ACM
} {SIGPLAN
} {Notices
}},
1105 author = {Elliott
, Trevor and Pike
, Lee and Winwood
, Simon and Hickey
, Pat and Bielman
, James and Sharp
, Jamey and Seidel
, Eric and Launchbury
, John
},
1108 file
= {5678351608ae125516ee79c6.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/KJMFUH7T
/5678351608ae125516ee79c6.pdf
:application
/pdf
},
1111 @inproceedings
{sawada_emfrp
:_2016
,
1112 title = {Emfrp
: a functional reactive programming language for small
-scale embedded systems
},
1113 booktitle = {Companion
{Proceedings
} of the
15th
{International
} {Conference
} on
{Modularity
}},
1115 author = {Sawada
, Kensuke and Watanabe
, Takuo
},
1118 file
= {Sawada and Watanabe
- 2016 - Emfrp a functional reactive programming language .pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/9U95ER
5P
/Sawada and Watanabe
- 2016 - Emfrp a functional reactive programming language .pdf
:application
/pdf
},
1121 @inproceedings
{lv_designing_2018
,
1122 title = {Designing of
{IoT
} {Platform
} {Based
} on
{Functional
} {Reactive
} {Pattern
}},
1123 booktitle = {2018 {International
} {Conference
} on
{Computer
} {Science
}, {Electronics
} and
{Communication
} {Engineering
} ({CSECE
} 2018)},
1124 publisher = {Atlantis Press
},
1125 author = {Lv
, Haidong and Ge
, Xiaolong and Zhu
, Hongzhi and Yuan
, Zhiwei and Wang
, Zhen and Zhu
, Yongkang
},
1127 file
= {Lv et al.
- 2018 - Designing of IoT Platform Based on Functional Reac.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/IBVT6MHW
/Lv et al.
- 2018 - Designing of IoT Platform Based on Functional Reac.pdf
:application
/pdf
},
1130 @inproceedings
{helbling_juniper
:_2016
,
1131 title = {Juniper
: a functional reactive programming language for the
{Arduino
}},
1132 booktitle = {Proceedings of the
4th
{International
} {Workshop
} on
{Functional
} {Art
}, {Music
}, {Modelling
}, and
{Design
}},
1134 author = {Helbling
, Caleb and Guyer
, Samuel Z
},
1137 file
= {Helbling and Guyer
- 2016 - Juniper a functional reactive programming languag.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/M4UWK57F
/Helbling and Guyer
- 2016 - Juniper a functional reactive programming languag.pdf
:application
/pdf
},
1140 @incollection
{wang_functional_2020
,
1142 title = {Functional
{Reactive
} {EDSL
} with
{Asynchronous
} {Execution
} for
{Resource
}-{Constrained
} {Embedded
} {Systems
}},
1143 isbn
= {978-3-030-26428-4},
1144 abstract = {This paper presents a functionalWang
, Sheng reactive embedded domain
-specific language
(EDSL
) for resource
-constrained embedded systems and its efficient execution method. In the language
, time
-varying values changes at discrete points of time rather than continuously. Combined with a mechanismWatanabe
, Takuo to let users designate the update interval of values
, it is possible to derive the minimal value
-updates required to produce the user
-desired output. Also
, the event
-driven backend asynchronously updates an input value when its value is required. In this way
, we can greatly reduce the
number of updates.
},
1145 booktitle = {Software
{Engineering
}, {Artificial
} {Intelligence
}, {Networking
} and
{Parallel
}/{Distributed
} {Computing
}},
1146 publisher = {Springer International Publishing
},
1147 author = {Wang
, Sheng and Watanabe
, Takuo
},
1148 editor = {Lee
, Roger
},
1150 doi
= {10.1007/978-3-030-26428-4_12
},
1152 file
= {Wang and Watanabe
- 2020 - Functional Reactive EDSL with Asynchronous Executi.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/5JUBWXYV
/Wang and Watanabe
- 2020 - Functional Reactive EDSL with Asynchronous Executi.pdf
:application
/pdf
},
1155 @incollection
{valliappan_towards_2020
,
1156 address = {New York
, NY
, USA
},
1157 title = {Towards
{Secure
} {IoT
} {Programming
} in
{Haskell
}},
1158 isbn
= {978-1-4503-8050-8},
1159 abstract = {IoT applications are often developed in programming languages with low
-level abstractions
, where a seemingly innocent mistake might lead to severe security vulnerabilities. Current IoT development tools make it hard to identify these vulnerabilities as they do not provide end
-to
-end guarantees about how data flows within and between appliances. In this work we present Haski
, an embedded domain specific language in Haskell
(eDSL
) for secure programming of IoT devices. Haski enables developers to write Haskell programs that generate C code without falling into many of C’s pitfalls. Haski is designed after the synchronous programming language Lustre
, and sports a backwards compatible information
-flow control extension to restrict how sensitive data is propagated and modified within the application. We present a novel eDSL design which uses recursive monadic bindings and allows a natural use of functions and pattern
-matching in Haskell to write Haski programs. To showcase Haski
, we implement a simple smart house controller where communication is done via low
-energy Bluetooth on Zephyr OS.
},
1160 booktitle = {Proceedings of the
13th
{ACM
} {SIGPLAN
} {International
} {Symposium
} on
{Haskell
}},
1161 publisher = {Association for Computing Machinery
},
1162 author = {Valliappan
, Nachiappan and Krook
, Robert and Russo
, Alejandro and Claessen
, Koen
},
1165 file
= {Valliappan et al.
- 2020 - Towards Secure IoT Programming in Haskell.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/BF6YIT2S
/Valliappan et al.
- 2020 - Towards Secure IoT Programming in Haskell.pdf
:application
/pdf
},
1168 @inproceedings
{sarkar_hailstorm_2020
,
1169 address = {New York
, NY
, USA
},
1170 series = {{PPDP
} '
20},
1171 title = {Hailstorm
: {A
} {Statically
}-{Typed
}, {Purely
} {Functional
} {Language
} for
{IoT
} {Applications
}},
1172 isbn
= {978-1-4503-8821-4},
1173 doi
= {10.1145/3414080.3414092},
1174 abstract = {With the growing ubiquity of Internet of Things
(IoT
), more complex logic is being programmed on resource
-constrained IoT devices
, almost exclusively using the C programming language. While C provides low
-level control over memory
, it lacks a
number of high
-level programming abstractions such as higher
-order functions
, polymorphism
, strong static typing
, memory safety
, and automatic memory management. We present Hailstorm
, a statically
-typed
, purely functional programming language that attempts to
address the above problem. It is a high
-level programming language with a strict typing discipline. It supports features like higher
-order functions
, tail
-recursion
, and automatic memory management
, to program IoT devices in a declarative manner. Applications running on these devices tend to be heavily dominated by I
/O. Hailstorm tracks side effects like I
/O in its
type system using resource types. This choice allowed us to explore the design of a purely functional standalone language
, in an area where it is more common to embed a functional core in an imperative shell. The language borrows the combinators of arrowized FRP
, but has discrete
-time semantics. The design of the full set of combinators is work in progress
, driven by examples. So far
, we have evaluated Hailstorm by writing standard examples from the literature
(earthquake detection
, a railway crossing system and various other clocked systems
), and also running examples on the GRiSP embedded systems board
, through generation of Erlang.
},
1175 booktitle = {Proceedings of the
22nd
{International
} {Symposium
} on
{Principles
} and
{Practice
} of
{Declarative
} {Programming
}},
1176 publisher = {Association for Computing Machinery
},
1177 author = {Sarkar
, Abhiroop and Sheeran
, Mary
},
1179 note = {event
-place
: Bologna
, Italy
},
1180 keywords = {functional programming
, compilers
, embedded systems
, IoT
},
1181 file
= {Sarkar and Sheeran
- 2020 - Hailstorm A Statically
-Typed
, Purely Functional L.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/BKFJKGQP
/Sarkar and Sheeran
- 2020 - Hailstorm A Statically
-Typed
, Purely Functional L.pdf
:application
/pdf
},
1183 @inproceedings
{10.1145/3281366.3281370,
1184 author = {Shibanai
, Kazuhiro and Watanabe
, Takuo
},
1185 title = {Distributed Functional Reactive Programming on Actor
-Based Runtime
},
1187 isbn
= {9781450360661},
1188 publisher = {Association for Computing Machinery
},
1189 address = {New York
, NY
, USA
},
1190 doi
= {10.1145/3281366.3281370},
1191 abstract = {Reactive programming over a network is a challenging task because efficient elimination of temporary violations of data flow invariants
, known as glitches
, in a distributed setting is still an open issue. In this paper
, we propose a method for constructing a distributed reactive programming system of which runtime guarantees the properties of single source glitch
-freedom and the robustness against out
-of
-order messages. Based on the method
, we developed a purely functional reactive programming language XFRP whose compiler produces Erlang code. Using some examples
, we show that the proposed method is beneficial for constructing distributed reactive applications without suffering from inconsistencies.
},
1192 booktitle = {Proceedings of the
8th ACM SIGPLAN International Workshop on Programming Based on Actors
, Agents
, and Decentralized Control
},
1195 keywords = {Distributed Functional Reactive Programming
, Erlang
, Glitch Freedom
, Synchronization
, Actor
-Based Runtime System
},
1196 location
= {Boston
, MA
, USA
},
1197 series = {AGERE
2018}
1200 @inproceedings
{suzuki_cfrp_2017
,
1201 address = {The University of The Philippines Cebu
, Cebu City
, The Philippines
},
1202 title = {{CFRP
}: {A
} {Functional
} {Reactive
} {Programming
} {Language
} for
{Small
}-{Scale
} {Embedded
} {Systems
}},
1203 isbn
= {978-981-323-406-2 978-981-323-407-9},
1204 shorttitle
= {{CFRP
}},
1205 url
= {http
://www.worldscientific.com
/doi
/abs
/10.1142/9789813234079_0001
},
1206 doi
= {10.1142/9789813234079_0001
},
1208 urldate
= {2022-03-02},
1209 booktitle = {Theory and
{Practice
} of
{Computation
}},
1210 publisher = {WORLD SCIENTIFIC
},
1211 author = {Suzuki
, Kohei and Nagayama
, Kanato and Sawada
, Kensuke and Watanabe
, Takuo
},
1215 file
= {Suzuki et al.
- 2017 - CFRP A Functional Reactive Programming Language f.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/XHPSZCJH
/Suzuki et al.
- 2017 - CFRP A Functional Reactive Programming Language f.pdf
:application
/pdf
},
1219 @inproceedings
{shibanai_distributed_2018
,
1220 address = {New York
, NY
, USA
},
1221 series = {{AGERE
} 2018},
1222 title = {Distributed
{Functional
} {Reactive
} {Programming
} on
{Actor
}-{Based
} {Runtime
}},
1223 isbn
= {978-1-4503-6066-1},
1224 doi
= {10.1145/3281366.3281370},
1225 abstract = {Reactive programming over a network is a challenging task because efficient elimination of temporary violations of data flow invariants
, known as glitches
, in a distributed setting is still an open issue. In this paper
, we propose a method for constructing a distributed reactive programming system of which runtime guarantees the properties of single source glitch
-freedom and the robustness against out
-of
-order messages. Based on the method
, we developed a purely functional reactive programming language XFRP whose compiler produces Erlang code. Using some examples
, we show that the proposed method is beneficial for constructing distributed reactive applications without suffering from inconsistencies.
},
1226 booktitle = {Proceedings of the
8th
{ACM
} {SIGPLAN
} {International
} {Workshop
} on
{Programming
} {Based
} on
{Actors
}, {Agents
}, and
{Decentralized
} {Control
}},
1227 publisher = {Association for Computing Machinery
},
1228 author = {Shibanai
, Kazuhiro and Watanabe
, Takuo
},
1230 note = {event
-place
: Boston
, MA
, USA
},
1231 keywords = {Actor
-Based Runtime System
, Distributed Functional Reactive Programming
, Erlang
, Glitch Freedom
, Synchronization
},
1233 file
= {Shibanai and Watanabe
- 2018 - Distributed Functional Reactive Programming on Act.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/UJ5IG7R4
/Shibanai and Watanabe
- 2018 - Distributed Functional Reactive Programming on Act.pdf
:application
/pdf
},
1236 @inproceedings
{nilsson_functional_2002
,
1237 address = {New York
, NY
, USA
},
1238 series = {Haskell '
02},
1239 title = {Functional
{Reactive
} {Programming
}, {Continued
}},
1240 isbn
= {1-58113-605-6},
1241 doi
= {10.1145/581690.581695},
1242 abstract = {Functional Reactive Programming
(FRP
) extends a host programming language with a notion of time flow. Arrowized FRP
(AFRP
) is a version of FRP embedded in Haskell based on the arrow combinators. AFRP is a powerful synchronous dataflow programming language with hybrid modeling capabilities
, combining advanced synchronous dataflow features with the higher
-order lazy functional abstractions of Haskell. In this paper
, we describe the AFRP programming style and our Haskell
-based implementation. Of particular interest are the AFRP combinators that support dynamic collections and continuation
-based switching. We show how these combinators can be used to express systems with an evolving structure that are difficult to model in more traditional dataflow languages.
},
1243 booktitle = {Proceedings of the
2002 {ACM
} {SIGPLAN
} {Workshop
} on
{Haskell
}},
1244 publisher = {Association for Computing Machinery
},
1245 author = {Nilsson
, Henrik and Courtney
, Antony and Peterson
, John
},
1247 note = {event
-place
: Pittsburgh
, Pennsylvania
},
1248 keywords = {functional programming
, Haskell
, domain
-specific languages
, FRP
, hybrid modeling
, synchronous dataflow languages
},
1250 file
= {Nilsson et al.
- 2002 - Functional reactive programming
, continued.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/X79J47NP
/Nilsson et al.
- 2002 - Functional reactive programming
, continued.pdf
:application
/pdf
},
1252 @inproceedings
{10.1145/2661136.2661146,
1253 author = {Philips
, Laure and De Roover
, Coen and Van Cutsem
, Tom and De Meuter
, Wolfgang
},
1254 title = {Towards Tierless Web Development without Tierless Languages
},
1256 isbn
= {9781450332101},
1257 publisher = {Association for Computing Machinery
},
1258 address = {New York
, NY
, USA
},
1259 doi
= {10.1145/2661136.2661146},
1260 abstract = {Tierless programming languages enable developing the typical server
, client and database tiers of a web application as a single mono
-linguistic program. This development style is in stark contrast to the current practice which requires combining multiple technologies and programming languages. A myriad of tierless programming languages has already been proposed
, often featuring a JavaScript
-like syntax. Instead of introducing yet another
, we advocate that it should be possible to develop tierless web applications in existing general
-purpose languages. This not only reduces the complexity that developers are exposed to
, but also precludes the need for new development tools. We concretize this novel approach to tierless programming by discussing requirements on its future instantiations. We explore the design space of the program analysis for determining and the program transformation for realizing the tier split respectively. The former corresponds to new adaptations of an old familiar
, program slicing
, for tier splitting. The latter includes several strategies for handling cross
-tier function calls and data accesses. Using a prototype instantiation for JavaScript
, we demonstrate the feasibility of our approach on an example web application. We conclude with a discussion of open questions and challenges for future research.
},
1261 booktitle = {Proceedings of the
2014 ACM International Symposium on New Ideas
, New Paradigms
, and Reflections on Programming \
& Software
},
1264 keywords = {tier splitting
, program slicing
, tierless programming
, javascript
},
1265 location
= {Portland
, Oregon
, USA
},
1266 series = {Onward
! 2014}
1269 @misc
{hess_arduino
-copilot_2020
,
1270 title = {arduino
-copilot
: {Arduino
} programming in haskell using the
{Copilot
} stream
{DSL
}},
1271 shorttitle
= {arduino
-copilot
},
1272 url
= {//hackage.haskell.org
/package
/arduino
-copilot
},
1273 urldate
= {2020-02-14},
1274 journal = {Hackage
},
1275 author = {Hess
, Joey
},
1277 file
= {Snapshot
:/home
/mrl
/.local
/share
/zotero
/storage
/PSHYKF52
/arduino
-copilot.html
:text
/html
},
1279 @INPROCEEDINGS
{5558637,
1281 author={Axelsson
, Emil and Claessen
, Koen and Dévai
, Gergely and Horváth
, Zoltán and Keijzer
, Karin and Lyckegård
, Bo and Persson
, Anders and Sheeran
, Mary and Svenningsson
, Josef and Vajdax
, András
},
1283 booktitle={Eighth ACM
/IEEE International Conference on Formal Methods and Models for Codesign
(MEMOCODE
2010)},
1285 title={Feldspar
: A domain specific language for digital signal processing algorithms
},
1295 abstract={A new language
, Feldspar
, is presented
, enabling high
-level and platform
-independent description of digital signal processing
(DSP
) algorithms. Feldspar is a pure functional language embedded in Haskell. It offers a high
-level dataflow style of programming
, as well as a more mathematical style based on vector indices. The
key to generating efficient code from such descriptions is a high
-level optimization technique called vector fusion. Feldspar is based on a low
-level
, functional core language which has a relatively small semantic gap to machine
-oriented languages like C. The core language serves as the interface to the back
-end code generator
, which produces C. For very small examples
, the generated code performs comparably to hand
-written C code when run on a DSP target. While initial results are promising
, to achieve good performance on larger examples
, issues related to memory access patterns and array copying will have to be addressed.
},
1299 doi
={10.1109/MEMCOD
.2010.5558637},
1305 @article
{sheetz2009understanding
,
1306 title={Understanding developer and manager perceptions of function points and source lines of code
},
1307 author={Sheetz
, Steven D and Henderson
, David and Wallace
, Linda
},
1308 journal={Journal of Systems and Software
},
1313 publisher={Elsevier
}
1316 @article
{fichera2017python
,
1317 title={A Python framework for programming autonomous robots using a declarative approach
},
1318 author={Fichera
, Loris and Messina
, Fabrizio and Pappalardo
, Giuseppe and Santoro
, Corrado
},
1319 journal={Science of Computer Programming
},
1323 publisher={Elsevier
}
1326 @inproceedings
{balat2006ocsigen
,
1327 title={Ocsigen
: Typing web interaction with objective caml
},
1328 author={Balat
, Vincent
},
1329 booktitle={Proceedings of the
2006 Workshop on ML
},
1334 @inproceedings
{bjornson2010composing
,
1335 title={Composing reactive GUIs in F\# using WebSharper
},
1336 author={Bjornson
, Joel and Tayanovskyy
, Anton and Granicz
, Adam
},
1337 booktitle={Symposium on Implementation and Application of Functional Languages
},
1340 organization={Springer
}
1343 @book
{strack2015getting
,
1344 title={Getting Started with Meteor. js JavaScript Framework
},
1345 author={Strack
, Isaac
},
1347 publisher={Packt Publishing Ltd
}
1350 @incollection
{hall1993glasgow
,
1351 title={The Glasgow Haskell compiler
: a retrospective
},
1352 author={Hall
, Cordelia and Hammond
, Kevin and Partain
, Will and Peyton Jones
, Simon L and Wadler
, Philip
},
1353 booktitle={Functional Programming
, Glasgow
1992},
1356 publisher={Springer
}
1360 title = "MicroPython Differences from CPython"
,
1361 author = {{Micropython Team
}},
1363 note = "https
://docs.micropython.org
/en
/latest
/genrst
/index.html"
,
1366 @article
{weisenburger2020survey
,
1367 title={A survey of multitier programming
},
1368 author={Weisenburger
, Pascal and Wirth
, Johannes and Salvaneschi
, Guido
},
1369 journal={ACM Computing Surveys
(CSUR
)},
1374 publisher={ACM New York
, NY
, USA
}
1377 @inproceedings
{203628,
1378 author = {Manos Antonakakis and Tim April and Michael Bailey and Matt Bernhard and Elie Bursztein and Jaime Cochran and Zakir Durumeric and J. Alex Halderman and Luca Invernizzi and Michalis Kallitsis and Deepak Kumar and Chaz Lever and Zane Ma and Joshua Mason and Damian Menscher and Chad Seaman and Nick Sullivan and Kurt Thomas and Yi Zhou
},
1379 title = {Understanding the Mirai Botnet
},
1380 booktitle = {26th USENIX Security Symposium
(USENIX Security
17)},
1382 isbn
= {978-1-931971-40-9},
1383 address = {Vancouver
, BC
},
1384 pages = {1093--1110},
1385 url
= {https
://www.usenix.org
/conference
/usenixsecurity17
/technical
-sessions
/presentation
/antonakakis
},
1386 publisher = {USENIX Association
},
1390 @inproceedings
{herwig_measurement_2019
,
1391 address = {San Diego
, CA
, USA
},
1392 title = {Measurement and
{Analysis
} of
{Hajime
}, a
{Peer
}-to
-peer
{IoT
} {Botnet
}},
1393 isbn
= {1-891562-55-X
},
1394 url
= {https
://par.nsf.gov
/biblio
/10096257},
1395 doi
= {10.14722/ndss
.2019.23488},
1396 booktitle = {Network and
{Distributed
} {Systems
} {Security
} ({NDSS
}) {Symposium
} 2019},
1397 author = {Herwig
, Stephen and Harvey
, Katura and Hughey
, George and Roberts
, Richard and Levin
, Dave
},
1400 file
= {Herwig et al.
- Measurement and Analysis of Hajime
, a Peer
-to
-peer.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/YFB8C8CU
/Herwig et al.
- Measurement and Analysis of Hajime
, a Peer
-to
-peer.pdf
:application
/pdf
},
1402 @phdthesis
{wijkhuizen_security_2018
,
1403 address = {Nijmegen
},
1404 type = {Bachelor's
{Thesis
}},
1405 title = {Security analysis of the
{iTasks
} framework
},
1406 url
= {http
://www.ru.nl
/publish
/pages/769526/arjan_oortgiese.pdf
},
1407 language
= {English
},
1408 urldate
= {2017-04-08},
1409 school = {Radboud University
},
1410 author = {Wijkhuizen
, Mark
},
1412 file
= {Wijkhuizen
- 2018 - Security analysis of the iTasks framework.pdf
:/home
/mrl
/.local
/share
/zotero
/storage
/AWFT6PGL
/Wijkhuizen
- 2018 - Security analysis of the iTasks framework.pdf
:application
/pdf
},
1414 @inproceedings
{Steenvoorden2019tophat
,
1415 author = {Steenvoorden
, Tim and Naus
, Nico and Klinik
, Markus
},
1416 title = {TopHat
: A Formal Foundation for Task
-Oriented Programming
},
1418 isbn
= {9781450372497},
1419 publisher = {Association for Computing Machinery
},
1420 address = {New York
, NY
, USA
},
1421 doi
= {10.1145/3354166.3354182},
1422 booktitle = {Proceedings of the
21st International Symposium on Principles and Practice of Declarative Programming
},
1425 location
= {Porto
, Portugal
},