PAGS'' - P′′
Paradigma | Imperativo , estructurado |
---|---|
Diseñada por | Corrado Böhm |
Apareció por primera vez | 1964 |
Disciplina de mecanografía | sin tipo |
Dialectos | |
Brainfuck | |
Influenciado | |
Brainfuck |
P ′ ′ (P doble prima) es un lenguaje de programación de computadoras primitivo creado por Corrado Böhm en 1964 para describir una familia de máquinas de Turing .
Definición
(en adelante escrito P ′ ′ ) se define formalmente como un conjunto de palabras en el alfabeto de cuatro instrucciones , de la siguiente manera:
Sintaxis
- y son palabras en P ′ ′.
- Si y son palabras en P ′ ′, entonces es una palabra en P ′ ′.
- Si es una palabra en P ′ ′, entonces es una palabra en P ′ ′.
- Solo las palabras derivables de las tres reglas anteriores son palabras en P ′ ′.
Semántica
- es el alfabeto de cinta de una máquina de Turing con cinta infinita a la izquierda, siendo el símbolo en blanco , equivalente a .
- Todas las instrucciones en P ′ ′ son permutaciones del conjunto de todas las configuraciones de cinta posibles; es decir, todas las configuraciones posibles tanto del contenido de la cinta como de la posición del cabezal de la cinta.
- es un predicado que dice que el símbolo actual no lo es . No es una instrucción y no se usa en programas, sino que se usa para ayudar a definir el idioma.
- significa mover el cabezal de la cinta hacia la derecha una celda (si es posible).
- significa reemplazar el símbolo actual con , y luego mover el cabezal de la cinta hacia la izquierda una celda.
- significa la composición de la función . En otras palabras, la instrucción se realiza antes .
- significa iterar en un ciclo while , con la condición .
Relación con otros lenguajes de programación
- P ′ ′ fue el primer lenguaje de programación estructurado imperativo "sin GOTO " probado con Turing-complete
- El lenguaje Brainfuck (aparte de sus comandos de E / S) es una variación informal menor de P ′ ′. Böhm da programas P ′ ′ explícitos para cada una de un conjunto de funciones básicas suficientes para calcular cualquier función computable , usando solo , y las cuatro palabras donde con denota la ésima iteración de y . Estos son los equivalentes de los seis comandos Brainfuck respectivos [,], +, -, <,> . Tenga en cuenta que , dado que , al incrementar los tiempos del símbolo actual, el resultado será "disminuir" el símbolo en la celda actual en uno ( ).
Programa de ejemplo
Böhm da el siguiente programa para calcular el predecesor ( x -1) de un entero x > 0:
que se traduce directamente al programa Brainfuck equivalente :
>[>]<[−[<[<]]−<]>+
El programa espera que un número entero se represente en notación biyectiva base-k , con la codificación de los dígitos respectivamente, y que tenga antes y después de la cadena de dígitos. (Por ejemplo, en biyectiva base-2, el número ocho se codificaría como , porque 8 en biyectiva base-2 es 112.) Al principio y al final del cálculo, la cabeza de la cinta está en la cadena de dígitos anterior.
Referencias
Enlaces web
- P ′ ′ Intérprete en línea : demostración de lacancióniterativa99 Bottles of Beerinterpretada en 337568instruccionesP ′ ′.