Programming Languages

  1. Simplifying Complex Software Assembly: The Component Retrieval Language and Implementation.

    Authors: Gabrielle Allen, Frank Löffler, Erik Schnetter, Eric L. Seidel, Steven Brandt
    Subjects: Programming Languages
    Abstract

    Assembling simulation software along with the associated tools and utilities
    is a challenging endeavor, particularly when the components are distributed
    across multiple source code versioning systems. It is problematic for
    researchers compiling and running the software across many different
    supercomputers, as well as for novices in a field who are often presented with
    a bewildering list of software to collect and install. In this paper, we
    describe a language (CRL) for specifying software components with the details
    needed to obtain them from source code repositories.

  2. Towards a Property Preserving Transformation from IEC 61131-3 to BIP.

    Authors: Jan Olaf Blech, Anton Hattendorf, Jia Huang
    Subjects: Programming Languages
    Abstract

    We report on a transformation from Sequential Function Charts of the IEC
    61131-3 standard to BIP. Our presentation features a description of formal
    syntax and semantics representation of the involved languages and
    transformation rules. Furthermore, we present a formalism for describing
    invariants of IEC 61131-3 systems and establish a notion of invariant
    preservation between the two languages. For a subset of our transformation
    rules we sketch a proof showing invariant preservation during the
    transformation of IEC 61131-3 to BIP and vice versa.

  3. Comparative Studies of 10 Programming Languages within 10 Diverse Criteria -- a Team 7 COMP6411-S10 Term Report.

    Authors: Sleiman Rabah, Jiang Li, Mingzhi Liu, Yuanwei Lai
    Subjects: Programming Languages
    Abstract

    There are many programming languages in the world today.Each language has
    their advantage and disavantage. In this paper, we will discuss ten programming
    languages: C++, C#, Java, Groovy, JavaScript, PHP, Schalar, Scheme, Haskell and
    AspectJ. We summarize and compare these ten languages on ten different
    criterion. For example, Default more secure programming practices, Web
    applications development, OO-based abstraction and etc. At the end, we will
    give our conclusion that which languages are suitable and which are not for
    using in some cases.

  4. Comparing Selected Criteria of Programming Languages Java, PHP, C++, Perl, Haskell, AspectJ, Ruby, COBOL, Bash Scripts and Scheme Revision 1.0 - a Team CPLgroup COMP6411-S10 Term Report.

    Authors: Sultan S. Al-Qahtani, Pawel Pietrzynski, Luis F. Guzman, Rafik Arif, Adrien Tevoedjre
    Subjects: Programming Languages
    Abstract

    Comparison of programming languages is a common topic of discussion among
    software engineers. Few languages ever become sufficiently popular that they
    are used by more than a few people or find their niche in research or
    education; but professional programmers can easily use dozens of different
    languages during their career. Multiple programming languages are designed,
    specified, and implemented every year in order to keep up with the changing
    programming paradigms, hardware evolution, etc.

  5. Comparative study of the Pros and Cons of Programming languages Java, Scala, C++, Haskell, VB .NET, AspectJ, Perl, Ruby, PHP & Scheme - a Team 11 COMP6411-S10 Term Report.

    Authors: Venkatreddy Dwarampudi, Shahbaz Singh Dhillon, Jivitesh Shah, Nikhil Joseph Sebastian, Nitin Kanigicharla
    Subjects: Programming Languages
    Abstract

    With the advent of numerous languages it is difficult to realize the edge of
    one language in a particular scope over another one. We are making an effort,
    realizing these few issues and comparing some main stream languages like Java,
    Scala, C++, Haskell, VB .NET, AspectJ, Perl, Ruby, PHP and Scheme keeping in
    mind some core issues in program development.

  6. scriptJ(TM) extension of Java(R): discretionary, adaptive concurrency for privacy-friendly, client-cloud computing.

    Authors: Carl Hewitt
    Subjects: Programming Languages
    Abstract

    scriptJ(TM) is a general purpose programming language for implementing
    discretionary, adaptive concurrency that manages resources and demand. It is
    differentiated from other concurrent languages by the following: - Universality
    o Everything in the language is accomplished using message passing including
    the very definition of scriptJ itself. o Directly express discretionary push
    and pull concurrency o Functional and Logic Programming are integrated into
    general concurrent programming.

  7. Positive Supercompilation for a Higher-Order Call-By-Value Language.

    Authors: Peter A. Jonsson, Johan Nordlander
    Subjects: Programming Languages
    Abstract

    Previous deforestation and supercompilation algorithms may introduce
    accidental termination when applied to call-by-value programs. This hides
    looping bugs from the programmer, and changes the behavior of a program
    depending on whether it is optimized or not. We present a supercompilation
    algorithm for a higher-order call-by-value language and prove that the
    algorithm both terminates and preserves termination properties. This algorithm
    utilizes strictness information to decide whether to substitute or not and
    compares favorably with previous call-by-name transformations.

  8. Actor Model for Discretionary, Adaptive Concurrency.

    Authors: Carl Hewitt
    Subjects: Programming Languages
    Abstract

    The Actor model is a mathematical theory that treats "Actors" as the
    universal primitives of concurrent digital computation. The model has been used
    both as a framework for a theoretical understanding of concurrency, and as the
    theoretical basis for several practical implementations of concurrent systems.

  9. A Heuristic Algorithm for optimizing Page Selection Instructions.

    Authors: Qing'an Li, Yanxiang He, Yong Chen, Wei Wu, Wenwen Xu
    Subjects: Programming Languages
    Abstract

    Page switching is a technique that increases the memory in microcontrollers
    without extending the address buses. This technique is widely used in the
    design of 8-bit MCUs. In this paper, we present an algorithm to reduce the
    overhead of page switching. To pursue small code size, we place the emphasis on
    the allocation of functions into suitable pages with a heuristic algorithm,
    thereby the cost-effective placement of page selection instructions. Our
    experimental results showed the optimization achieved a reduction in code size
    of 13.2 percent.

  10. Test Case Generation for Object-Oriented Imperative Languages in CLP.

    Authors: Miguel Gómez-Zamalloa, Elvira Albert, Germán Puebla
    Subjects: Programming Languages
    Abstract

    Testing is a vital part of the software development process. Test Case
    Generation (TCG) is the process of automatically generating a collection of
    test cases which are applied to a system under test. White-box TCG is usually
    performed by means of symbolic execution, i.e., instead of executing the
    program on normal values (e.g., numbers), the program is executed on symbolic
    values representing arbitrary values.

  11. CREOLE: a Universal Language for Creating, Requesting, Updating and Deleting Resources.

    Authors: Mayleen Lacouture, Hervé Grall, Thomas Ledoux
    Subjects: Programming Languages
    Abstract

    In the context of Service-Oriented Computing, applications can be developed
    following the REST (Representation State Transfer) architectural style. This
    style corresponds to a resource-oriented model, where resources are manipulated
    via CRUD (Create, Request, Update, Delete) interfaces. The diversity of CRUD
    languages due to the absence of a standard leads to composition problems
    related to adaptation, integration and coordination of services.

  12. Catching the Ouroboros: On Debugging Non-ground Answer-Set Programs.

    Authors: Hans Tompits, Johannes Oetsch, Jörg Pührer
    Subjects: Programming Languages
    Abstract

    An important issue towards a broader acceptance of answer-set programming
    (ASP) is the deployment of tools which support the programmer during the coding
    phase. In particular, methods for debugging an answer-set program are
    recognised as a crucial step in this regard. Initial work on debugging in ASP
    mainly focused on propositional programs, yet practical debuggers need to
    handle programs with variables as well. In this paper, we discuss a debugging
    technique that is directly geared towards non-ground programs.

  13. Algorithmic Verification of Single-Pass List Processing Programs.

    Authors: Rajeev Alur, Pavol Cerny
    Subjects: Programming Languages
    Abstract

    We identify a class of programs manipulating lists of data items for which
    checking functional equivalence and pre/post verification conditions is
    decidable. Lists are modeled as data words, (unbounded) sequences of data
    values, tagged with symbols from a finite set, over a potentially infinite data
    domain that supports only the operations of equality and ordering. First, we
    introduce streaming data-word transducers that map input data words to output
    data words in a single left-to-right pass in linear time.

  14. Pushdown Control-Flow Analysis of Higher-Order Programs.

    Authors: Christopher Earl, Matthew Might, David Van Horn
    Subjects: Programming Languages
    Abstract

    Context-free approaches to static analysis gain precision over classical
    approaches by perfectly matching returns to call sites---a property that
    eliminates spurious interprocedural paths. Vardoulakis and Shivers's recent
    formulation of CFA2 showed that it is possible (if expensive) to apply
    context-free methods to higher-order languages and gain the same boost in
    precision achieved over first-order programs.

  15. CHR(PRISM)-based Probabilistic Logic Learning.

    Authors: Jon Sneyers, Wannes Meert, Joost Vennekens, Yoshitaka Kameya, Taisuke Sato
    Subjects: Programming Languages
    Abstract

    PRISM is an extension of Prolog with probabilistic predicates and built-in
    support for expectation-maximization learning. Constraint Handling Rules (CHR)
    is a high-level programming language based on multi-headed multiset rewrite
    rules.

  16. Applying Prolog to Develop Distributed Systems.

    Authors: Andrey Rybalchenko, Nuno P. Lopes, Juan A. Navarro, Atul Singh
    Subjects: Programming Languages
    Abstract

    Development of distributed systems is a difficult task. Declarative
    programming techniques hold a promising potential for effectively supporting
    programmer in this challenge. While Datalog-based languages have been actively
    explored for programming distributed systems, Prolog received relatively little
    attention in this application area so far. In this paper we present a
    Prolog-based programming system, called DAHL, for the declarative development
    of distributed systems. DAHL extends Prolog with an event-driven control
    mechanism and built-in networking procedures.

  17. Sawja: Static Analysis Workshop for Java.

    Authors: Laurent Hubert, Nicolas Barré, Frédéric Besson, Delphine Demange, Thomas Jensen, Vincent Monfort, David Pichardie, Tiphaine Turpin
    Subjects: Programming Languages
    Abstract

    Static analysis is a powerful technique for automatic verification of
    programs but raises major engineering challenges when developing a full-fledged
    analyzer for a realistic language such as Java. This paper describes the Sawja
    library: a static analysis framework fully compliant with Java 6 which provides
    OCaml modules for efficiently manipulating Java bytecode programs.

  18. Multi-Level Languages are Generalized Arrows.

    Authors: Adam Megacz
    Subjects: Programming Languages
    Abstract

    The lambda calculus, subject to typing restrictions, provides a syntax for
    the internal language of cartesian closed categories. This paper establishes a
    parallel result: staging annotations, subject to named level restrictions,
    provide a syntax for the internal language of (the codomain of) a functor which
    preserves a premonoidal enrichment. Such functors are uniquely determined by
    functors from an {\it enriching} category to an {\it enriched} category. An
    equational axiomatization for the latter form is given, and Arrows are shown to
    constitute a special case.

  19. Comparative Studies of Programming Languages; Course Lecture Notes.

    Authors: Joey Paquet, Serguei A. Mokhov
    Subjects: Programming Languages
    Abstract

    Lecture notes for the Comparative Studies of Programming Languages course,
    COMP6411, taught at the Department of Computer Science and Software
    Engineering, Faculty of Engineering and Computer Science, Concordia University,
    Montreal, QC, Canada. These notes include a compiled book of primarily related
    articles from the Wikipedia, the Free Encyclopedia, as well as Comparative
    Programming Languages book and other resources, including our own. The original
    notes were compiled by Dr. Paquet.

  20. Proceedings Eighth Workshop on Quantitative Aspects of Programming Languages.

    Authors: Gethin Norman, Alessandra Di Pierro
    Subjects: Programming Languages
    Abstract

    This volume contains the proceedings of the Eighth Workshop on Quantitative
    Aspects of Programming Languages (QAPL 2010), held in Paphos, Cyprus, on March
    27-28, 2010. QAPL 2010 is a satellite event of the European Joint Conferences
    on Theory and Practice of Software (ETAPS 2010).

  21. Reflection and Hyper-Programming in Persistent Programming Systems.

    Authors: Graham Kirby
    Subjects: Programming Languages
    Abstract

    The work presented in this thesis seeks to improve programmer productivity in
    the following ways:

    - by reducing the amount of code that has to be written to construct an
    application;

    - by increasing the reliability of the code written; and

  22. Orthogonal Persistence Revisited.

    Authors: Graham Kirby, Alan Dearle, Ron Morrison
    Subjects: Programming Languages
    Abstract

    The social and economic importance of large bodies of programs and data that
    are potentially long-lived has attracted much attention in the commercial and
    research communities. Here we concentrate on a set of methodologies and
    technologies called persistent programming. In particular we review programming
    language support for the concept of orthogonal persistence, a technique for the
    uniform treatment of objects irrespective of their types or longevity.

  23. Abstract Fixpoint Computations with Numerical Acceleration Methods.

    Authors: Alexandre Chapoutot, Olivier Bouissou, Yassamine Seladji
    Subjects: Programming Languages
    Abstract

    Static analysis by abstract interpretation aims at automatically proving
    properties of computer programs. To do this, an over-approximation of program
    semantics, defined as the least fixpoint of a system of semantic equations,
    must be computed. To enforce the convergence of this computation, widening
    operator is used but it may lead to coarse results. We propose a new method to
    accelerate the computation of this fixpoint by using standard techniques of
    numerical analysis. Our goal is to automatically and dynamically adapt the
    widening operator in order to maintain precision.

  24. Introduction to the Report "Interlanguages and Synchronic Models of Computation.".

    Authors: Alexander Victor Berka
    Subjects: Programming Languages
    Abstract

    A novel language system has given rise to promising alternatives to standard
    formal and processor network models of computation. An interstring linked with
    a abstract machine environment, shares sub-expressions, transfers data, and
    spatially allocates resources for the parallel evaluation of dataflow. Formal
    models called the a-Ram family are introduced, designed to support interstring
    programming languages (interlanguages). Distinct from dataflow, graph
    rewriting, and FPGA models, a-Ram instructions are bit level and execute in
    situ.

  25. Parametrizing Program Analysis by Lifting to Cardinal Power Domains.

    Authors: Lunjin Lu
    Subjects: Programming Languages
    Abstract

    A parametric analysis is an analysis whose input and output are parametrized
    with a number of parameters which can be instantiated to abstract properties
    after analysis is completed. This paper proposes to use Cousot and Cousot's
    Cardinal power domain to capture functional dependencies of analysis output on
    its input and obtain a parametric analysis by parametrizing a non-parametric
    base analysis. We illustrate the method by parametrizing a $\pos$ based
    groundness analysis of logic programs to a parametric groundness analysis.

  26. Programming Discrete Physical Systems.

    Authors: Hermann von Issendorff
    Subjects: Programming Languages
    Abstract

    Every algorithm which can be executed on a computer can at least in principle
    be realized in hardware, i.e. by a discrete physical system. The problem is
    that up to now there is no programming language by which physical systems can
    constructively be described. Such tool, however, is essential for the compact
    description and automatic production of complex systems. This paper introduces
    a programming language, called Akton-Algebra, which provides the foundation for
    the complete description of discrete physical systems.

  27. Compiling Signal Processing Code embedded in Haskell via LLVM.

    Authors: Henning Thielemann
    Subjects: Programming Languages
    Abstract

    We discuss a programming language for real-time audio signal processing that
    is embedded in the functional language Haskell and uses the Low-Level Virtual
    Machine as back-end. With that framework we can code with the comfort and type
    safety of Haskell while achieving maximum efficiency of fast inner loops and
    full vectorisation. This way Haskell becomes a valuable alternative to special
    purpose signal processing languages.

  28. Operator-oriented programming: a new paradigm for implementing window interfaces and parallel algorithms.

    Authors: Pavel Ruzankin
    Subjects: Programming Languages
    Abstract

    We present a new programming paradigm which can be useful, in particular, for
    implementing window interfaces and parallel algorithms. This paradigm allows a
    user to define operators which can contain nested operators. The new paradigm
    is called operator-oriented. One of the goals of this paradigm is to escape the
    complexity of objects definitions inherent in many object-oriented languages
    and to move to transparent algorithms definitions.

  29. Automated Verification of Practical Garbage Collectors.

    Authors: Chris Hawblitzel, Erez Petrank
    Subjects: Programming Languages
    Abstract

    Garbage collectors are notoriously hard to verify, due to their low-level
    interaction with the underlying system and the general difficulty in reasoning
    about reachability in graphs. Several papers have presented verified
    collectors, but either the proofs were hand-written or the collectors were too
    simplistic to use on practical applications. In this work, we present two
    mechanically verified garbage collectors, both practical enough to use for
    real-world C# benchmarks.

  30. Refinement type inference via abstract interpretation.

    Authors: Ranjit Jhala, Rupak Majumdar, Andrey Rybalchenko
    Subjects: Programming Languages
    Abstract

    Refinement Types are a promising approach for checking behavioral properties
    of programs written using advanced language features like higher-order
    functions, parametric polymorphism and recursive datatypes. The main limitation
    of refinement type systems to date is the requirement that the programmer
    provides the types of all functions, after which the type system can check the
    types and hence, verify the program. In this paper, we show how to
    automatically infer refinement types, using existing abstract interpretation
    tools for imperative programs.

  31. Liberalizing Dependency.

    Authors: Avik Chaudhuri
    Subjects: Programming Languages
    Abstract

    The dependency core calculus (DCC), a simple extension of the computational
    lambda calculus, captures a common notion of dependency that arises in many
    programming language settings. This notion of dependency is closely related to
    the notion of information flow in security; it is sensitive not only to data
    dependencies that cause explicit flows, but also to control dependencies that
    cause implicit flows. In this paper, we study variants of DCC in which the data
    and control dependencies are decoupled.

  32. The Automatic Synthesis of Linear Ranking Functions: The Complete Unabridged Version.

    Authors: Roberto Bagnara, Fred Mesnard, Andrea Pescetti, Enea Zaffanella
    Subjects: Programming Languages
    Abstract

    The classical technique for proving termination of a generic sequential
    computer program involves the synthesis of a ranking function for each loop of
    the program. Linear ranking functions are particularly interesting because many
    terminating loops admit one and algorithms exist to automatically synthesize
    it.

  33. Interval Slopes as Numerical Abstract Domain for Floating-Point Variables.

    Authors: Alexandre Chapoutot
    Subjects: Programming Languages
    Abstract

    The design of embedded control systems is mainly done with model-based tools
    such as Matlab/Simulink. Numerical simulation is the central technique of
    development and verification of such tools. Floating-point arithmetic, that is
    well-known to only provide approximated results, is omnipresent in this
    activity. In order to validate the behaviors of numerical simulations using
    abstract interpretation-based static analysis, we present, theoretically and
    with experiments, a new relational abstract domain dedicated to floating-point
    variables.

  34. Proceedings Tenth International Workshop on Rule-Based Programming.

    Authors: Ian Mackie, Anamaria Martins Moreira
    Subjects: Programming Languages
    Abstract

    This volume contains the proceedings of RULE 2009: the tenth International
    Workshop on Rule-Based Programming. It took place in June 28th 2009, Brasilia,
    Brazil, as a satellite event of RDP 2009. The first Rule workshop was held in
    Montreal in 2000, and subsequent editions took place in Firenze, Pittsburgh,
    Valencia, Aachen, Nara, Seattle, Paris, and Hagenberg.

  35. Lazy Evaluation and Delimited Control.

    Authors: Ronald Garcia, Andrew Lumsdaine, Amr Sabry
    Subjects: Programming Languages
    Abstract

    The call-by-need lambda calculus provides an equational framework for
    reasoning syntactically about lazy evaluation. This paper examines its
    operational characteristics.

    By a series of reasoning steps, we systematically unpack the standard-order
    reduction relation of the calculus and discover a novel abstract machine
    definition which, like the calculus, goes "under lambdas." We prove that
    machine evaluation is equivalent to standard-order evaluation.

  36. The RDF Virtual Machine.

    Authors: Marko A. Rodriguez
    Subjects: Programming Languages
    Abstract

    The Resource Description Framework (RDF) is a semantic network data model
    that is used to create machine-understandable descriptions of the world and is
    the basis of the Semantic Web. This article discusses the application of RDF to
    the representation of computer software and virtual computing machines. The
    Semantic Web is posited as not only a web of data, but also as a web of
    programs and processes.

  37. Implementing Multi-Periodic Critical Systems: from Design to Code Generation.

    Authors: Julien Forget, Frédéric Boniol, David Lesens, Claire Pagetti
    Subjects: Programming Languages
    Abstract

    This article presents a complete scheme for the development of Critical
    Embedded Systems with Multiple Real-Time Constraints. The system is programmed
    with a language that extends the synchronous approach with high-level real-time
    primitives. It enables to assemble in a modular and hierarchical manner several
    locally mono-periodic synchronous systems into a globally multi-periodic
    synchronous system. It also allows to specify flow latency constraints. A
    program is translated into a set of real-time tasks.

  38. The C Object System: Using C as a High-Level Object-Oriented Language.

    Authors: Laurent Deniau
    Subjects: Programming Languages
    Abstract

    The C Object System (Cos) is a small C library which implements high-level
    concepts available in Clos, Objc and other object-oriented programming
    languages: uniform object model (class, meta-class and property-metaclass),
    generic functions, multi-methods, delegation, properties, exceptions, contracts
    and closures. Cos relies on the programmable capabilities of the C programming
    language to extend its syntax and to implement the aforementioned concepts as
    first-class objects.

  39. Polychronous Interpretation of Synoptic, a Domain Specific Modeling Language for Embedded Flight-Software.

    Authors: L. Besnard, T. Gautier, J. Ouy, J.-P. Talpin, J.-P. Bodeveix, A. Cortier, M. Pantel, M. Strecker, G. Garcia, A. Rugina, J. Buisson, F. Dagnat
    Subjects: Programming Languages
    Abstract

    The SPaCIFY project, which aims at bringing advances in MDE to the satellite
    flight software industry, advocates a top-down approach built on a
    domain-specific modeling language named Synoptic. In line with previous
    approaches to real-time modeling such as Statecharts and Simulink, Synoptic
    features hierarchical decomposition of application and control modules in
    synchronous block diagrams and state machines. Its semantics is described in
    the polychronous model of computation, which is that of the synchronous
    language Signal.

  40. Developing Experimental Models for NASA Missions with ASSL.

    Authors: Emil Vassev, Mike Hinchey
    Subjects: Programming Languages
    Abstract

    NASA's new age of space exploration augurs great promise for deep space
    exploration missions whereby spacecraft should be independent, autonomous, and
    smart. Nowadays NASA increasingly relies on the concepts of autonomic
    computing, exploiting these to increase the survivability of remote missions,
    particularly when human tending is not feasible. Autonomic computing has been
    recognized as a promising approach to the development of self-managing
    spacecraft systems that employ onboard intelligence and rely less on control
    links.

  41. Proceedings Second International Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software.

    Authors: Alastair R. Beresford, Simon Gay
    Subjects: Programming Languages
    Abstract

    The Second International Workshop on Programming Language Approaches to
    Concurrency and Communication-cEntric Software (PLACES) was co-located with
    ETAPS 2009 in the city of York, England. The workshop took place on Sunday 22nd
    March 2009. The workshop focused on the challenges raised by the changing
    landscape of computer software. Traditionally, most software was written for a
    single computer with one CPU.

  42. Integrating Interval Constraints into Logic Programming.

    Authors: M.H. van Emden
    Subjects: Programming Languages
    Abstract

    The CLP scheme uses Horn clauses and SLD resolution to generate multiple
    constraint satisfaction problems (CSPs). The possible CSPs include rational
    trees (giving Prolog) and numerical algorithms for solving linear equations and
    linear programs (giving CLP(R)). In this paper we develop a form of CSP for
    interval constraints. In this way one obtains a logic semantics for the
    efficient floating-point hardware that is available on most computers.

  43. Extensible type checker for parser generation.

    Authors: Andrey Breslav
    Subjects: Programming Languages
    Abstract

    Parser generators generate translators from language specifications. In many
    cases, such specifications contain semantic actions written in the same
    language as the generated code. Since these actions are subject to little
    static checking, they are usually a source of errors which are discovered only
    when generated code is compiled.

  44. Towards a Unified Framework for Declarative Structured Communications.

    Authors: Hugo A. López, Carlos Olarte, Jorge A. Pérez
    Subjects: Programming Languages
    Abstract

    We present a unified framework for the declarative analysis of structured
    communications. By relying on a (timed) concurrent constraint programming
    language, we show that in addition to the usual operational techniques from
    process calculi, the analysis of structured communications can elegantly
    exploit logic-based reasoning techniques. We introduce a declarative
    interpretation of the language for structured communications proposed by Honda,
    Vasconcelos, and Kubo.

  45. Session-Based Programming for Parallel Algorithms: Expressiveness and Performance.

    Authors: Andi Bejleri, Raymond Hu, Nobuko Yoshida
    Subjects: Programming Languages
    Abstract

    This paper investigates session programming and typing of benchmark examples
    to compare productivity, safety and performance with other communications
    programming languages. Parallel algorithms are used to examine the above
    aspects due to their extensive use of message passing for interaction, and
    their increasing prominence in algorithmic research with the rising
    availability of hardware resources such as multicore machines and clusters.

  46. Type Inference for Deadlock Detection in a Multithreaded Polymorphic Typed Assembly Language.

    Authors: Francisco Martins, Vasco T. Vasconcelos, Tiago Cogumbreiro
    Subjects: Programming Languages
    Abstract

    We previously developed a polymorphic type system and a type checker for a
    multithreaded lock-based polymorphic typed assembly language (MIL) that ensures
    that well-typed programs do not encounter race conditions. This paper extends
    such work by taking into consideration deadlocks. The extended type system
    verifies that locks are acquired in the proper order. Towards this end we
    require a language with annotations that specify the locking order.

  47. Programming Idioms for Transactional Events.

    Authors: Matthew Kehrt, Laura Effinger-Dean, Michael Schmitz, Dan Grossman
    Subjects: Programming Languages
    Abstract

    Transactional events (TE) are an extension of Concurrent ML (CML), a
    programming model for synchronous message-passing. Prior work has focused on
    TE's formal semantics and its implementation. This paper considers programming
    idioms, particularly those that vary unexpectedly from the corresponding CML
    idioms. First, we solve a subtle problem with client-server protocols in TE.
    Second, we argue that CML's wrap and guard primitives do not translate well to
    TE, and we suggest useful workarounds. Finally, we discuss how to rewrite CML
    protocols that use abort actions.

  48. Towards the Safe Programming of Wireless Sensor Networks.

    Authors: Francisco Martins, Luís Lopes, João Barros
    Subjects: Programming Languages
    Abstract

    Sensor networks are rather challenging to deploy, program, and debug. Current
    programming languages for these platforms suffer from a significant semantic
    gap between their specifications and underlying implementations. This fact
    precludes the development of (type-)safe applications, which would potentially
    simplify the task of programming and debugging deployed networks. In this paper
    we define a core calculus for programming sensor networks and propose to use it
    as an assembly language for developing type-safe, high-level programming
    languages.

  49. A Concurrent Language with a Uniform Treatment of Regions and Locks.

    Authors: Prodromos Gerakios, Nikolaos Papaspyrou, Konstantinos Sagonas
    Subjects: Programming Languages
    Abstract

    A challenge for programming language research is to design and implement
    multi-threaded low-level languages providing static guarantees for memory
    safety and freedom from data races. Towards this goal, we present a concurrent
    language employing safe region-based memory management and hierarchical locking
    of regions. Both regions and locks are treated uniformly, and the language
    supports ownership transfer, early deallocation of regions and early release of
    locks in a safe manner.

  50. Deriving Ontologies from XML Schema.

    Authors: Benjamin Nguyen, Ivan Bedini, Georges Gardarin
    Subjects: Programming Languages
    Abstract

    In this paper, we present a method and a tool for deriving a skeleton of an
    ontology from XML schema files. We first recall what an is ontology and its
    relationships with XML schemas. Next, we focus on ontology building methodology
    and associated tool requirements. Then, we introduce Janus, a tool for building
    an ontology from various XML schemas in a given domain. We summarize the main
    features of Janus and illustrate its functionalities through a simple example.
    Finally, we compare our approach to other existing ontology building tools.

  51. Proceedings Ninth International Workshop on Reduction Strategies in Rewriting and Programming.

    Authors: Maribel Fernández
    Subjects: Programming Languages
    Abstract

    This volume contains selected papers presented at the 9th International
    Workshop on Reduction Strategies in Rewriting and Programming, WRS2009, which
    was held in Brasilia on the 28th June 2009, associated to RTA 2009 (the 20th
    International Conference on Rewriting Techniques and Applications) at RDP, the
    Federated Conference on Rewriting, Deduction and Programming. Reduction
    strategies define which (sub)expression(s) should be selected for evaluation
    and which rule(s) should be applied.

  52. Strategies in PRholog.

    Authors: Besik Dundua, Temur Kutsia, Mircea Marin
    Subjects: Programming Languages
    Abstract

    PRholog is an experimental extension of logic programming with strategic
    conditional transformation rules, combining Prolog with Rholog calculus. The
    rules perform nondeterministic transformations on hedges. Queries may have
    several results that can be explored on backtracking. Strategies provide a
    control on rule applications in a declarative way. With strategy combinators,
    the user can construct more complex strategies from simpler ones. Matching with
    four different kinds of variables provides a flexible mechanism of selecting
    (sub)terms during execution.

  53. Towards a Generic Framework to Generate Explanatory Traces of Constraint Solving and Rule-Based Reasoning.

    Authors: Pierre Deransart, Rafael Oliveira
    Subjects: Programming Languages
    Abstract

    In this report, we show how to use the Simple Fluent Calculus (SFC) to
    specify generic tracers, i.e. tracers which produce a generic trace. A generic
    trace is a trace which can be produced by different implementations of a
    software component and used independently from the traced component. This
    approach is used to define a method for extending a java based CHRor platform
    called CHROME (Constraint Handling Rule Online Model-driven Engine) with an
    extensible generic tracer.

  54. LXG Compiler - Design and Implementation.

    Authors: Emil Vassev
    Subjects: Programming Languages
    Abstract

    LXG is a simple Pascal-like language. It is a functional programming language
    developed for studying compiler design and implementation. The language
    supports procedure and variable declarations, but no classes. This paper
    reports the design and implementation of an LXG compiler. Test results are
    presented as well.

  55. Process Algebra as Abstract Data Types.

    Authors: Ruqian Lu, Lixing Li, Yun Shang, Xiaoyu Li
    Subjects: Programming Languages
    Abstract

    In this paper we introduced an algebraic semantics for process algebra in
    form of abstract data types. For that purpose, we developed a particular type
    of algebra, the seed algebra, which describes exactly the behavior of a process
    within a labeled transition system. We have shown the possibility of
    characterizing the bisimulation of two processes with the isomorphism of their
    corresponding seed algebras. We pointed out that the traditional concept of
    isomorphism of algebra does not apply here, because there is even no one-one
    correspondence between the elements of two seed algebras.

  56. Typage fort et typage souple des collections topologiques et des transformations.

    Authors: Julien Cohen
    Subjects: Programming Languages
    Abstract

    Topological collections allow to consider uniformly many data structures in
    programming languages and are handled by functions defined by pattern matching
    called transformations. We present two type systems for languages with
    topological collections and transformations. The first one is a strong type
    system \`a la Hindley/Milner which can be entirely typed at compile time. The
    second one is a mixed static and dynamic type system allowing to handle
    heterogeneous collections, that is collections which contain values with
    different types.

  57. Typing rule-based transformations over topological collections.

    Authors: Julien Cohen
    Subjects: Programming Languages
    Abstract

    Pattern-matching programming is an example of a rule-based programming style
    developed in functional languages. This programming style is intensively used
    in dialects of ML but is restricted to algebraic data-types. This restriction
    limits the field of application. However, as shown by Giavitto and Michel at
    RULE'02, case-based function definitions can be extended to more general data
    structures called topological collections. We show in this paper that this
    extension retains the benefits of the typed discipline of the functional
    languages.

  58. Polytool: polynomial interpretations as a basis for termination analysis of Logic programs.

    Authors: Manh Thang Nguyen, Danny De Schreye, Jürgen Giesl, Peter Schneider-Kamp
    Subjects: Programming Languages
    Abstract

    Our goal is to study the feasibility of porting termination analysis
    techniques developed for one programming paradigm to another paradigm. In this
    paper, we show how to adapt termination analysis techniques based on polynomial
    interpretations - very well known in the context of term rewrite systems (TRSs)
    - to obtain new (non-transformational) ter- mination analysis techniques for
    definite logic programs (LPs). This leads to an approach that can be seen as a
    direct generalization of the traditional techniques in termination analysis of
    LPs, where linear norms and level mappings are used.

  59. Towards Hybrid Intensional Programming with JLucid, Objective Lucid, and General Imperative Compiler Framework in the GIPSY.

    Authors: Serguei A. Mokhov
    Subjects: Programming Languages
    Abstract

    Pure Lucid programs are concurrent with very fine granularity. Sequential
    Threads (STs) are functions introduced to enlarge the grain size; they are
    passed from server to workers by Communication Procedures (CPs) in the General
    Intensional Programming System (GIPSY). A JLucid program combines Java code for
    the STs with Lucid code for parallel control. Thus first, in this thesis, we
    describe the way in which the new JLucid compiler generates STs and CPs. JLucid
    also introduces array support.

  60. A Step-indexed Semantics of Imperative Objects.

    Authors: Catalin Hritcu, Jan Schwinghammer
    Subjects: Programming Languages
    Abstract

    Step-indexed semantic interpretations of types were proposed as an
    alternative to purely syntactic proofs of type safety using subject reduction.
    The types are interpreted as sets of values indexed by the number of
    computation steps for which these values are guaranteed to behave like proper
    elements of the type. Building on work by Ahmed, Appel and others, we introduce
    a step-indexed semantics for the imperative object calculus of Abadi and
    Cardelli.

  61. A Metamodel of Unit Testing for Object-Oriented Programming Languages.

    Authors: Martin Levesque
    Subjects: Programming Languages
    Abstract

    A unit test is a method for verifying the accuracy and the proper functioning
    of a portion of a program. This work consists to study the relation and the
    approaches to test Object-Oriented Programming (OOP) programs and to propose a
    metamodel that enables the programmer to write the tests while writing the
    source code to be tested by exploiting the key features of OOP programming
    languages such as inheritance, polymorphism, etc.

  62. JSC : A JavaScript Object System.

    Authors: Artur Ventura
    Subjects: Programming Languages
    Abstract

    The JSC language is a superset of JavaScript designed to ease the development
    of large web applications. This language extends JavaScripts own object system
    by isolating code in a class declaration, simplifying multiple inheritance and
    using method implementation agreements.

  63. ActorScript(TM): Industrial strength integration of local and nonlocal concurrency for Client-cloud Computing.

    Authors: Carl Hewitt
    Subjects: Programming Languages
    Abstract

    ActorScript is a general purpose programming language for implementing
    massive local and nonlocal concurrency. It is differentiated from other
    concurrent languages by the following: * Identifiers (names) in the language
    are referentially transparent, i.e., in a given scope an identifier always
    refers to the same thing. * Everything in the language is accomplished using
    message passing including the very definition of ActorScript itself. * Binary
    XML and JSON are fundamental, being used for structuring both data and
    messages.

  64. Session Types at the Mirror.

    Authors: Luca Padovani
    Subjects: Programming Languages
    Abstract

    We (re)define session types as projections of process behaviors with respect
    to the communication channels they use. In this setting, we give session types
    a semantics based on fair testing. The outcome is a unified theory of
    behavioral types that shares common aspects with conversation types and that
    encompass features of both dyadic and multi-party session types.

  65. An Implementation of the Language Lambda Prolog Organized around Higher-Order Pattern Unification.

    Authors: Xiaochu Qi
    Subjects: Programming Languages
    Abstract

    This thesis concerns the implementation of Lambda Prolog, a higher-order
    logic programming language that supports the lambda-tree syntax approach to
    representing and manipulating formal syntactic objects. Lambda Prolog achieves
    its functionality by extending a Prolog-like language by using typed lambda
    terms as data structures that it then manipulates via higher-order unification
    and some new program-level abstraction mechanisms. These additional features
    raise new implementation questions that must be adequately addressed for Lambda
    Prolog to be an effective programming tool.

  66. Efficient Local Unfolding with Ancestor Stacks.

    Authors: G. Puebla, E. Albert, M. Hermenegildo
    Subjects: Programming Languages
    Abstract

    The most successful unfolding rules used nowadays in the partial evaluation
    of logic programs are based on well quasi orders (wqo) applied over (covering)
    ancestors, i.e., a subsequence of the atoms selected during a derivation.
    Ancestor (sub)sequences are used to increase the specialization power of
    unfolding while still guaranteeing termination and also to reduce the number of
    atoms for which the wqo has to be checked. Unfortunately, maintaining the
    structure of the ancestor relation during unfolding introduces significant
    overhead.

  67. Coding Guidelines for Prolog.

    Authors: Michael A. Covington, Roberto Bagnara, Richard A. O'Keefe, Jan Wielemaker, Simon Price
    Subjects: Programming Languages
    Abstract

    Coding standards and good practices are important for all software projects,
    whatever programming languages they employ. Arguably, Prolog programming can
    benefit from a disciplined approach more than programming in other languages.
    Despite this, no widely accepted standards and practices seem to have emerged
    up to now. The present paper aims at being a first step towards filling this
    gap.

  68. Functional units for natural numbers.

    Authors: J. A. Bergstra, C. A. Middelburg
    Subjects: Programming Languages
    Abstract

    Interaction with services provided by an execution environment forms part of
    the behaviours exhibited by instruction sequences under execution. Mechanisms
    related to the kind of interaction in question have been proposed in the
    setting of thread algebra. Like thread, service is an abstract behavioural
    concept. The concept of a functional unit is similar to the concept of a
    service, but more concrete. A state space is inherent in the concept of a
    functional unit, whereas it is not inherent in the concept of a service.

  69. From Single-thread to Multithreaded: An Efficient Static Analysis Algorithm.

    Authors: Jean-Loup Carre, Charles Hymans
    Subjects: Programming Languages
    Abstract

    A great variety of static analyses that compute safety properties of
    single-thread programs have now been developed. This paper presents a
    systematic method to extend a class of such static analyses, so that they
    handle programs with multiple POSIX-style threads. Starting from a pragmatic
    operational semantics, we build a denotational semantics that expresses
    reasoning a la assume-guarantee. The final algorithm is then derived by
    abstract interpretation. It analyses each thread in turn, propagating
    interferences between threads, in addition to other semantic information.

  70. Iterators, Recursors and Interaction Nets.

    Authors: Ian Mackie, Jorge Sousa Pinto, Miguel Vilaca
    Subjects: Programming Languages
    Abstract

    We propose a method for encoding iterators (and recursion operators in
    general) using interaction nets (INs). There are two main applications for
    this: the method can be used to obtain a visual nota- tion for functional
    programs; and it can be used to extend the existing translations of the
    lambda-calculus into INs to languages with recursive types.

  71. Type Safe Extensible Programming.

    Authors: Wonseok Chae
    Subjects: Programming Languages
    Abstract

    Software products evolve over time. Sometimes they evolve by adding new
    features, and sometimes by either fixing bugs or replacing outdated
    implementations with new ones. When software engineers fail to anticipate such
    evolution during development, they will eventually be forced to re-architect or
    re-build from scratch. Therefore, it has been common practice to prepare for
    changes so that software products are extensible over their lifetimes.

  72. Accelerating the Execution of Matrix Languages on the Cell Broadband Engine Architecture.

    Authors: Raymes Khoury, Bernd Burgstaller, Bernhard Scholz
    Subjects: Programming Languages
    Abstract

    Matrix languages, including MATLAB and Octave, are established standards for
    applications in science and engineering. They provide interactive programming
    environments that are easy to use due to their script languages with matrix
    data types. Current implementations of matrix languages do not fully utilize
    high-performance, special-purpose chip architectures such as the IBM PowerXCell
    processor (Cell), which is currently used in the fastest computer in the world.
    We present a new framework that extends Octave to harvest the computational
    power of the Cell.

  73. Automatic modular abstractions for template numerical constraints.

    Authors: David Monniaux
    Subjects: Programming Languages
    Abstract

    We propose a method for automatically generating abstract transformers for
    static analysis by abstract interpretation. The method focuses on linear
    constraints on programs operating on rational, real or floating-point variables
    and containing linear assignments and tests. In addition to loop-free code, the
    same method also applies for obtaining least fixed points as functions of the
    precondition, which permits the analysis of loops and recursive functions. Our
    algorithms are based on new quantifier elimination and symbolic manipulation
    techniques.

  74. A progression ring for interfaces of instruction sequences, threads, and services.

    Authors: Jan A. Bergstra, Alban Ponse
    Subjects: Programming Languages
    Abstract

    We define focus-method interfaces and some connections between such
    interfaces and instruction sequences, giving rise to instruction sequence
    components. We provide a flexible and practical notation for interfaces using
    an abstract datatype specification comparable to that of basic process algebra
    with deadlock. The structures thus defined are called progression rings. We
    also define thread and service components. Two types of composition of
    instruction sequences or threads and services (called `use' and `apply') are
    lifted to the level of components.

  75. Full abstraction for nominal general references.

    Authors: Nikos Tzevelekos
    Subjects: Programming Languages
    Abstract

    Game semantics has been used with considerable success in formulating fully
    abstract semantics for languages with higher-order procedures and a wide range
    of computational effects. Recently, nominal games have been proposed for
    modelling functional languages with names. These are ordinary, stateful games
    cast in the theory of nominal sets developed by Pitts and Gabbay. Here we take
    nominal games one step further, by developing a fully abstract semantics for a
    language with nominal general references.

  76. Indirect jumps improve instruction sequence performance.

    Authors: J. A. Bergstra, C. A. Middelburg
    Subjects: Programming Languages
    Abstract

    Instruction sequences with direct and indirect jump instructions are as
    expressive as instruction sequences with direct jump instructions only. We show
    that, in the case where the number of instructions is not bounded, there exist
    instruction sequences of the former kind from which elimination of indirect
    jump instructions is possible without a super-linear increase of their maximal
    internal delay on execution only at the cost of a super-linear increase of
    their length.

  77. Using Ellipsoidal Domains to Analyze Control Systems Software.

    Authors: Fernando Alegre, Eric Feron, Santosh Pande
    Subjects: Programming Languages
    Abstract

    We propose a methodology for the automatic verification of safety properties
    of controllers based on dynamical systems, such as those typically used in
    avionics. In particular, our focus is on proving stability properties of
    software implementing linear and some non-linear controllers. We develop an
    abstract interpretation framework that follows closely the Lyapunov methods
    used in proofs at the model level and describe the corresponding abstract
    domains, which for linear systems consist of ellipsoidal constraints.

  78. Object-Oriented Intensional Programming: Intensional Classes Using Java and Lucid.

    Authors: Aihua Wu, Joey Paquet, Serguei A. Mokhov
    Subjects: Programming Languages
    Abstract

    This article introduces Object-Oriented Intensional Programming (OO-IP), a
    new hybrid language between Object-Oriented and Intensional Programming
    Languages in the sense of the latest evolutions of Lucid.

  79. jYang : A YANG parser in java.

    Authors: Emmanuel Nataf, Olivier Festor
    Subjects: Programming Languages
    Abstract

    The NETCONF con?guration protocol of the IETF Network Work- ing Group
    provides mechanisms to manipulate the con?guration of network devices. YANG is
    the language currently under consideration within the IETF to specify the data
    models to be used in NETCONF . This report describes the design and development
    of a syntax and semantics parser for YANG in java.

Syndicate content