And the programmer, having once gotten the dice-rolling thing straight will never have to worry about it again. Total showing on first pair of dice. Total showing on second pair of dice. Roll the two pairs of dice until totals are the same. Count this roll.
Constructors are subroutines, but they are subroutines of a special type.
They are certainly not instance methods, since they don't belong to objects. Since they are responsible for creating objects, they exist before any objects have been created. The are more like static member subroutines, but they are not and cannot be declared to be static . I call this an expression because it computes and returns a value, namely a reference to the object that is constructed. Most often, you will store the returned reference in a variable, but it is also legal to use a constructor call in other ways, for example as a parameter in a subroutine call or as part of a more complex expression.