¿Existe un lenguaje de programación completo de Turing tal que para un alfabeto fijo (digamos, ASCII), cada posible permutación de esos caracteres sea un programa semánticamente válido capaz de ejecutarse?
Consideramos que los bucles infinitos también son semánticamente válidos.
Sé que algunos formatos de datos, como Markdown, poseen validez semántica universal (cada entrada es válida), pero no puedo pensar en un lenguaje de programación con esta propiedad.
Respuestas:
Cada secuencia de octeto puede interpretarse como un código Z80 válido ya que no hay códigos de operación o argumentos inválidos; Me imagino que lo mismo se aplicaría a varios otros procesadores, solo conozco personalmente Z80.
Para cosas de bajo nivel como esta, posiblemente empieces a tener preguntas sobre lo que significa "ejecutar un programa":
fuente
Tales preguntas sobre lenguajes de programación se responden casi universalmente con un sí. Si actualmente no hay un idioma que tenga la propiedad solicitada, puede apostar a que alguien lo verá como un desafío para crear un lenguaje (de juguete) que sí tenga la propiedad.
Como ejemplo de un idioma en el que cada permutación de los caracteres del alfabeto es sintácticamente válida es el lenguaje de espacios en blanco , donde el alfabeto del idioma en sí consiste en espacio, tabulación y salto de línea.
fuente
¿Por qué conformarse con cadenas (de caracteres)? Debería reformular esa pregunta a "cualquier serie de tokens". No bits, los bits son tan informáticos del siglo XX.
Entonces, los bucles infinitos están bien, dices. ¿Qué pasa con la división por cero? Si eres lo suficientemente indulgente con tu definición de válido, puedes obtener un sí, pero la mayoría de las combinaciones aún no tendrían sentido. Entonces, diría que siempre puede obtener un programa técnicamente válido pero casi nunca un programa semánticamente válido.
fuente