Sí, troff es Turing completo. Es compatible con la recursión arbitraria y la ramificación condicional, que es suficiente. También tiene registros y varias otras formas de almacenar datos, lo que le brinda otra ruta de acceso nuevamente.
La integridad de Turing no implica que los programas altamente complejos sean prácticos , solo que son teóricamente posibles, de alguna manera, en algún nivel de eliminación, y su ausencia tampoco implica que no lo sean, por lo que ni Troff está siendo Turing completo ni el la ausencia de programas complejos no sugiere mucho de una manera u otra al respecto.
La integridad de Turing no es, en general, una propiedad que signifique algo útil para el usuario. Lo único que significa es que se puede simular una máquina de Turing con él, no es que te gustaría, y no es que la salida que se obtendría de ella es algo parecido a lo que cabría esperar para leer. La entrada o salida puede ser solo un número, o incluso la cantidad de veces que aparece algo, en lugar de algo útil, y el tipo de máquina que termina simulando y sus programas a menudo apenas son comprensibles para comenzar.
Por cierto, muchos lenguajes y sistemas son Turing completos pero no son razonablemente aplicables para cualquier programación real en ese subconjunto (por ejemplo, Conway's Game of Life o CSS), y algunos lenguajes que son útiles para la programación real no son Turing completos (por ejemplo, Agda). Las características definitorias realmente son que puedes
- sigue para siempre
- recuerda tantos datos como quieras
- elegir qué, si algo, hacer a continuación
A menudo, esas propiedades, particularmente la no terminación, son realmente indeseables, posiblemente incluso para troff. Fuera de la informática teórica y el diseño del lenguaje, la integridad de Turing no es una propiedad terriblemente interesante prácticamente de la época, a pesar de ser pegadiza.