dds at aueb.gr
Mon Oct 18 13:17:24 PDT 2004
Julian Elischer wrote:
> My gut feeling is that the same algorythms and data structure mechanisms
> keep occuring again and again in teh kernel, and that it should be
> possible to
> specify the kernel in a meta-language (also known as a Very High Level
> and generate the result. I've actually thought a little about this.
> I havent seen a language that fits the bill yet. Does anyone have a
> VHLL that they think could be used to describe a kernel? My suspicion
> is that the descriptions would be such that we'd probably have to create
> our own KDS
> (Kernel descripion Language :-)
You are describing a domain-specific language (DSL). This is an
ongoing, but currently less than hot, research topic. The Usenix
Association sponsored two conferences on the subject in 1997  and
1999 . I've been playing with DSLs for more than 15 years [3-6];
reference  contains a (rather academic) survey of how DSLs are
typically implemented and used. I've also used DSLs extensively in
practice in the implementation of a medium-sized software project: a
300KLOC CAD system for civil engineers and architects. In that system
287KLOC are in C/C++; 16KLOC are in 12 different DSLs.
I feel that DSLs offer significant benefits, especially when they are
first used in the areas of a system where they are most applicable
(think our kernel configuration file). Thereafter, the marginal returns
quickly diminish, and the associated problems take over. In a summary,
the most important problems are:
- Finding or training developers to use the DSLs
- Maintaining the DSL compilers
- Development (e.g. debugger) tool support
One current promissing approach is extensible languages, such as those
made possible by the C# and the Java 5.0 code annotations.
Personally, I believe that C++ is now a serious candidate for an OS
implementation language. I know of the many less than successful
object-oriented OS implementation attempts in the late 80s and early
90s, but I believe that those used a wrong approach (use object for
everything) and an immature version of C++. Nowadays I would use the
C++ in an OS implementation effort for its encapsulation and generic
programming facilities, and would very sparingly employ inheritance and
As you correctly point out, this is all day-dreaming, because of the
ammount of legacy code we have on our hands.
 Chris Ramming, editor. Proceedings of the Conference on
October 15-17, 1997
Santa Barbara, California, USA.
 Thomas Ball, editor. The 2nd Conference on Domain-Specific
Languages. October 3-5, 1999. Austin, Texas, USA.
 Diomidis Spinellis. Implementing Haskell: Language implementation as
a tool building exercise. Structured Programming (Software Concepts and
Tools), 14:37–48, 1993.
 Diomidis Spinellis and V. Guruprasad. Lightweight languages as
software engineering tools. In J. Christopher Ramming, editor, USENIX
Conference on Domain-Specific Languages, pages 67–76, Berkeley, CA,
October 1997. Usenix Association.
 Diomidis Spinellis. Reliable software implementation using domain
specific languages. In G. I. Schuëller and P. Kafka, editors,
Proceedings ESREL '99 — The Tenth European Conference on Safety and
Reliability, pages 627–631, Rotterdam, September 1999. ESRA, VDI, TUM,
A. A. Balkema.
 Diomidis Spinellis. Notable design patterns for domain specific
languages. Journal of Systems and Software, 56(1):91–99, February 2001.
Diomidis - dds@
More information about the freebsd-current