Publicado el 9 de Agosto del 2020
1.015 visualizaciones desde el 9 de Agosto del 2020
209,5 KB
21 paginas
Creado hace 19a (27/03/2006)
Programación Declarativa Avanzada.
Fco Jesús Fdez Burgos
EEELLL LLLEEENNNGGGUUUAAAJJJEEE
SSSIIIMMMUUULLLAAA
1
Programación Declarativa Avanzada.
Fco Jesús Fdez Burgos
00.. ÍÍNNDDIICCEE
1. Introducción.
2. Desarrollo y Creación del Lenguaje.
3. Características.
3.1 Simula vs. Smalltalk.
3.2 Resumen de características.
3.3 Conclusion.
4. Breve introducción sobre la Sintaxis en Simula.
4.1 Ejemplo de un producto Matricial.
5. La clase Histograma.
5.1 Solución en Simula .
5.2 Solucion en Visual Basic .NET
5.2.1 Declarando una clase Histograma.
5.2.2 Definiendo un objeto de
la clase
Histograma.
6. La Concurrencia .
6.1 Breve introducción a la Concurrencia.
6.2 La Concurrencia en Simula.
6.3 Conclusion.
7. Polimorfismo & Promoción Numérica.
8. Conclusión Final.
9. Bibliografía.
2
Programación Declarativa Avanzada.
Fco Jesús Fdez Burgos
EEELLL LLLEEENNNGGGUUUAAAJJJEEE SSSIIIMMMUUULLLAAA
11.. IINNTTRROODDUUCCCCIIÓÓNN
A mediados de los años 60 se empezó a vislumbrar el uso de
las computadoras para la simulación de problemas del mundo real,
estos problemas estaban llenos objetos normalmente muy complejos,
los cuales eran difícilmente traducidos a los tipos de datos primitivos
de los pocos lenguajes de la época.
Así fue como a partir de esta necesidad a dos Noruegos se les ocurrió
el concepto de “OBJETO” y sus colecciones CLASES DE OBJETOS.
Nació así el lenguaje SIMULA, un lenguaje que contiene el embrión de
lo que hoy se conoce como la PROGRAMACIÓN ORIENTADA A
OBJETOS.
22.. DDEESSAARRRROOLLLLOO YY CCRREEAACCIIÓÓNN DDEELL LLEENNGGUUAAJJEE
Sus creadores fueron Kristen Nygaard y Ole-Johan Dahl del
Centro Noruego de Computación en Oslo, y su desarrollo se extendió
desde 1962 a 1967. El objetivo inicial era definir un lenguaje de
propósito específico para aplicaciones de simulación.
De hecho, realizaron una primera versión, bajo contrato con la
empresa UNIVAC, que no incluía conceptos novedosos desde el punto
de vista de programación -aunque sí desde el punto de vista de
simulación- con respecto al lenguaje más avanzado de esos años,
Algol 60.
La versión de 1967 tenía como uno de sus objetivos ahorrar esfuerzo
de programación. Nygaard y Dahl habían desarrollado grandes
programas de simulación con la primera versión, y habían detectado
dos deficiencias:
l. Las entidades proceso y estación, útiles en simulación, eran entes
dinámicos que se creaban y destruían a lo largo de una ejecución. El
Concepto de bloque derivado de Algol 60, era insuficiente para
reflejar este dinamismo. Por otra parte, cada entidad tenía asociadas
un conjunto de variables y un conjunto de operaciones que las
manipulaban. Con lo que, el código del programa no reflejaba
claramente esta relación.
2. El código de muchas entidades era bastante semejante, pero el
lenguaje no proporcionaba un mecanismo que permitiera reutilizar las
partes comunes.
3
Programación Declarativa Avanzada.
Fco Jesús Fdez Burgos
El primer hallazgo de Nygaard y Dahl fue la distinción entre una clase
de entidades -un texto suministrado por el programador- y los
objetos que se derivan de ella -los ejemplares de la misma creados y
destruidos dinámicamente a lo largo de una ejecución concreta. Una
clase en Simula 67 consiste en una colección de procedimientos,
asociados a un conjunto de declaraciones de variable. Cada vez que
se crea un objeto de una clase, se asigna memoria para contener
una colección de dichas variables. Esta idea, hoy familiar, exigía dos
innovaciones con respecto a los lenguajes de la época:
• Escapar de la estructura de bloques. A diferencia de ésta, un
objeto ha de "sobrevivir" al procedimiento que lo crea. Varios
objetos de una misma clase han de poder coexistir en un
mismo ámbito.
• Necesidad de un tipo de datos "referencia a un objeto" que
permitiera designar objetos distintos en distintos momentos.
Este tipo, llamado ref en el lenguaje, no era otra cosa que un
puntero.
Con el comenzaron a introducir abstracciones de datos a los
lenguajes de programación.
Además pensaron en la posibilidad de comenzar a reutilizar código,
con sus respectivas y oportunas modificaciones, así se comenzó a
formar la idea de Jerarquías de HERENCIA DE CLASES.
Fueron ellos también los que introdujeron el concepto de
POLIFORMISMO introducido vía procedimientos virtuales, idea que
derivó en el concepto de PROMOCION NUMERICA y según la cual los
objetos pueden ser clasificados o tipificados en una serie de súper
clases de forma que se establece la Jerarquía de Clase.
Todas estas ideas revolucionarias fueron plasmadas en una
primera versión del lenguaje SIMULA, a principios de los 60,
alcanzando su madurez con una versión final en el año 1967, dando
lugar a SIMULA67.
Aunque pensado como un lenguaje de propósito general,
Simula tuvo su mayor excito en las aplicaciones de simulación
discreta, gracias a
facilitaba
considerablemente la programación.
la
clase SIMULATION que
4
Programación Declarativa Avanzada.
Fco Jesús Fdez Burgos
33.. CCAARRAACCTTEERRÍÍSSTTIICCAASS::
Simula fue, probablemente, el primer lenguaje que presentó las
nociones de clase y herencia jerárquica. No se admite la herencia
múltiple. El ocultamiento de información se lleva a cabo “protegiendo”
una característica, lo cual, a su vez, evita que sea heredada en lo
sucesivo.
Admite la sobrecarga de métodos.
La comprobación de tipos se puede realizar, bien estáticamente en el
momento de la compilación, para mayor eficiencia, o bien en el
momento de la ejecución si se define una característica como
“virtual”.
Problema:
El sistema necesita llevar a cabo la recolección de basura de
vez en cuando, es decir, necesita reutilizar la memoria que fue
ocupada por instancias asignadas anteriormente, pero que ya
no se están utilizando. (Ralentiza los programas)
Hace más énfasis en los procesos que en los datos, pero Simula
es responsable de muchas de las ideas que informaron a sus
descendientes, sobre todo la idea de clases, instancias y herencia.
La idea de abstracción está implícita, pero las nociones, como el paso
de mensajes, tuvieron que esperar la llegada de Smalltalk.
Simula es un lenguaje orientado a objetos, puro ya que no permite
salirse de la orientación a objetos para realizar programación clásica.
Problema:
Cosa que le perjudicó ya que la comunidad científica dio la
espalda a un lenguaje que no permitía ningún modo de
programación imperativa clásica.
33..11.. SSIIMMUULLAA VVSS.. SSMMAALLLLTTAALLKK
Ahora mostraremos un resumen de las características de Simula en
comparación con su sucesor Smalltalk.
A favor de Simula67:
•
Tenía una comprobación de tipos en tiempo de compilación,
lo que permitía detectar errores de tipos. Smalltalk era un
lenguaje sin tipos, por lo que no existía declaraciones de tipo
de variables y no se realizaba ninguna comprobación estricta
de tipos. Así los errores que surgen cuando un objeto recibe
5
Programación Declarativa Avanzada.
Fco Jesús Fdez Burgos
un mensaje que no pueda resolver, se procesan todos en
tiempo de Ejecución.
Era un lenguaje ampliamente concurrente (debido a sus
características
innatas como simulador). En cambio
Smalltalk permitía una concurrencia escasa.
Separación Clase-Objeto. En Smalltalk todo eran Objetos,
incluso las clases eran también Objetos.
•
•
En contra:
•
Smalltalk no es solamente un lenguaje, sino todo un entorno
completo de programación, que incluye numerosas librerías
de clases, contemplándose las abstracciones básicas como
colecciones o diccionarios, así como clases gráficas para el
manejo de ventanas, barras de desplazamiento, etc. Es, por
tanto, un lenguaje casi imposible de separar de su entorno
de desarrollo. En cambio Simula67 carecía de un
entorno apropiado con sus características.
Simula, no disponía de depuradores, visores y
tampoco disponía de ninguna aplicación que
permitiese visualizar su Jerarquía de clases. Smalltalk
si disponía de ello, lo que facilitaba el trabajo de los
programadores. Consiguiendo una mejor difusión entre la
comunidad de programadores que Simula.
La sintaxis en Simula, no era ni intuitiva ni sencilla.
Puesto que era un lenguaje tipado, tanto las variables como
los atributos necesitan tener un tipo asociado. Esto unido a
la falta de entornos de desarrollo y depuradores hizo aun
mas dificultosa la tarea de programar en Simula.
•
•
Todo lo contrario pasaba en Smalltalk, su sintaxis era muy
simple y uniforme, variables y atributos no necesitaban de tener
un tipo y en principio TODO está definido como objeto,
incluyendo a las propias clases.
6
Programación Declarativa Avanzada.
Fco Jesús Fdez Burgos
33..22.. RREESSUUMMEENN:: SSIIMMUULLAA VVSS.. SSMMAALLLLTTAALLKK
CARACTERISTICAS SIMULA 67
SMALLTALK 81
Tardía
Si
Si
Escasa
Si
No
Si
No
No
Comprobación de
tipos /ligadura
Si
Polimorfismo
Ocultamiento de la
información
Concurrencia
Herencia
Si
Si
Si
Si
Herencia múltiple No
Recol
Comentarios de: El lenguaje Simula (0)
No hay comentarios