dc is the oldest language on Unix; it
was written on the PDP-7 and ported to the PDP-11 before Unix [itself]
was ported.
--Ken Thompson
The domain of these two languages is unlimited-precision
arithmetic. Other programs can use them to do such calculations
without having to worry about the special techniques needed to do
those calculations.
In fact, the original motivation for dc had nothing to do with
providing a general-purpose interactive calculator, which could have
been done with a simple floating-point program. The motivation was
Bell Labs' long interest in numerical analysis: calculating constants
for numerical algorithms, accurately is greatly
aided by being able to work to much higher precision than the
algorithm itself will use. Hence dc's arbitrary-precision
arithmetic.
--Henry Spencer
Like SNG and Glade markup, one of the
strengths of both of these languages is their simplicity. Once you
know that
dc(1)
is a reverse-Polish-notation calculator and
bc(1)
an algebraic-notation calculator, very little about interactive use of
either of these languages is going to be novel. We'll return to the
importance of the Rule of Least Surprise in interfaces in Chapter11.