The BOOSE Programming Lang.

Home Blog Talks Books & Articles Training & Consulting


On the
RSS feed November 4: Other Concurrency Sessions at PDC
November 3
: PDC'09: Tutorial & Panel
October 26: Hoare on Testing
October 23
: Deprecating export Considered for ISO C++0x

The BOOSE Programming Language

This article appeared in C++ Report, 10(4), April 1998.


Despite its strengths, the BOOSE programming language has been largely (and undeservedly) lost in the industry press amid all the recent fanfare surrounding Ada, Java, Lisp, and other new Internet-related languages. It's important to give equal coverage to some of the other viable options available to developers today, especially those directly based on C++. 

BOOSE: C++ for Specialized Environments

BOOSE (pronounced as a single syllable, "booz") was originally conceived in 1997 by Robert Klarer of IBM Labs to compete with Java in the high-performance real-time embedded market.[1] In short, BOOSE consists of the complete standard C++ language along with a set of specialized extensions to make the language more applicable in embedded and other nonstandard environments. Insider gossip has it that BOOSE originally stood for "Bjarne's Object-Oriented Software Environment"--a tip of the hat to the creator of the C++ language, Bjarne Stroustrup, and an indicator of BOOSE's focus on nonstandard runtime environments.[2]

Since then, BOOSE has been expanded to become a good response to Java as an alternative portable and universal language.[3] In short, BOOSE is more potent than Java. When it comes to capturing and holding developer market share, it is also at least as addictive.

BOOSE does have some drawbacks compared to Java, however. For one thing, you get what you pay for: BOOSE costs more per developer than Java, and it isn't (yet) as widely available through 24x7 vendors. BOOSE can also have dangerous side effects if used improperly; for example, it's not appropriate for real-time automotive systems, and such use may contravene existing laws in some jurisdictions. Other national laws have prohibited early adopters, who are normally essential for the growth and acceptance of a new programming environment. All of these concerns are being addressed, either in the next release of the BOOSE specification or as local legislative amendments.

Why Prefer BOOSE?

In general, BOOSE's extra flexibility for liquid programming styles more than outweighs its minor disadvantages. Probably BOOSE's greatest strength is that it leverages and increases the power of C++'s existing features:

o         Generic Programming. BOOSE offers even stronger support for generic programming than standard C++. Some developers have reported that, after only a few weeks of using BOOSE, all programs start to look the same.

o         Namespaces. In standard C++, namespaces are a relatively new feature and still not widely used. A developer who has become proficient in BOOSE tends to use namespaces much more naturally (even offensive namespaces).

o         Exception Handling. When using BOOSE, a developer quickly becomes more proficient in exceptions -- both in raising exceptions to others, and responding to exceptions thrown at the developer. It also adds the concept of exception escalation, and (in extreme cases) it allows invoking terminate() on other developers' processes to recover from integrity breaches.

o         Polymorphism. BOOSE has unparalleled support for polymorphism. No matter how well you know a developer, chances are that BOOSE will reveal another side to his or her personality.

BOOSE has unmatched strength in mixed environments:

o         Availability. Unlike most competing products, BOOSE offers critical-systems support and continuous availability during holiday periods, although some users do need more support than usual.

o         Portability. BOOSE provides easy options for migrating from single-user stations to heavy-duty configurations, from six-pack multiprocessors still suitable for a single power user on up to 24-way systems for serious multiuser environments, all using only a single operating system handle. Instead of requiring a notoriously slow and inefficient Java Virtual Filterô (JVF) layer for each new environment, BOOSE allows true filterless operation in all environments, and even BOOSE's vitreous middleware is optional and may be omitted to avoid impeding execution flow.

o         Potability. A clear advantage. See "portability."

BOOSE also has advantages for large projects:

o         Improving Teamwork. BOOSE is inherently team-oriented. It encourages greater-than-usual camaraderie on software development projects, although excessive fraternization is sometimes a problem.

o         Handling Schedule Pressure. BOOSE has also been known to work especially well on projects that are late and/or under intense schedule pressure. Especially in such high-pressure situations, developers have been known to adopt BOOSE voluntarily on their own time without prodding by management, and the effects soon spill over into working time and their current development project.

o         Promoting Team Communication. Many BOOSE users become more-than-ordinarily happy and communicative. Others have an improved ability to speak spontaneously, passionately and at great length about their program designs, usually while standing on a desk or in some other visible place (note that this also improves project visibility, a common gremlin in the software development industry).

Different developers have been found to respond to BOOSE in different ways, and it's true that some developers have less-than-positive reactions: some can become angry and irritable; others have been observed to engage in unusual and risky programming behaviour; a few become downright unpredictable. Some studies suggest that BOOSE may interfere with typing accuracy and other motor skills during and after prolonged use, and three messy keyboard cleanup incidents have been documented. (All of the latter were found to be merely gastrointestinal reflexes attributed to extreme overuse, and as isolated cases they should not be a cause for concern.)

Managers need to watch for and control these warning signs to make sure their teams get the best benefit from using BOOSE more and more extensively, but in a controlled or social setting.

The Bottom Line

It's important to note that hardly any of the positive effects of BOOSE use can be seen in developers using Java alone. Some early studies indicated that many Java-only developers started to talk and code more quickly, improving their general efficiency, but almost always this has been at the expense of later irritability and nervousness, and in the end they were rarely as happy, spontaneous or passionate as frequent BOOSE users. Finally, while Java has been known to keep developers up all hours of the night, BOOSE has just the opposite effect when used in quantity.

Keep your options open. There's more than one potable portable language out there. On your next project, consider using BOOSE: It's more potent than Java.



1. R. Klarer. C++ Extensions for Real-Time and Embedded Systems (Communications of the MCA, 1997).

2. B. Stroustrup, The C++ Programming Language, 3rd Ed. (Addison-Wesley, 1997).

3. R. Klarer. The BOOSE Programming Language (Prentice-Wiley, 1997).

Copyright © 2009 Herb Sutter