Essence: Software Language Composition

Language composition is one of the desirable aspects of Software Language Engineering to enable reusability of the existing languages.

"From now on, a main goal in designing a language should be to plan for growth.” - Guy Steele: Growing a Language, OOPSLA'98 invited talk[1].

A language should be designed in such a way that evolving it with respect to different language constructs requires the minimum effort. It is well-recognized  that designing a high quality language requires considerable effort. Therefore, reusability is a highly desirable property in the context of software language engineering(SLE) that can support language evolution and integration in modest maintenance effort; thus, reusability of languages has become one of the primary research concern in the field of SLE.

The complexity of this problem increases with the ubiquitous proliferation of Domain-specific Languages (DSLs) as composition of various DSLs in the context of solving different problems has become a real-world use-case scenario. Wider-acceptability of DSLs further warrant modular composition of language features since the realization of the DSLs can only be discerned if efforts put in their implementation can somehow be optimized. Therefore, just as any other disciplines, reusability is the key here.

These days I am working on designing a meta-language that supports modular definition of the language constructs. Primary objective of this endeavor is to promote "Language-as-a-Library" ideology in software language design. Thus, we envisage that the outcome of this research would be a framework that would facilitate rapid software language development by reusing the exiting language features as much as possible and thus, it will enable cost-effective language development.

The goal of designing language in a modular and reusable manner, I started with a survey to find out the existing state-of-the-art framework that supports these kinds of features. Hence, this blog contributes to this research endeavor by providing an outlook of the  existing strategies or patterns of software language composition, the technologies promoting the notion of modular and composable languages; and by reviewing the state-of-the-art approaches of software language composition in solving the relevant issues.

References

1. Jr., G.L.S.: Growing a language. Higher-Order and Symbolic Computation 12(3), 221–236 (1999).

No Comments