¿Automatizar la programación?

¡Es el objetivo de AutoBit!

En informática se han prometido muchas cosas fáciles, pero... ¡No lo son!

AutoBit comenzó siendo un programa para resolver la lógica de automatismos todo-nada, pero ha terminado como sistema capaz de programar tareas de propósito general. Fué pensado especialmente para las áreas de automatismos, pero sus características lo hacen adecuado para crear recursos educativos y otras aplicaciones sin necesidad de programar, al menos de la forma que se entiende con los lenguajes de programación clásicos.

El proyecto no ha llegado a liberarse de un aprendizaje mínimo, pero si deseas crear recursos propios no te defraudará. Puedes olvidarte de las líneas de instrucciones y recurrir solamente a representaciones gráficas, manteniendo un alto grado de flexibilidad para hacer lo que quieras.

Tengo una nueva página distribuida en secciones y con información más amplia. En ella podrás descargar gratuítamente el programa, lo que no facilita este servidor y lo que ha sido el motivo para incluir el siguiente enlace:

http://es.geocities.com/yacorre

AutoBit, un programa para recursos didácticos (y más...)

autobit.jpg

Esta es la primera versión del programa (1.0) y todavía se puede considerar como un libro en blanco, sin embargo tiene todo lo necesario para comenzar a trabajar. Si este sistema de recursos progresa, cuando tenga un poco más de rodaje habrá crecido en posibilidades que cualquiera puede añadir (la capacidad de crecer es una de sus características y con recursos adecuados se puede eliminar la necesidad de programar).

Estas son las características fundamentales del proyecto:

1.-

Está basado en componentes con capacidad de relacionarse entre sí mismos y con el usuario, de modo que lo que se define son mensajes entre componentes y no instrucciones que deban ser ejecutadas en riguroso orden. Todos los mensajes se ejecutan de forma simultánea, de la misma forma que ocurre en la vida real. Por ejemplo, si tenemos un componente que simula un gallo y le decimos que cante, no parará de cantar hasta que le digamos lo contrario, así de facil.

2.-

Todos los mensajes se configuran sin escribir código (de forma gráfica), pero la lógica de estos mensajes puede ser tan elaborada como se quiera, por ejemplo, al gallo le podemos decir que cante solo si está amaneciendo.

3.-

Una característica fundamental es que el proyecto puede seguir creciendo en recursos. Cada componente creado puede ser utilizado en cualquier programa, pero no solamente componentes gráficos, sino también aquellos que resuelven una actividad determinada. Por ejemplo un trazador de funciones de propósito general permitirá dibujar cualquier función, en cualquier posición y con cualquier escala. Es fácil deducir que con una nutrida colección de componentes se habrá eliminado la necesidad de programar

4.-

Se dispone de un editor de componentes cuyo modo de proceder es parecido al de un programa de dibujo. Se han previsto 7 tipos básicos de componentes, cada uno de ellos con unas aplicaciones características y con unos mensajes determinados que pueden recibir y transmitir. Estos componentes y sus mensajes se han pensado para conseguir la mayor flexibilidad posible en las aplicaciones. Por ejemplo los de tipo gráfico pueden contener texto y símbolos, imágenes recortables y dibujos vectoriales. Cada parte de un componente puede ser editada por separado y hacerse visible o no visible a lo largo de una secuencia (esto aporta la posibilidad de crear largas presentaciones o animaciones tipo Disney). En dicha secuencia se pueden utilizar transformaciones como las traslaciones, giros, escalado y transparencias. Hay un octavo tipo de componente (las páginas de programa) que puede programar el usuario a partir de otros componentes y es el que aporta nuevos recursos al proyecto. El usuario configura sus capacidades y define sus propios mensajes de entrada y salida

5.-

Se dispone de un editor de funciones gráficas que servirá para definir los mensajes. Los más simples consisten en consultar un mensaje de salida de un componente o cualquier otro valor, y conectarlo con un mensaje de entrada de otro componente o cualquier otra función que defina el usuario. Los mensajes de entrada se denominan funciones porque dependen de otros valores como pueden ser los mensajes de salida. Los mensajes de salida tienen entonces el carácter de variables. Aquellas funciones que dependan de más de una variable se crean mediante bloques de dos entradas (generalmente) y una salida. El editor presenta ayuda rápida y resumida sobre la función que desempeña cada tipo de bloque y cualquier otra característica necesaria.

6.-

La información que se presenta sobre el desarrollo de un programa es completa e inmediata. A medida que se construyen las funciones puede verse el resultado de su ejecución en un panel de simulación y el editor de funciones muestra todos los valores de todas las entradas y salidas, así como todo aquello que pueda ser verdadero o falso. El panel de simulación es la base para comprobar qué es lo que se necesita modicar o añadir, por ejemplo, al ver que un componente está mal posicionado, habrá que consultar las entradas de dicho componente y ver cuáles permiten posicionarlo, después solo habrá que utilizar esas entradas y asignarlas valores (la nueva posición se verá en ese mismo momento).

7.-

Cuando las funciones construidas satisfacen las condiciones planteadas, tendremos la posibilidad de crear con ello un programa o una página de programa. La diferencia fundamental está en que el programa se ejecuta en una ventana propia y la página es un componente personalizado cuyas características ya se han comentado a grandes rasgos. Un programa puede ser ejecutado desde cualquier otro programa y varios programas pueden formar un proyecto común para compartir datos del disco o comunicarse entre sí, de forma que cualquier información que modifique uno de ellos quedará actualizada inmediatamente para los demás.

8.-

La utilidad de AutoBit en el campo de los automatismos consiste en la programación manual o en la creación automática del programa que pueda controlar un automatismo simulado. Son ideales las páginas de programa para crear previamente simulaciones de automatismos, dotándolas de las entradas y salidas necesarias para el control de la simulación. Cualquier página de simulación permitirá plantear numerosos problemas de control diferentes.La resolución automática resuelve sistemas de tipo todo-nada, lo que es en definitiva una lógica de la decisión aplicable en muchas situaciones, no solamente con automatismos. Está basado en la teoría de los diagramas de Karnaugh tanto para problemas combinacionales como secuenciales, gestionando de forma automática todas las memorias que sean necesaias. El límite de variables con el que trabaja es de 30, pero pueden ser muchas más si el problema se divide en partes que lo simplifiquen.

Nuevos recursos.

Cada utilidad o recurso se acompaña de un breve archivo de ayuda que explica cómo utilizarlo en los programas y normalmente de un programa de ejemplo a modo de demostración. Alguno de estos recursos necesitan un mínimo de programación pero no será complicado en ningún caso y será mostrado en el archivo de ayuda.

1.- Presentaciones (utilidad de propósito general).

Una página de programa se encarga del control de una secuencia que puede crearse con el editor de componentes, para ello se puede elegir entre un control por teclado o por medio de botones con el ratón. Mediante una lista se crea un índice de contenidos que sirve para saltar directamente al punto correspondiente de la secuencia. El resultado final será un programa pero se podrá realizar cambios en la presentación editando la secuencia, sin necesidad de intervenir en el programa. También es posible añadir la presentación en cualquier programa que contenga otros componentes y controlarla por programa en lugar de hacerlo mediante los controles indicados anteriormente. Contiene una presentación de ejemplo que explica cómo crear sus propias presentaciones.

2.- Simulación de un aparcamiento (aprendizaje de la lógica de control).

Se trata de un ejercicio de control de un aparcamiento simulado que contiene semáforo, barrera de entrada y de salida, dispositivo de apertura de la salida mediante tarjeta, detectores para los coches y coches que entran y salen de forma aleatoria. Es posible cualquier forma de control, aunque el reto consiste en no cometer ninguna incoherencia, como sería el caso de permitir la entrada con el aparcamiento lleno o de abrir la salida sin haber pagado. El control debe programarlo el usuario, ya que es una utilidad para el aprendizaje de la lógica digital, lo cuál se ajusta perfectamente a la forma de programar con AutoBit. El programa que cumpla las exigencias será fácilmente traducible a esquemas cableados o al lenguaje de programación de autómatas y será posible obtener el programa de forma automática con el editor de funciones, simplemente indicando lo que debe ir haciendo. AutoBit contiene un tutorial que explica un sencillo ejemplo de resolución automática.

3.- Simulación de un juego de lámparas (aprendizaje de la lógica de control).

Como el anterior, es una utilidad para el aprendizaje de la lógica de control. Contiene 6 lámparas, 6 pulsadores y 6 interruptores y lógicamente, permite plantear múltiples problemas de control como pueden ser juegos de luces, secuencias, etc. Contiene un programa de ejemplo que incluye una intermitencia, varios juegos de luces, encendido aleatorio, una conmutada y encendido de un número de lámparas distinto con cada pulsador.

4.- Test de evaluación (utilidad de propósito general).

La presentación de las cuestiones y la gestión de respuestas correctas corre a cargo de una página de programa. Solo se necesita crear una secuencia con las preguntas y una lista para indicar las respuestas correctas. El programa necesario es mínimo y siempre el mismo, de modo que no es ningún problema crear todos los test que se quiera. Incluye un test de ejemplo al que se ha añadido una animación de muestra que puede servir como ejemplo para utilizar otros componentes en los test. Contiene controles para avanzar y retroceder a lo largo de las cuestiones, número de preguntas con respuesta y número total de preguntas. Cuando se completan, se muestra el número de aciertos.