514 research outputs found

    The essence of component-based design and coordination

    Full text link
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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
    • …
    corecore