The construction of special - purpose programming systems