ton suggested that
since the shell is written in C++,
should have been an abstract class,
and then it could have used techniques like
exceptions and Inversion of Control.
Okay, first of all, I'm not sure how Inversion of Control is
something that requires C++,
so I'm going to leave that aside.
Second of all, who says the shell is ...