Existe uma linguagem de programação completa de Turing tal que, para um alfabeto fixo (digamos, ASCII), toda permutação possível desses caracteres seja um programa semanticamente válido capaz de ser executado?
Consideramos que loops infinitos também são semanticamente válidos.
Eu sei que alguns formatos de dados, como o Markdown, possuem validade semântica universal (todas as entradas são válidas), mas não consigo pensar imediatamente em uma linguagem de programação com essa propriedade.
Respostas:
Cada sequência de octetos pode ser interpretada como código Z80 válido, pois não há opcodes ou argumentos inválidos; Eu imagino que o mesmo se aplicaria a vários outros processadores, eu apenas conheço pessoalmente o Z80.
Para coisas de baixo nível como essa, você pode começar a se perguntar sobre o que significa "executar um programa":
fonte
Tais perguntas sobre linguagens de programação são quase universalmente respondidas com sim. Se atualmente não houver um idioma que possua a propriedade solicitada, você pode apostar que alguém o verá como um desafio para criar um idioma (de brinquedo) que possua a propriedade.
Como exemplo de um idioma em que toda permutação dos caracteres do alfabeto é sintaticamente válida é o idioma de espaço em branco , onde o alfabeto do idioma em si consiste em espaço, tabulação e avanço de linha.
fonte
Por que se contentar com strings (de caracteres)? Você deve reformular essa pergunta para "qualquer série de tokens". Não bits, bits são tão computadorizados do século XX.
Então, loops infinitos estão OK, você diz. E a divisão por zero? Se você for tolerante o suficiente com sua definição de válido, poderá receber um sim, mas a maioria das combinações ainda não faria sentido. Então, eu diria que você sempre pode obter um programa tecnicamente válido, mas quase nunca um programa semanticamente válido.
fonte