122 research outputs found
Dynamically typed languages
Dynamically typed languages such as Python and Ruby have experienced a rapid grown in popularity in recent times. However, there is much confusion as to what makes these languages interesting relative to statically typed languages, and little knowledge of their rich history. In this chapter I explore the general topic of dynamically typed languages, how they differ from statically typed languages, their history, and their defining features
Model Transformations in MT
Model transformations are recognised as a vital aspect of Model Driven Development,but current approaches cover only a small part of the possible spectrum. In this paper I present the MT model transformation which shows how a QVT-like language can be extended with novel pattern matching constructs, how tracing information can be automatically constructed and visualized, and how the transformed model is pruned of extraneous elements. As MT is implemented as a DSL within the Converge language, this paper also demonstrates how a general purpose language can be embedded in a model transformation language, and how DSL development can aid experimentation and exploration of new parts of the model transformation spectrum
Evolving a DSL implementation
Domain Specific Languages (DSLs) are small languages designed for use in a specific domain. DSLs typically evolve quite radically throughout their lifetime, but current DSL implementation approaches are often clumsy in the face of such evolution.
In this paper I present a case study of an DSL evolving in its syntax, semantics, and robustness, implemented in the Converge language. This shows how real-world DSL implementations can evolve along with changing requirements
Dynamically Typed Languages
The languages discussed in this special issue have a long history, which is perhaps why some have had several different names over the years. One such language is Lisp, the second-oldest programming language. For years, many somewhat dismissively described languages such as Lisp as "scripting languages." Today, we more commonly refer to them as dynamically typed languages, typified by Python and Ruby, and their impact is arguably greater than ever. This issue highlights the practical uses of such languages and shows how they're frequently a vehicle for innovation in the development sphere. This article is part of a special issue on dynamically typed languages
Model transformations in Converge
Model transformations are currently the focus of much interest and research due to the OMGās QVT initiative. Current proposals for model transformation languages
can be divided into two main camps: those taking a ādeclarativeā approach, and those opting for an āimperativeā approach. In this paper we detail an imperative, meta-circular, object orientated, pattern matching programming language Converge which is enriched with features pioneered by the Icon programming language,
amongst them: success/failure, generators and goal-directed evaluation. By presenting these features in a language suitable for representing models, we show
that we are able to gain some of the advantages of declarative approaches in an imperative setting
Formalizing homogeneous language embeddings
The cost of implementing syntactically distinct Domain Specific Languages (DSLs) can
be reduced by homogeneously embedding them in a host language in cooperation with its
compiler. Current homogeneous embedding approaches either restrict the embedding of
multiple DSLs in order to provide safety guarantees, or allow multiple DSLs to be embedded
but force the user to deal with the interoperability burden. In this paper we present the
m-calculus which allows parameterisable language embeddings to be specified and analysed.
By reducing the problem to its core essentials we are able to show how multiple,
expressive language embeddings can be defined in a homogeneous embedding context. We
further show how variant calculi with safety guarantees can be defined
Contrasting Compile-Time Meta-Programming in Metalua and Converge
Powerful, safe macro systems allow programs to be programatically constructed by the user at compile-time. Such systems have traditionally been largely confined to LISP-like languages and their successors.
In this paper we describe and compare two modern, dynamically typed languages Converge and Metalua, which both have macro-like systems. We show how, in different ways, they build upon traditional macro systems to explore new ways of constructing programs
A change propagating model transformation language
Model transformations are a key component in Model Driven Development, but most approaches only allow `one shot' transformations to be expressed. Change propagating
model transformations are those which can make suitable updates to models after an initial transformation. In this paper I outline the challenges presented by change prop-
agating model transformations, before presenting a new change propagating model transformation approach
Issues Surrounding Model Consistency and QVT
This document is intended to outline some of the issues surrounding model consistency in the context of QVT. As far as possible this document is intended to be independent of any particular QVT submission, although we do borrow some terminology from the QVT-Partners submission
- ā¦