Вы находитесь на странице: 1из 15

Desarrollo de un entorno de

programación para Máquinas de


Turing
Introducción


MT permiten describir mediante operaciones sencillas
todas las operaciones computables.

En teoría las MT tienen cinta infinita, ordenadores
actuales memoria finita: MT más potentes que los
ordenadores actuales computacionalmente.

Importancia de las Máquinas de Turing en la
formación de cualquier estudiante de computación.
Propósito

El propósito de este proyecto es construir un entorno de


programación que permita construir, simular y compilar
programas de Máquinas de Turing. El sistema, además,
deberá proporcionar mecanismos para transformar
código sencillo en Pascal en su correspondiente
Máquina de Turing.
Objetivos (I)

Realizar un estudio bibliográfico sobre las MT y sus
distintas variantes, para ver cuales pueden ser
implementadas en un ordenador actual y cuáles no.

Desarrollar un simulador, al que se le indique dónde
puede encontrar el texto que describe una MT y sus
cintas de entrada y simule visualmente la MT,
permitiendo la depuración de la misma.

Desarrollar un programa al que dado un código fuente
sencillo en Pascal lo transforme en su correspondiente
código de MT.
Objetivos (II)

Desarrollar un compilador que compile y optimice en
lo posible el código de una MT. El programa ejecutable
deberá permitir la entrada mediante parámetros una o
varias cintas de entrada.

Desarrollar un editor de texto que facilite la
codificación de Máquinas de Turing o programas en
Pascal.

Integrar todas las partes desarrolladas en un entorno de
desarrollo integrado (IDE).

Realizar un manual de instrucciones que indique cómo
codificar las MT y cómo utilizar el entorno.
Resultados

Un volumen impreso donde se pueda estudiar
la teoría de las Máquinas de Turing.

Un compilador de Máquinas de Turing.

Un IDE que permita escribir, depurar, simular y
compilar Máquinas de Turing (escritas en
código MT o mediante código Pascal).

Documentación en HTML acerca del uso del
entorno.

Manual de usuario.
Palabras clave

Máquinas de Turing.

Simulador.

Compilador.

Transformador de código.

Editor de texto.
Visión general


Muchos proyectos que simulan MT de una sola cinta.

Menos proyectos que simulan MT de varias cintas o
varias pistas.

Pocos proyectos que compilan MT creando código
ejecutable.

Ningún proyecto que convierte código de alto nivel en
código de Máquina de Turing.
Investigaciones o trabajos
parecidos

http://www.igs.net/~tril/tm/: este proyecto simula MT de una sola cinta.

http://www.cheransoft.com/vturing/: entorno de desarrollo que permite
la simulación y depuración de MT de una sola cinta.

http://www.nmt.edu/~prcm/turing/: en este link hay dos versiones de
simuladores de Máquinas de Turing: una versión para UNIX
(descargable) y una aplicación web.

http://www.ncc.up.pt/fado/node2.html: una versión para línea de
comandos y otra visual de un simulador de MT para una sola cinta de
entrada.

http://www.cs.binghamton.edu/~lander/tm_source/tmdoc.html:
simulador que permite varias cintas de entrada.
Tipo de proyecto

Este proyecto se puede considerar un proyecto de


desarrollo. Sin embargo contiene una pequeña parte de
investigación bibliográfica.
Preguntas de investigación e
hipótesis.


¿Sobre qué sistema operativo funcionará el proyecto?

¿Existirá una versión de software libre del sistema?

¿Cuáles serán los requisitos software del sistema?

¿Qué tipos de Máquinas de Turing será capaz de
compilar / simular?
Métodos


Búsqueda bibliográfica.

Para el desarrollo se seguirá un subconjunto de las
tareas de Métrica versión 3.

Análisis y diseño orientado a objetos (usando
diagramas UML).

Programación orientada a objetos.
Recursos requeridos (HW y SW)

Hardware:
No se requiere nada especial, un simple PC basta.

Software:

Java Development Kit (JDK).

Entorno de desarrollo para Java (NetBeans)

Herramientas Flex y Bison.

Compilador de C/C++ (Lcc)
Recursos requeridos
(Bibliografía)
Sobre Máquinas de Turing:

Introduction to Automata Theory, Languages, and Computation.
John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman.

The Universal Turing Machine: A Half-Century Survey
(Computerkultur, Bd 2). Rolf Herken.

Introduction to the Theory of Computation. Michael Sipser.

Sobre compiladores:

Compiladores: principios, técnicas y herramientas. Aho, Sethi y
Ullman.

Writing Compilers and Interpreters. Ronald Mak.

Sobre las herramientas a usar:



Lex & Yacc. John R. Levine, Tony Mason, Doug Brown.

Thinking in Java (3rd. Edition). Bruce Eckel.

Plan de proyecto

Enlace a diagrama de Gantt