On the Algebraic Specification of Programming Languages