514 research outputs found
The essence of component-based design and coordination
Is there a characteristic of coordination languages that makes them
qualitatively different from general programming languages and deserves special
academic attention? This report proposes a nuanced answer in three parts. The
first part highlights that coordination languages are the means by which
composite software applications can be specified using components that are only
available separately, or later in time, via standard interfacing mechanisms.
The second part highlights that most currently used languages provide
mechanisms to use externally provided components, and thus exhibit some
elements of coordination. However not all do, and the availability of an
external interface thus forms an objective and qualitative criterion that
distinguishes coordination. The third part argues that despite the qualitative
difference, the segregation of academic attention away from general language
design and implementation has non-obvious cost trade-offs.Comment: 8 pages, 2 figures, 3 table
Compiling functional kernels into graph intermediate code for Maxeler architecture
A new method for programming Maxeler's dataflow engines is presented. The existing tools allow programmers to program dataflow engines in Java. We belive that functional programming languages might provide a more suitable alternative.
We define a new programming language called MaxHs for programming dataflow engine kernels. In addition, we present a way of interfacing MaxHs programs with programs written in Haskell. With the help of simple example programs we compare our solution with existing tools.
In the last part we present a method for compiling MaxHs into a graph-based intermediate code. The elements of the intermediate code are based on the nodes supported by Maxeler's dataflow engines. We also outline how the support for interfacing with Haskell is achieved
Guppy: Process-Oriented Programming on Embedded Devices
Guppy is a new and experimental process-oriented programming language, taking much inspiration (and some code-base) from the existing occam-pi language. This paper reports on a variety of aspects related to this, specifically language, compiler and run-time system development, enabling Guppy programs to run on desktop and embedded systems. A native code-generation approach is taken, using C as the intermediate language, and with stack-space requirements determined at compile-time
An Analysis of Scripting Languages for Research in Applied Computing
There are several scripting languages that exist
today. However, some are used more frequently and popular
than others. This is due to certain characteristics and features
that they possess. Particularly in applied computing fields like
software engineering, bioinformatics and computational biology,
scripting languages are gaining popularity. This paper presents a
comparative study of ten popular scripting languages that are
used in the above mentioned fields/area. For making comparison,
we have identified the factors against which these languages are
evaluated. Accordingly, based on selected criteria we determine
their suitability in the fields of software engineering,
bioinformatics and computational biology research. This will
serve as a guide to researchers to choose the appropriate
scripting language in the various fields
VUI Design
This project examines voice-based user interfaces (VUI) for information systems and the design challenges that they present. The architecture of a voice activated information system is complex and understanding human speech is no small task for a machine. However, the ability to identify the spoken word and produce text is largely a utility today; available freely in open source projects or baked into popular platforms. Thus, software developers find themselves with the means to build into their solutions another dimension of input mechanisms should they be able to wield it. To explore the design challenges that must be overcome once an application has finished listening, this project relies on two experiments to provide insight into how domain and context shape natural language understanding and drive human interactions by a machine. In the process, implications for future systems and potential interactions will be uncovered and discussed
An empirical evaluation of High-Level Synthesis languages and tools for database acceleration
High Level Synthesis (HLS) languages and tools are emerging as the most promising technique to make FPGAs more accessible to software developers. Nevertheless, picking the most suitable HLS for a certain class of algorithms depends on requirements such as area and throughput, as well as on programmer experience. In this paper, we explore the different trade-offs present when using a representative set of HLS tools in the context of Database Management Systems (DBMS) acceleration. More specifically, we conduct an empirical analysis of four representative frameworks (Bluespec SystemVerilog, Altera OpenCL, LegUp and Chisel) that we utilize to accelerate commonly-used database algorithms such as sorting, the median operator, and hash joins. Through our implementation experience and empirical results for database acceleration, we conclude that the selection of the most suitable HLS depends on a set of orthogonal characteristics, which we highlight for each HLS framework.Peer ReviewedPostprint (author’s final draft
- …