modelos computacionales - escuela de informática UTEM

Anuncio
MODELOS
COMPUTACIONALES
Alejandro Aguilar García
Natalia Domínguez Corbacho
Jerónimo Valverde Martínez
Manuel Chacón Martín
María Cuevas Rodríguez
Carlos Porta Gómez
Elementos de Programación
1º C E. T. S. I. Telecomunicaciones
INDICE
INTRODUCCIÓN...............................................................................pág. 3
MÁQUINA DE TURING....................................................................pág. 5
MODELO DE JOHN VON NEUMANN.............................................pág. 7
MODELO HARVARD........................................................................pág. 8
SISTEMAS DE PROGRAMACIÓN FUNCIONAL ..........................pág. 11
SISTEMAS FORMALES FUNCIONALES ......................................pág. 13
BIBLIOGRAFÍA ...............................................................................pág. 15
2
INTRODUCCIÓN
NATURALEZA DE LOS COMPUTADORES
-------------------------------------------------------Para abordar el tema de los modelos computacionales hay que tener más o
menos claras algunas definiciones básicas:
¿Qué es un COMPUTADOR?
Aunque una definición exacta sería muy difícil de encontrar se podría definir como un
sistema al que se le suministra información en forma de datos para luego devolvernos
unos resultados acordes con la resolución de un determinado problema. Por lo tanto
podríamos decir que el objetivo del computador es básicamente resolver problemas.
Para ello hace uso de los programas.
¿Qué es un PROGRAMA?
Es una secuencia de instrucciones que resuelven determinados problemas planteados.
¿Qué es la INFORMACIÓN?
En general es cualquier conjunto de noticias, informes o datos que nos aportan algún
nuevo conocimiento. En informática más concretamente estos datos se transmiten en
forma de señales.
Antecedentes históricos
---------------------------La Computación tiene su origen en el cálculo, es decir, en la preocupación del
ser humano por encontrar maneras de realizar operaciones matemáticas de forma cada
vez más rápida y más fácilmente. Pronto se dio cuenta que con ayuda de aparatos y
máquinas las operaciones podían realizarse de forma más rápida y automática.
El primer ejemplo que encontramos en la historia es el ábaco, aparecido hacia el
500 AC en Oriente Próximo, que servía para agilizar las operaciones aritméticas
básicas.
También es digno de señalar el conocido Mecanismo de Antikythera, recuperado
en 1900, construido alrededor del año 80 a.C., en la isla griega de Rodas. Era un
artefacto de cálculo astronómico con mecanismos de precisión. El usuario, por medio de
una perilla, podía accionar un simulador en miniatura del movimiento del sol, la luna y
varios planetas, teniendo a la vista la fecha en que se había dado, o se daría, tal
combinación.
La historia de la computación es muy extensa por que a continuación citaremos
los acontecimientos más relevantes hasta la primera generación de computadores, donde
surgieron los primeros modelos computacionales:
1623.Shickard construye la primera calculadora, basada en ruedas dentadas y capaz de
sumar y multiplicar.
3
1642.Pascal a la edad de 19 años inventa para su padre (un contable) una máquina que
suma y resta.
1671.Leibnitz mejora la máquina de Pascal, siendo capaz de multiplicar y dividir.
1777.Mahon construye una máquina aritmética y otra lógica, "Demostrador de
Stanhope".
1820.Charles Babbage construye en parte la máquina analítica, considerándose el
primer computador digital de próposito general. Sus características eran: trabajaba con
una aritmética de 50 digitos decimales, tardaba 1 segundo en hacer sumas y restas y
alrededor de un minuto con las multiplicaciones y divisiones, utilizaba tarjetas
perforadas para las operaciones y las variables.
1854.Boole publica "Las leyes del pensamiento" sobre las cuales son basadas las teorías
matemáticas de Lógica y Probabilidad. Empezaba asi el Álgebra Booleana, que consiste
en un método para resolver problemas de lógica que recurre solamente a los valores
binarios 1 y 0 y a tres operadores: AND, OR y NOT.
1890.Hollerith construye una máquina para tabular el censo.
1914.Torres Quevedo con tecnología electromagnética diseña los esquemas de una
calculadora digital.
1936.Alan Turing contestó a la cuestión de si las matemáticas son "decidibles",
planteada años atras, construyendo un modelo formal de computador, la Máquina de
Turing, y demostrando que había problemas tales que una máquina no podía resolver.
Al mismo tiempo en Estados Unidos contestaba a la misma cuestión Alonzo Chuch,
basándose en una notación formal, que denominó cálculo lambda, para transformar
todas las fórmulas matemáticas a una forma estándar.
1938.Stibitz crea MODEL I, el primer sistema con terminales remotos, que empleaba
números complejos para cálculos balísticos.
1941.Basándose en los resultados de Turing y de Chuch, Zuse diseñó y construyó su
serie de computadores electromecánicos binarios, desde el Z1 hasta el Z3.
1942.Atanasoff construye una máquina de propósito general con tubos de vacío. Fue la
primera computadora electrónica digital.
1943.Mauchy y Eckert construyen el ENIAC (Electronic Numeric Integrator and
Calculator). Sus características: empleaba 18000 tubos de vacío; consumía 150 kW;
tenía una medidas de 30x2,5 metros; utilizaba 20 registros de 10 dígitos decimales;
tardaba 200 microsegundos en la suma, 2,8 milisegundos en la multiplicación y 6
milisegundos en la división; seguía utilizando el sistema de tarjetas perforadas.
1945.Von Neumann tiene una idea innovadora que es almacenar en una memoria rápida
datos e instrucciones para que para modificar un programa baste con modificar las
instrucciones almacenadas en la memoria. A este modelo se le conoce como "Modelo
de von Neumann" y es el que aún en día emplean los computadores.
4
MÁQUINA DE TURING
Alan Mathison Turing, matemático y computador científico inglés, desarrolló en
torno a 1935 y 1945 un modelo computacional hipotético que permite en teoría resolver
cualquier problema matemático siempre y cuando se reduzca a un algoritmo (conjunto
ordenado y finito de operaciones que permiten la resolución de un problema, como por
ejemplo la extracción de raíces cuadradas o el cálculo de una suma, producto o división
de números, etc). De esta forma será posible calcular funciones dadas a partir de las
operaciones más simples posibles y, aunque sea un algoritmo muy complejo, será
posible descomponerlo en una mayor cantidad de pasos hasta resolverlo. Este modelo,
que en principio vino a llamarse Máquina de computación lógica (“Logical Computing
Machine”), pero que en honor a su ideador se le acabó llamando máquina de Turing, es
considerada la precursora de la computación digital moderna a pesar de su sencillez
estructural. Según la Tesis de Church-Turing (llevada a cabo por Alan Turing y Alonzo
Churh a mediados del siglo XX de forma independiente), se demuestra que un problema
es computable si se puede construir una máquina de Turing capaz de llevar a cabo el
procedimiento para resolverlo y que para cualquier otra máquina alternativa a ésta, se
puede crear una Máquina de Turing equivalente capaz de resolver cualquier
computación que se realice en la otra máquina.
Un esquema básico de lo que puede ser una Máquina de Turing es el siguiente:
Los componentes de esta máquina y sus descripciones son:
• Memoria: se trata de una cinta infinitamente larga dividida en celdas cuadradas
en cada una de las cuales hay un símbolo de un código (por ejemplo, un símbolo del
código binario, es decir, un 1 o un 0, por lo que la cinta ocupa un bit). Este conjunto de
símbolos, o código, es lo que se conoce como alfabeto de la máquina. En esta memoria
se permite el almacenamiento tanto de la información introducida y de los datos de
salida, como de los pasos intermedios que se han llevado a cabo para resolver el
algoritmo, lo que permite algo muy útil: hacer un seguimiento del proceso llevado a
cabo. Debido al múltiple uso que se le da a la memoria y a la imposibilidad de conocer
el número de pasos intermedios que la máquina va a necesitar, es por lo que la cinta
debe ser ilimitada. Es precisamente este detalle de memoria sin fin lo que le otorga tanta
importancia a la máquina de Turing.
5
• Cabezal de lectura-escritura: es un dispositivo capaz de realizar cuatro
operaciones: desplazarse una posición a la derecha respecto a la celda actual,
desplazarse una posición a la izquierda, leer el contenido de la celda en la que se
encuentra y escribir un símbolo distinto al que había sido leído por el cabezal o escribir
nuevamente el que había en la celda.
• Procesador: es un dispositivo digital que puede dividirse en dos partes atendiendo
a las distintas funciones que cumple cada una dentro de la máquina. Por un lado existe
un registro de estado que contiene un número determinado de posibles estados internos
de la máquina y que almacena el estado concreto en el que se encuentra el procesador.
Por otra parte existe una tabla de acción que contiene las instrucciones de lo que realiza
la máquina en cada instante de tiempo. Esta última parte del procesador es la encargada
de decidir cuál será el nuevo estado, el símbolo que se va a escribir en la cinta y la
dirección que tomará el cabezal dependiendo del carácter que se acaba de leer y del
estado actual interno. Por así decirlo, esta parte contendría todo el programa posible de
la máquina.
La máquina de Turing funciona de la siguiente forma para realizar una computación
Z=f(x): el dato de entrada x se codifica de forma que se pueda almacenar en la memoria,
entonces se comienza el proceso con los pasos para resolver la función, escribiéndolos
en la memoria. Cuando termine la última operación, la máquina reflejará en la cinta el
resultado.
Por este mismo hecho de que la propia máquina, como si de una mente humana se
tratara, es la que toma las decisiones dependiendo del estado interno del procesador y de
la información externa que el cabezal lee en la cinta, este modelo computacional es
considerado una máquina autómata capaz de alterar su propio programa. Es más, Turing
estaba más interesado en la posibilidad de crear modelos lógicos cuyas acciones se
asemejaran al funcionamiento de la mente, que en las aplicaciones prácticas de un
modelo de computación.
A pesar de ser sólo un modelo teórico, a la máquina de Turing se la considera una
máquina por el hecho de que su funcionamiento se reduce a operaciones tan simples y
reales que se ajustan a la definición de dispositivo. Esto ha hecho que existan numerosas
versiones prácticas de este modelo, aunque no se trata de máquinas de Turing completas
porque sus memorias están limitadas al ser imposible construir modelos reales con
memoria ilimitada. Es más, es tan importante en el mundo de la computación que hoy
en día, numerosos trabajos de computación toman como referencia este modelo
computacional.
6
MODELO DE JOHN VON NEUMANN
Desde tiempos muy antiguos el hombre ha necesitado hacer cálculos. Para ello se ha
buscado maquinas que lo ayudasen, como el ábaco, las hileras de John Napier… La
primera maquina interesante es la “La Maquina Analítica” de Charles Babbage.
En 1945John Von Neumann (1903 – 1957) creó un modelo computacional que se
caracteriza por disponer de una única memoria principal en la que se almacenan los
datos y las instrucciones. A esta memoria se accede a través de un sistema de buses
único: bus de datos, de direcciones y de control. Este modelo se usa hoy día para
describir los lenguajes de programación convencionales y es la base de prácticamente
todos los modelos de ordenadores.
Modelo de Von Neumann
Este modelo tiene varias características clave que se muestran de una manera u otra
en todos los sistemas actuales:
.
Una Unidad de Memoria (a memory unit) que almacena valores e instrucciones en
unos lugares específicos denominados celdillas, los cuales forman la memoria y son de
un tamaño prefijado.
Una Unidad Central de Proceso, UCP (a central processing unit, CPU) que accede a
la memoria de forma secuencial.
Una Instrucción (an instruction) que especifica alguna secuencia particular de
actividades en la CPU que modifican los contenidos de las localizaciones de la memoria
o los registros de la CPU.
Un Programa (a program) que consiste en una secuencia ordenada de instrucciones
colocada en la memoria.
Un Controlador de Programa (a Program Counter) en la CPU para seleccionar la
siguiente instrucción de la memoria
Un Lenguaje de Programación (a programming language) que especifica como y
que instrucciones se pueden colocar en la memoria.
7
Los sistemas basados en el modelo de Von Neumann tienen un solo bus para acceder
tanto a datos como a instrucciones y esto es una de las características más incomodas de
este sencillo modelo. Diremos que un microcontrolador es de 4 bit cuando el bus de este
sea de 4 bit, será de 8 bit cuando el bus sea de 8 bit...
Aunque por otra parte se puede considerar una ventaja, ya que al haber un único
cableado (bus) para el acceso a datos e instrucciones, se facilita en gran medida la
conexión de memoria externa a través de las líneas de entrada salida con una mínima
implementación extra de hardware.
Por contra, tenemos que una instrucción puede ocupar más de unbyte con lo que
para poder leer la instrucción completa tendremos que hacer varias lecturas en la
memoria con lo que debemos de emplear varios ciclos de reloj para extraer una
instrucción.
Otra desventaja es que es posible que el contenido del contador del programa (PC) se
corrompa con lo que se podría estar leyendo un dato y tratar de interpretarlo como
instrucción pudiendo producirse como consecuencia un deterioro y caída del sistema.
Normalmente un microprocesador debe de controlar que el PC no haga cosas raras.
La principal característica del modelo de Von Neumann es que durante su ejecución,
los programas únicamente pretenden “modificar la memoria”. Debemos conocer las
localizaciones de los datos antes de ejecutar los programas para recoger después los
resultados. Esto es internamente patente en el funcionamiento y la semántica de los
lenguajes de programación convencionales. En estos lenguajes de programación la
instrucción más importante es la de asignación. Todos los lenguajes de programación
convencionales disponen de modos de asignación más o menos significativos.
Otra de las características que poseen los microcontroladores basados en este tipo de
arquitectura es que suelen tener un repertorio de instrucciones bastante grande. Este tipo
de repertorio se llama CISC del inglés Complex Instruction Set Computer. La
característica principal que este tipo de conjunto de instrucciones que suele ser bastante
elevado y las instrucciones están microcodificadas, es decir, que una instrucción será
decodificada por la CPU en varias instrucciones básicas.
MODELO DE HARVARD
La arquitecturaHarvard se caracteriza por tener la memoria de datos separada de la
memoria del programa y estas a su vez están unidas a la CPU a través de buses
independientes, luego, pueden tener distintos contenidos en la misma dirección.
La arquitectura deHarvard permite a la CPU acceder silmutáneamente a las dos
memorias. Además propicia numerosas ventajas al funcionamiento del sistema.
Arquitectura del modelo de Harvard
8
El que la información se almacene en palabras tiene una gran ventaja y es que tanto
el codop como el dato asociado a este están en la misma posición por lo que su lectura
es mucho más rápida. Esta es una gran ventaja ya que dota al microcontrolador de gran
agilidad. La técnica de procesar varias instrucciones al mismo tiempo se conoce como
pipelining o segmentación. Con esta técnica se dividen las instrucciones en distintas
etapas de modo que el procesador puede procesar distintas instrucciones en estas etapas.
Una desventaja de este sistema es que la adición de memoria externa es mucho mas
compleja en incluso a veces imposible.
Este modelo presenta más rapidez de ejecución de código, incluso en algoritmos de
división que vienen implementados con más código en los RISC que el los CISC, la
velocidad de ejecución es mayor en los primeros. Menor número de instrucciones es una
ventaja a la hora de elegir este tipo de microcontroladores para determinadas tareas, no
hace falta aprender tantas instrucciones cuando queremos programar un mcu para una
tarea simple.
Por contra usaremos en general más memoria en un pic que en un HC11 para realizar
una misma función, aunque depende de ésta, hablamos en general.
Comparación Von Neumann – Harvard
Harvard y Von Neumann son dos arquitecturas que se caracterizan por la forma en la
que distribuyen la memoria de datos y de programa dentro de un microcontrolador.
Modelo de Von Neumann
Modelo Harvard
En la arquitectura
Harvard, la memoria de datos y de programa están separadas,
usando para almacenar las instrucciones lo que se llaman palabras. Palabras las hay de
muchos tamaños como por ejemplo en los microcontroladores PIC. Los PIC de gama
baja usan palabras de 12 bit, los de gama media 14 bit y los de gama alta 16 bit.
Por otro lado esta la arquitectura
Von Neumann que se caracteriza por tener la
memoria de programa y la de datos implementada en un mismo bloque de memoria
compartiendo datos e instrucciones en un mismo bus.
En este tipo de microcontroladores se usan
bytes para almacenar datos e
instrucciones.
Un ejemplo de estos microcontroladores son losZilog, National Semiconductors o
los de Motorola.
Ambas arquitecturas tienen ventajas e inconvenientes, como hemos enumerado en
apartados anteriores, y como siempre en el mundo de la electrónica, dependiendo de la
aplicación en la que vayamos a usar el microcontrolador, frecuencia de trabajo,
conexión a otros periféricos etc, deberemos de elegir un microcontrolador u otro.
9
En esta tabla podemos ver una comparación de ambos modelos.
Microcontrolador Arquitectura Conjunto de instrucciones Nº de instrucciones
Pic 16Cxxx
Hardvard
RISC
35
Pic 17Cxxx
Hardvard
RISC
58
Motorola HC11
Von Newman
CISC
109
Intel 8051
Von Newman
CISC
40
Así pues podemos decir que la principal ventaja de usar
mcu´s con conjunto de
instrucciones CISC es que para una instrucción compleja solo usaremos una posición de
memoria al contrario que ocurre con RISC que para realizar por ejemplo una división
debemos de usar varias instrucciones consumiendo más memoria.
Frente a esta ventaja de los repertorios CISC, se nos presenta una desventaja con
respecto a los RISC, y es que el ancho de banda se va reducido considerablemente
debido a que una instrucción va a consumir varios ciclos de instrucción para ejecutarse,
ya lo vimos antes, estos microcontroladores son más lentos que los que usan repertorios
RISC y además puede ser que el conjunto de instrucciones sea bastante grande, véase
Motorola HC11 lo que no es una gran pega pero si mas trabajo para aprendérselo y
aprender a usarlo.
10
SISTEMA DE PROGRAMACIÓN FUNCIONAL
(FP system)
Descripción
Un modelo funcional se caracteriza por tener simplemente funciones sin
variable, en este tipo de sistemas la descripción esta seguida por algunos ejemplos y por
una discusión de varias propiedades del sistema
En este tipo de sistemas encontramos que se usan un número fijo de formularios
llamados formularios funcionales. Esto añadiéndole algunas definiciones simples son
usadas para construir funciones nuevas desde algunas existentes. Todas las funciones de
un sistema funcional son de un solo tipo (enlazan objetos con objetos).
Los formularios funcionales, al contrario que la mayoría de las construcciones
de programación, están asociadas al álgebra lo que ofrece poderosas construcciones de
programación pero también tienen propiedades algebraicas atractivas:
Una lección de ellas para maximizar la fuerza y utilidad de las leyes del álgebra que las
relacionan con otros formularios de este sistema.
En la siguiente descripción nosotros debemos ser imprecisos en no distinguir
entre una función símbolo o expresión, y la función que denota. Debemos indicar el
símbolo y la expresión para denotar funciones por ejemplo y uso.
Un sistema funcional se compone de lo siguiente:
a) Un conjunto O de objetos
b) Un conjunto F de funciones
c) Una operación (aplicación)
d) Un conjunto F de formularios funcionales que se usan para combinar funciones
existentes u objetos para formar nuevas funciones en F
e) Un conjunto D de definiciones que definen algunas funciones en F y asignan un
nombre a cada una
Observaciones acerca del sistema de programación funcional
Los sistemas de programación funcional son tan simples que algunos usuarios
pueden encontrarlo difícil de ver como un lenguaje de programación.
Este sistema contiene un cierto numero de limitaciones, al tener un lenguaje fijo
no son capaces de modificar la librería del programa
Un sistema de programación funcional no puede computar un programa cuando
las expresiones funcionales no son objetos. Ni tampoco puede definir nuevos
11
formularios funcionales sin un sistema funcional (estas limitaciones no se encuentra en
los sistemas funcionales formales, “FFP”)
El poder expresivo de este tipo de sistemas suponga dos sistemas funcionales,
ambos tienen el mismo conjunto de objetos y el mismo conjunto de funciones
primitivas, pero el conjunto de formularios del primero incluye correctamente al
segundo. Suponga también que otros sistemas pueden expresar todas las funciones
computables de objetos, sin embargo podemos decir que el primero es mas expresivo
que el primero cuando todas las funciones expresadas en el segundo pueden ser
duplicadas en el primero, pero usando un formulario no perteneciente al segundo, el
primero puede expresar mas directamente y fácilmente algunas funciones que el
segundo.
La principal razón por la que los sistemas funcionales están considerados mas
simples que otros lenguajes convencionales es que solo usan un sistema fijo y elemental
de nombramiento. Lo más importante es que trata los nombres como funciones que
pueden ser combinadas con otras funciones sin tratamiento especial. Esto le permite la
oportunidad de desarrollar a un nivel más alto las técnicas para manipular y producir
programas superando en este aspecto al sistema de Von Neumann.
Otros problemas interesantes son encontrar algoritmos par expandir y analizar el
comportamiento de las funciones para varias clases de argumentos y explorar caminos
de uso de leyes y teoremas como reglas básicas de un esquema formal.
El álgebra del sistema de programación funcional
Este sistema requiere un conocimiento moderado de matemáticas y lógica, pero
el nivel teórico necesario lo puede alcanzar cualquiera que trabaje fuera del campo de
las matemáticas.
Una ventaja de esta álgebra sobre otras técnicas, es que el programador puede
usar su propio lenguaje como un lenguaje de pruebas derivadas.
En el corazón de este álgebra hay leyes y teoremas, las cuales son fáciles de
entender y de justificar, y poderosas para usar. Posiblemente nosotros también
deseamos usar dichas leyes para resolver ecuaciones en las cuales desconocemos si una
ecuación tiene función aparente en ambos lados de la ecuación.
El objetivo es desarrollar una fundación para el álgebra de programa que
disponga de problemas teóricos, así el programador puede usar leyes algebraicas
simples y uno o dos teoremas de fundaciones para resolver problemas y crear problemas
del mismo estilo como los que nosotros nos encontrábamos en el instituto.
En el álgebra usado en este tipo de sistema de programación, para unas
variables, aumenta el rango de funciones del sistema. Las operaciones de álgebra se
realizan mediante formularios funcionales.
Este álgebra necesita mucho trabajo para proporcionar expansiones para tipos de
ecuaciones largas y para extender sus leyes y teoremas.
12
SISTEMAS FORMALES FUNCIONALES
(FFP System)
Como ya hemos visto, un sistema de programación funcional tiene un conjunto
de funciones que depende de un conjunto de funciones primitivas, un conjunto de
formularios funcionales y un conjunto de definiciones. En particular, es un conjunto de
formularios funcionales fijados en un principio y para todos, y este conjunto determina
el poder del sistema en el principal camino. Por ejemplo, si este conjunto de formularios
funcionales está vacío, entonces el conjunto de funciones se reduce apenas al conjunto
de funciones primitivas.
En un sistema funcional formal uno pude crear nuevos formularios funcionales. Los
formularios funcionales están representados por secuencias de objetos; El primer
elemento de una secuencia de objetos determina que forma lo representa, mientras que
el resto de los elementos son los parámetros del formulario.
La capacidad para definir nuevos formularios funcionales en sistemas
funcionales formales es una consecuencia de la diferencia principal entre estos sistemas
y otros sistemas:
En los sistemas funcionales formales los objetos se usan para “representar”
funciones en un camino sistemático. En este sentido los sistemas funcionales formales
se parecen bastante a los sistemas de programación funcional.
En estos sistemas se parte de una sintaxis simple, discutiendo su semántica
informalmente, dando ejemplos y finalmente obteniendo su semántica formal
Sintaxis
Describimos un conjunto O de objetos y el conjunto E de expresiones en un
sistema funcional formal. Estos dependen de la opción de cierto conjunto A de átomos,
cuál tomamos según lo dado.
Asumimos que T (verdadero), F (falso), ø (secuencia vacía) y # (defecto) pertenecen a
A, así como números de varias clases, etc.
a) Fondo, _, es un objeto pero no un átomo.
b) Cada átomo es un objeto.
c) Cada objeto es una expresión
d) Si x e y son expresiones, entonces (x:y) es una expresión llamada aplicación. x es
el operador e y es el operando. Ambos son elementos de la expresión.
e) Todos los objetos y expresiones están formados por las infinitas combinaciones
y usos de estas reglas.
13
Observaciones informales acerca de los sistemas funcionales
formales
Significado de expresiones; la función semántica _
Cada expresión de los sistemas funcionales formales del tipo e, tiene un
significado, _e, que siempre es un objeto; _e se encuentra en varias ocasiones
sustituyendo cada uso intimo de e por este significado.
Si el proceso es “no terminado”, el significado de e es _. El significado de una aplicaron
intima (x:y) es el resultado de aplicar la función representada por x en y, como en los
sistemas de programación funcional, excepto que en los sistemas funcionales formales
están representados por objetos, mas bien por funciones expresiones, con átomos
representado funciones primitivas y definidas, y con secuencias representado las
funciones de programación funcional denotadas por formularios funcionales.
Objetos representado funciones; la función representación
Como hemos visto, algunos átomos (átomos primitivos) pueden representar
funciones primitivas de un sistema. Otros átomos pueden representar funciones
definidas como los símbolos lo hacen en los sistemas de programación funciona. Si un
átomo no es primitivo ni definido, éste representa _.
Las secuencias también representan funciones y son análogas a los formularios
funcionales de los sistemas de programación funcional. La función representada por una
secuencia viene dada por la regla de metacomposición (“metacomposition rule”)
Definiciones en sistemas funcionales formales
La semántica de sistemas funcionales formales de programación depende de un
conjunto fijo ‘D’ de definiciones, como en el sistema de programación funcional
depende del conjunto de definiciones dado informalmente. Así la función semántica _
depende de D, alterando D se obtiene una nueva _’ que refleja la alteración de
definiciones.
Semánticas formales para los sistemas funcionales formales
Asumimos que el conjunto A de átomos, el conjunto D de definiciones, el
conjunto P perteneciente a A de átomos primitivos y las funciones primitivas
representan haber sido escogidos. También asumimos que _a es la función primitiva
representada por a si a pertenece a P, que _a = _ si a pertenece a Q, el conjunto de
átomos en P-A que no está definido en D. Aunque _ esté definido por todas las
expresiones, las semánticas formales usan estas definiciones solo en P y Q. Las
funciones que _ asigna a otras expresiones x son determinadas implícitamente y
aplicadas en las siguientes reglas de semántica para su evaluación _(x:y). Las opciones
antedichas de A y D, y de P y las funciones primitivas asociadas determinan los objetos,
expresiones y la función semántica _ para un sistema funcional formal. (Miramos D
como fijo y escribimos _ por _ .) Asumimos que D es una secuencia y que _y:D puede
ser computada por algún átomo y.
D
D
14
BIBLIOGRAFÍA
“Fundamentos de los Computadores”, Pedro de Miguel Anasagasti. Ed. Paraninfo
“Fundamentos de los Computadores”, Rafael Asenjo Plaza, Eladio Gutiérrez, Julián
Ramos Cózar. Universidad de Málaga / Manuales.
“Turing’s World 3.0. An Introduction to Computability Theory”, Jon Barwise y John
Etchemendy. CSLI Publications, Standford, California.
“Introducción a la Arquitectura de Computadores”, Javier Bastida Ibáñez, Universidad
de Valladolid.
“Programming Languages, A Grand Tour”, Ellis Horowitz. Ed. Computer Science Press
“Introducción a la teoría de la Computabilidad”, Hans Hermes, Edit. Tecnos.
http://www.terra.es/personal/fremiro/arquitectura.htm
http://www.eurobotics.org/hardvardvsvon.html
15
Descargar