Results 1 -
9 of
9
MetaML and Multi-Stage Programming with Explicit Annotations
- Theoretical Computer Science
, 1999
"... . We introduce MetaML, a practically-motivated, staticallytyped multi-stage programming language. MetaML is a "real" language. We have built an implementation and used it to solve multi-stage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a type-safe ..."
Abstract
-
Cited by 201 (30 self)
- Add to MetaCart
. We introduce MetaML, a practically-motivated, staticallytyped multi-stage programming language. MetaML is a "real" language. We have built an implementation and used it to solve multi-stage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a type-safe manner. Code fragments can contain free variables, but they obey the static-scoping principle. MetaML performs typechecking for all stages once and for all before the execution of the first stage. Certain anomalies with our first MetaML implementation led us to formalize an illustrative subset of the MetaML implementation. We present both a big-step semantics and type system for this subset, and prove the type system's soundness with respect to a big-step semantics. From a software engineering point of view, this means that generators written in the MetaML subset never generate unsafe programs. A type system and semantics for full MetaML is still ongoing work. We argue that multi-...
From ML to Ada: Strongly-typed Language Interoperability via Source Translation
, 1993
"... We describe a system that supports source-level integration of ML-like functional language code with ANSI C or Ada83 code. The system works by translating the functional code into type-correct, "vanilla" C or Ada; it offers simple, efficient, type-safe inter-operation between new functional code com ..."
Abstract
-
Cited by 59 (3 self)
- Add to MetaCart
We describe a system that supports source-level integration of ML-like functional language code with ANSI C or Ada83 code. The system works by translating the functional code into type-correct, "vanilla" C or Ada; it offers simple, efficient, type-safe inter-operation between new functional code components and "legacy" third-generationlanguage components. Our translator represents a novel synthesis of techniques including user-parameterized specification of primitive types and operators; removal of polymorphism by code specialization; removal of higher-order functions using closure datatypes and interpretation; and aggressive optimization of the resulting first-order code, which can be viewed as encoding the result of a closure analysis. Programs remain fully typed at every stage of the translation process, using only simple, standard type systems. Target code runs at speeds comparable to the output of current optimizing ML compilers, even though handicapped by a conservative garbage collector.
Type-driven Defunctionalization
- In Proc. 2nd International Conference on Functional Programming
, 1997
"... In 1972, Reynolds outlined a general method for eliminating functional arguments known as defunctionalization. The idea underlying defunctionalization is encoding functional values as first-order data, and then to realized the applications of the encoded function via an apply function. Although this ..."
Abstract
-
Cited by 29 (0 self)
- Add to MetaCart
In 1972, Reynolds outlined a general method for eliminating functional arguments known as defunctionalization. The idea underlying defunctionalization is encoding functional values as first-order data, and then to realized the applications of the encoded function via an apply function. Although this process is simple enough, problems arise when defunctionalization is used in a polymorphic language. In such a language, a functional argument of a higher-order function can take different type instances in different applications. As a consequence, its associated apply function can be untypable in the soucre language. In the paper we present a defunctionalization transformation which preserves typability. Moreover, the transformation imposes no restriction on functional arguments of recursive functions, and it handles functions as results as well as functions encapsulated in constructors or tuples. The key to this success is the use of type information in the defunctionalization transformat...
Lessons Learned from Real DSL Experiments
"... Over the years, our group, led by Bob Balzer, designed and implemented three domain-specific languages for use by outside people in real situations. The first language described the communication format of messages used by NATO to specify command-and-control messages between people and equipment; th ..."
Abstract
-
Cited by 17 (0 self)
- Add to MetaCart
Over the years, our group, led by Bob Balzer, designed and implemented three domain-specific languages for use by outside people in real situations. The first language described the communication format of messages used by NATO to specify command-and-control messages between people and equipment; the processor we generated checked these messages for consistency. The second language was in part graphical, part textual, and was used to demonstrate how naval ship formations were constituted and the constrained movements they could undergo. The last language was a mixture of graphics, text, and declarative information specified using three different COTS products. It was used to describe census survey “instruments, ” used to collect census data in the field. The code generated was to be installed in the survey takers ’ laptops. Each of these was actually a prototype for what would have taken more time to engineer and polish before putting into practice. Although each effort was essentially successful, none of the languages was ever followed up with the subsequent engineering efforts that we expected or at least hoped for. The first two were demonstrated and reviewed informally. The last effort was more seriously reviewed, in that training sessions and a formal review process were undertaken to evaluate the potential effectiveness of the product. Herein I elaborate where these language efforts succeeded and where they failed, gleaning lessons for others who take the somewhat risky step of committing to develop a DSL for a particular user community.
Defining and Implementing Closed, Domain-Specific Languages
- Invited talk at the Workshop on Semantics, Applications and Implementation of Program Generation (SAIG
, 2000
"... A closed domain-speci c language (DSL) is a standalone, declarative language that cannot easily be embedded into an existing, wide-spectrum programming language as a library of combinators. It requires an independent implementation. We advocate defining the semantics of a closed DSL in terms of a un ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
A closed domain-speci c language (DSL) is a standalone, declarative language that cannot easily be embedded into an existing, wide-spectrum programming language as a library of combinators. It requires an independent implementation. We advocate defining the semantics of a closed DSL in terms of a universal set of semantics combinators which form a structure algebra over a suitable domain. By exchanging the domain of this algebra for a domain of abstract machine states, we automatically derive an implementation of the DSL in terms of byte code instructions for an abstract machine. The correctness of this implementation is proved by showing coherence of the operational, abstract machine semantics with the denotational semantics. The technique is illustrated in implementing a DSL for pretty printing.
Design Automation: Making Formal Methods Relevant
- ICSE-17 Workshop on Formal Methods Application
, 1995
"... ormal methods are critical to the emergence of software engineering as a well-organized discipline based, as are other engineering disciplines, on sound and well-tested mathematical models. To this end, future research must be focused on approaches that would have a direct positive impact on large-s ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
ormal methods are critical to the emergence of software engineering as a well-organized discipline based, as are other engineering disciplines, on sound and well-tested mathematical models. To this end, future research must be focused on approaches that would have a direct positive impact on large-scale software development. Crucial to this effort are the following goals ffl Incorporate formal models and algorithms in computer tools designed to solve problems of practical significance ffl Recognize that practical software development is largely driven by user requirements changes Authors supported in part by Air Force Materiel Command. y Pacific Software Research Center, Oregon Graduate Institute of Science & Technology, P.O. Box 91000, Portland, OR 97291-1000 USA, http://www.cse.ogi.edu/PacSoft. ffl Recognize that human understanding and creativity play an important role in software development As well as a c
Software Robots - Automating the Software Factory
- In [2
, 1996
"... this paper we explain what software robots are and how they can be used in the software factory to reduce the production lead time while retaining at least the same quality of code. Experiments with the software robot DedGet within Philips have shown us average speed ups of the software production p ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
this paper we explain what software robots are and how they can be used in the software factory to reduce the production lead time while retaining at least the same quality of code. Experiments with the software robot DedGet within Philips have shown us average speed ups of the software production process up to 15 times [Str96]. This brief paper is organized as follows. In section 2 we explain in more detail what software robots are and how they fit into the software factory. After that, in section 3, it is briefly sketched how software robots can be implemented rapidly. We end this paper by giving some references to related work in section 4. 2 Software Robots
Developing a Low-Defect Software Product in a Research Organization
- In Proceedings of the 13th Pacific Northwest Software Quality Conference
, 1995
"... Introduction The Pacific Software Research Center (PacSoft) at the Oregon Graduate Institute of Science & Technology has recently concluded a development effort in which the delivered software product comprising approximately 20,000 lines of source code had no failures in an extensive usage period ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Introduction The Pacific Software Research Center (PacSoft) at the Oregon Graduate Institute of Science & Technology has recently concluded a development effort in which the delivered software product comprising approximately 20,000 lines of source code had no failures in an extensive usage period by independent users (similar to a beta test cycle). We believe the absence of failures is attributable to the following three characteristics of the project. 1. Effective processes, especially the incremental development process. 2. Appropriate tool choices, in particular the use of functional programming languages. 3. Measurement oriented towards characterization and prediction of effort and quality. Although we describe software development in a research organization, many aspects of this project are common with industrial development projects. The project included external demands that we meet "hard" completion deadlines. The requirements for the system were negotiated with the cu
Expanding the Focus of an Academic Research Team: Lessons Learned
, 1995
"... Introduction The Pacific Software Research Center (PacSoft) at the Oregon Graduate Institute of Science & Technology is a team of computer science researchers investigating significant new technologies for producing software of high quality and reliability with improved human productivity. Historic ..."
Abstract
- Add to MetaCart
Introduction The Pacific Software Research Center (PacSoft) at the Oregon Graduate Institute of Science & Technology is a team of computer science researchers investigating significant new technologies for producing software of high quality and reliability with improved human productivity. Historically, PacSoft has focused on research, particularly in the areas of program transformations and functional programming languages. In 1993, we contracted with the United States Air Force to use our research expertise to develop a method for creating software component generators. In this project, known as Software Design for Reliability and Reuse (SDRR) [2, 5] we developed a generator for the message translation and validation (MTV) problem domain and compared usage of the generator with usage of a state-of-the-art development method in a controlled human-subjects experiment. This project took 19 calendar months, and required approximately 4.6 person years of development. These effort

