PAGS'' - P′′

PAGS''
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

  1. y son palabras en P ′ ′.
  2. Si y son palabras en P ′ ′, entonces es una palabra en P ′ ′.
  3. Si es una palabra en P ′ ′, entonces es una palabra en P ′ ′.
  4. 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