Results 1 - 10
of
36
TXL: A Rapid Prototyping System for Programming Language Dialects
- Computer Languages
, 1991
"... This paper describes a rapid prototyping system for extensions to an existing programming language. Such extensions might include new language features or might introduce notation specific to a particular problem domain. The system consists of a dialect description language used to specify the synta ..."
Abstract
-
Cited by 95 (9 self)
- Add to MetaCart
This paper describes a rapid prototyping system for extensions to an existing programming language. Such extensions might include new language features or might introduce notation specific to a particular problem domain. The system consists of a dialect description language used to specify the syntax and semantics of extensions, and a context sensitive syntactic transducer that automatically implements the extensions by transforming source programs written using them to equivalent programs in the original unextended language. Because the transformer is context sensitive, it is more powerful than traditional context free preprocessors and extensible languages and can be used to prototype language extensions involving significantly new programming paradigms such as object oriented programming.
Contracts for Higher-Order Functions
, 2002
"... Assertions play an important role in the construction of robust software. Their use in programming languages dates back to the 1970s. Eiffel, an object-oriented programming language, wholeheartedly adopted assertions and developed the "Design by Contract" philosophy. Indeed, the entire object-orient ..."
Abstract
-
Cited by 84 (11 self)
- Add to MetaCart
Assertions play an important role in the construction of robust software. Their use in programming languages dates back to the 1970s. Eiffel, an object-oriented programming language, wholeheartedly adopted assertions and developed the "Design by Contract" philosophy. Indeed, the entire object-oriented community recognizes the value of assertion-based contracts on methods.
Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers
- ACM COMPUT. SURV
, 2005
"... Since the early 1960’s, researchers have built a number of programming languages and environments with the intention of making programming accessible to a larger number of people. This article presents a taxonomy of languages and environments designed to make programming more accessible to novice pr ..."
Abstract
-
Cited by 61 (2 self)
- Add to MetaCart
Since the early 1960’s, researchers have built a number of programming languages and environments with the intention of making programming accessible to a larger number of people. This article presents a taxonomy of languages and environments designed to make programming more accessible to novice programmers of all ages. The systems are organized by their primary goal, either to teach programming or to use programming to empower their users, and then, by each system’s authors ’ approach, to making learning to program easier for novice programmers. The article explains all categories in the taxonomy, provides a brief description of the systems in each category, and suggests some avenues for future work in novice programming environments and languages.
Automatic Clustering of Software Systems using a Genetic Algorithm
- In Proceedings of Software Technology and Engineering Practice
, 1998
"... Large software systems tend to have a rich and complex structure. Designers typically depict the structure of software systems as one or more directed graphs. For example, a directed graph can be used to describe the modules (or classes) of a system and their static interrelationships using nodes an ..."
Abstract
-
Cited by 47 (15 self)
- Add to MetaCart
Large software systems tend to have a rich and complex structure. Designers typically depict the structure of software systems as one or more directed graphs. For example, a directed graph can be used to describe the modules (or classes) of a system and their static interrelationships using nodes and directed edges, respectively. We call such graphs module dependency graphs (MDGs). MDGs can be large and complex graphs. One way of making them more accessible is to partition them, separating their nodes (i.e., modules) into clusters (i.e., subsystems). In this paper, we describe a technique for finding "good" MDG partitions. Good partitions feature relatively independent subsystems that contain modules which are highly inter-dependent. Our technique treats finding a good partition as an optimization problem, and uses a Genetic Algorithm (GA) to search the extraordinarily large solution space of all possible MDG partitions. The effectiveness of our technique is demonstrated by applying it...
The TXL Source Transformation Language
, 2005
"... TXL is a special-purpose programming language designed for creating, manipulating and rapidly prototyping language descriptions, tools and applications. TXL is designed to allow explicit programmer control over the interpretation, application, order and backtracking of both parsing and rewriting rul ..."
Abstract
-
Cited by 47 (15 self)
- Add to MetaCart
TXL is a special-purpose programming language designed for creating, manipulating and rapidly prototyping language descriptions, tools and applications. TXL is designed to allow explicit programmer control over the interpretation, application, order and backtracking of both parsing and rewriting rules. Using first order functional programming at the higher level and term rewriting at the lower level, TXL provides for flexible programming of traversals, guards, scope of application and parameterized context. This flexibility has allowed TXL users to express and experiment with both new ideas in parsing, such as robust, island and agile parsing, and new paradigms in rewriting, such as XML markup, rewriting strategies and contextualized rules, without any change to TXL itself. This paper outlines the history, evolution and concepts of TXL with emphasis on its distinctive style and philosophy, and gives examples of its use in expressing and applying recent new paradigms in language processing.
TXL - A Language for Programming Language Tools and Applications
, 2004
"... TXL is a special-purpose programming language designed for creating, manipulating and rapidly prototyping language descriptions, tools and applications. TXL is designed to allow explicit programmer control over the interpretation, application, order and backtracking of both parsing and rewriting rul ..."
Abstract
-
Cited by 44 (8 self)
- Add to MetaCart
TXL is a special-purpose programming language designed for creating, manipulating and rapidly prototyping language descriptions, tools and applications. TXL is designed to allow explicit programmer control over the interpretation, application, order and backtracking of both parsing and rewriting rules. Using first order functional programming at the higher level and term rewriting at the lower level, TXL provides for flexible programming of traversals, strategies, guards, scope of application and parameterized context. This flexibility has allowed TXL users to express and experiment with both new ideas in parsing, such as robust, island and agile parsing, and new paradigms in rewriting, such as XML markup, rewriting strategies and contextualized rules, without any change to TXL itself. In this paper I outline the history, evolution and concepts of TXL with emphasis on what makes it di#erent from other language manipulation tools, and give examples of its use in expressing and applying recent new paradigms in language processing.
Software inspection using codesurfer
- In Workshop on Inspection in Software Engineering
, 2001
"... Software Inspection is a technique for detecting flaws in software before deployment. It was introduced by Fagan in 1976 [12], and since then its use has spread widely. Despite the widespread adoption and success of software ..."
Abstract
-
Cited by 39 (0 self)
- Add to MetaCart
Software Inspection is a technique for detecting flaws in software before deployment. It was introduced by Fagan in 1976 [12], and since then its use has spread widely. Despite the widespread adoption and success of software
Sage: Hybrid checking for flexible specifications
- In Scheme and Functional Programming Workshop
, 2006
"... ..."
Parse-Tree Annotations Meet Re-Engineering Concerns
- IN PROC. SOURCE CODE ANALYSIS AND MANIPULATION (SCAM’03
, 2003
"... ..."
Relational Views as a Model for Automatic Distributed Implementation of Multi-User Applications
- IN PROCEEDINGS OF THE ACM CSCW’92 CONFERENCE ON COMPUTER SUPPORTED COOPERATIVE WORK, P59–66
, 1992
"... Multi-user applications support multiple users performing a related task in a distributed context. This paper describes Weasel, a system for implementing multi-user applications. Weasel is based on the relational view model, in which user interfaces are specified as relations between program dat ..."
Abstract
-
Cited by 18 (5 self)
- Add to MetaCart
Multi-user applications support multiple users performing a related task in a distributed context. This paper describes Weasel, a system for implementing multi-user applications. Weasel is based on the relational view model, in which user interfaces are specified as relations between program data structures and views on a display. These relations are specified in RVL, a high-level, declarative language. Under this model, an application program and a set of RVL specifications are used to generate a multi-user application in which all issues of network communication, concurrency, synchronization, and view customization are handled automatically. These programs have a scalable distribution property, where adding new participants to a session does not greatly degrade over-all system performance. Weasel has been implemented, and was used to generate all examples in this paper.

