Estou feliz com a resposta de Adrej, mas gostaria de me aprofundar mais.
Para começar, a semântica denotacional quer dizer algo como "o significado dessa notação é esse". Um semanticista real gostaria de imaginar que os significados são o que existem em nossa mente e as notações são apenas uma maneira de expressar esses significados. O requisito de que a semântica denotacional deve ser de composição segue isso. Se os significados são primários e as notações secundárias, então não temos escolha a não ser definir os significados de notações maiores como funções dos significados de seus constituintes.
Se aceitarmos esse ponto de vista, uma boa semântica denotacional precisará capturar os significados que presumimos ter em nossa mente. Qualquer semântica de composição não seria necessariamente adequada. Se eu chegar a uma definição semântica composicional e ninguém concordar que ela declare qualquer significado que eles tenham em mente, será de pouca utilidade. A semântica de jogos atualmente está nessa situação. É uma definição de composição e tecnicamente bastante forte, mas poucas pessoas concordam que isso tenha algo a ver com os significados que eles têm em mente.
Dito isto, qualquer definição de composição tem várias vantagens técnicas. Podemos usá-lo para verificar equivalências ou outras propriedades por indução na sintaxe dos termos. Podemos usá-lo para verificar a solidez dos sistemas de prova, novamente por indução na sintaxe dos termos. Podemos verificar a correção dos compiladores ou técnicas de análise de programas (que, por sua natureza, são definidas por indução na sintaxe). Uma definição semântica totalmente abstrata tem vantagens ainda mais técnicas. Você pode usá-lo para mostrar que dois programas são não equivalentes, o que você não pode fazer com nenhuma semântica composicional arbitrária. Uma definição semântica totalmente definível é ainda melhor. Aqui, os domínios semânticos têm exatamente o que você pode expressar na linguagem de programação (com algumas ressalvas). Portanto, você pode enumerar os valores nos domínios para ver quais valores existem, o que seria difícil de fazer com as notações sintáticas. Por todas essas razões, a semântica dos jogos é brilhante.
No entanto, as definições semânticas composicionais têm perdido sua vantagem ao longo dos anos. Robin Milner e Andy Pitts desenvolveram várias técnicas de " raciocínio operacional ", que funcionam puramente na sintaxe, mas usam a semântica operacional sempre que necessário para falar sobre comportamento. Essas técnicas operacionais de raciocínio são de baixa tecnologia. Sem matemática sofisticada. Não há objetos infinitos. Podemos ensiná-los a estudantes de graduação e qualquer pessoa pode usá-los. Portanto, muitas pessoas fazem a pergunta por que precisamos de semântica denotacional. (Martin Berger provavelmente está neste campo.)
Pessoalmente, não tenho nenhum problema em ter muitas ferramentas em minha caixa de ferramentas. Técnicas denotacionais podem ter uma pontuação melhor para alguns problemas e técnicas operacionais para outros. Os pesquisadores que desenvolvem a teoria podem estar melhor sintonizados em uma abordagem ou outra. Com bastante frequência, podemos desenvolver os insights em uma abordagem e transferi-los para a outra. (Muito do trabalho de Andy Pitts é desse tipo. A parametridade relacional foi desenvolvida no cenário denotacional, mas ele é capaz de descobrir como reafirmar isso como raciocínio operacional. Quando olho para ele, digo "uau, eu nunca teria pensei que isso seria possível. "A lógica de separação também está indo nessa direção. Steve Brookes deu uma prova de integridade de 60 páginas para a lógica de separação simultânea usando semântica denotacional.
As abordagens operacionais também têm uma pontuação brilhante quando as linguagens de programação ficam muito sofisticadas, com todos os tipos de tipos de ordem superior em loop. Podemos não ter idéia de como modelar essas coisas matematicamente. Ou, os modelos matemáticos padrão podem se tornar inconsistentes sob o estresse da malha. (Por exemplo, consulte "O polimorfismo não é teórico-definido" por Reynolds.) Abordagens operacionais que funcionam puramente na sintaxe podem perfeitamente evitar todos esses problemas matemáticos.
Outra abordagem intermediária entre as abordagens operacional e denotacional é a capacidade de realização . Em vez de trabalhar com termos sintáticos, como nas abordagens operacionais, passamos a denotar parte, usando alguma outra forma de representantes matemáticos. Esses representantes podem não se qualificar como "significados" denotacionais reais, mas seriam pelo menos um pouco mais abstratos do que termos sintáticos. Por exemplo, para o cálculo lambda polimórfico, podemos primeiro atribuir significados a termos não digitados (em alguns modelos do cálculo lambda não digitado) e depois usá-los como representantes ('realizadores') para fazer alguma forma de "raciocínio operacional" de maneira ligeiramente nível mais abstrato.
Portanto, que haja uma concorrência saudável entre as abordagens denotacional, operacional e de realização. Não há mal nenhum.
Por outro lado, também pode haver alguma competição "prejudicial" crescendo entre as diferentes abordagens. As pessoas que trabalham com uma abordagem podem estar tão intimamente ligadas a ela que podem não entender o objetivo das outras abordagens. Idealmente, todos devemos estar cientes dos pontos fortes e fracos das diferentes abordagens e desenvolver uma atitude científica em relação a elas, mesmo que não sejam nossos favoritos individuais.