As linguagens de especificação geralmente não são executadas diretamente. Elas descrevem o sistema em alto nível em comparação a uma linguagem de programação. Dessa forma, é considerado um erro a existência de detalhes de implementação em uma especificação, pois deve-se descrever o que deve ser feito, não como.
As especificações devem sofrer um processo de refinamento antes de serem implementadas de fato, isto é, a adição de detalhes de implementação. O resultado de tal refinamento é um algoritmo executável, que é tanto formatado em uma linguagem de programação ou em um subconjunto executável da linguagem de especificação.