|
En el día |
|
| Guy de Teramond, PhD
Presidente del Tribunal | gdt@ns.cr
|
| Michael Pengelly, PhD | mikep@tecapro.com
|
| Dr. Vladimir Lara | vlara@chacal.ecci.ucr.ac.cr
|
| Dr. Carlos González | cgonzale@mimas.cic.itcr.ac.cr
|
| José Ronald Argüello, PhD
Director de Tesis | jarguell@cariari.ucr.ac.cr
|
El tribunal fue nombrado por el Rector de la Universidad, Maestro Guillermo Malavassi, y propuesto por el Director del Instituto de Enseñanza y Posgrado (IEPI), Maestro Mario Granados Moreno.
|
Resumen
|
|
En esta disertación se contesta afirmativamente la
siguiente pregunta: ¿Es posible implementar
contenedores polimórficos si el lenguaje no tiene apoyo
directo para parametrización? El alcanzar esta
meta es muestra de que las avanzadas construcciones
sintácticas que se han utilizado en varios lenguajes de
alto nivel no son la única forma de construir bibliotecas
de componentes
reutilizables. Por eso se
muestra cómo es posible reutilizar con eficiencia la
implementación
Pascal de varios
contenedores,
pese a que Pascal es un lenguaje que no cuenta con
plantillas ni con
paquetes genéricos. Como
base para encontrar métodos que mejoren la
reutilización de contenedores, también se ha hecho
un análisis de las facilidades de abstracción que
ofrecen los lenguajes de programación.
El aporte principal de este trabajo consiste en utilizar de mejor manera el lenguaje, para aumentar significativamente la reutilización de componentes de programación. Para eso se ha hecho un exhaustivo estudio de las cualidades de los contenedores y de los objetos que en ellos están almacenados, para luego obtener bibliotecas que muestran las ventajas que se obtendrían de una implementación que use polimorfismo uniforme, sin pagar un alto precio en uso de memoria o de velocidad de ejecución, ni requerir que el lenguaje usado tenga plantillas o paquetes genéricos. No se ha hecho énfasis en proponer nuevas construcciones sintácticas para aumentar la expresividad de los lenguajes de programación, de manera que el programador pueda usar parametrización y polimorfismo en sus programas, pues ya los lenguajes de alto nivel más utilizados las tienen. Dos objetivos muy importantes se alcanzan al implementar los contenedores siguiendo las ideas desarrolladas en esta investigación. Primero, la reutilización se da a nivel del código compilado, y segundo, se evita distribuir los códigos fuente de los algoritmos. Al alcanzar estos dos objetivos, se allana el camino para que luego sea posible incluir dentro del sistema operativo, como un servicio adicional, una biblioteca de contenedores que pueda ser compartida por todos los programas, lo que ayudará a mejorar la eficiencia de los sistemas de cómputo. Esto no es posible si la reutilización de contenedores se continúa haciendo en la forma tradicional, usando parametrización textual.
Se incluye la implementación del
módulo Pascal
Las ideas desarrolladas en esta investigación han sido implementadas en el lenguaje Pascal, pero los principios aquí enunciados son aplicables a otras plataformas, en especial al lenguaje C++. Por eso, estas técnicas sirven para sugerir mejores formas de utilizar la expresividad adicional, respecto de Pascal, de lenguajes como Ada y C++, para obtener mejores bibliotecas sin sacrificar la eficiencia de los programas. |
Abstract
|
| Reuse of Parameterized Containers in Limited Semantic Languages |
|---|
|
In this dissertation we answer positively the following question:
Is it possible to implement polymorphic containers using a
language that lacks support for parameterization?
Reaching this goal can show that the advanced syntactic constructs
used in high level languages are not the only way to obtain
reusable software
components. This is why it is shown how to reuse with efficiency
several containers implemented in Pascal, even though Pascal is a
language that lacks both
templates and
generic packages. As the basis
for improving container reuse, an analysis of abstraction
facilities in programming languages has been done.
The main contribution in this work is to put the language to a better use, to improve software reuse. For this, an exhaustive study of containers and their stored values has been carried out, to obtain libraries that exhibit the benefits of an implementation where uniform polymorphism was used, without paying a high price in either memory usage or program speed, nor requiring the language to support either templates or generic packages. No emphasis was put on proposing new syntactic constructs to augment the expressiveness of computer languages, to support either parameterization or polymorphism, as the more popular high level languages already have them. When implementing containers using the ideas developed in this research two important goals are reached. First, software reuse is achieved at the level of compiled code, and second, distribution of the reused algorithms' source code is avoided. Achieving these two goals clears the way to later include in the operating system, at a later time and as another service, a library of containers that can be shared among programs, to improve the efficiency of computing systems. This is not possible when software reuse is done the traditional way, using textual parameterization.
The implementation of the Pascal
module
The ideas in this work were developed in the context of the Pascal language, but the principles developed can be applied to other languages, especially C++. This is why these techniques can be applied to put to a better use the additional expressiveness that languages, such as Ada or C++, have with respect to Pascal, without decreasing program performance. |
En nuestras conversaciones, mi amigo Joseph Bannister siempre me ha inducido a terminar mi trabajo de doctorado. Le agradezco a José Ronald Argüello, con quien he tenido muchas diferencias a lo largo de años de trabajo, el haberse tomado el riesgo de dirigirme en esta investigación.
Mi esposa Norma constantemente me impulsó a continuar. No sólo me dio apoyo financiero, que mucho ayuda siempre, sino que supo convencerme de continuar cada vez que yo encontraba una excusa para dedicarme a otra cosa. Sin ella, yo nunca habría llegado al final, y por ella lo he hecho.
[-] Tribunal de la tesis [-] Índice [-] Tabla de contenidos [-] Resumen [-] Dedicatoria [-] Bibliografía [-] Abstract [-] Agradecimientos [-] Referencia
Binder.pas
CTPinst
Principio.
Índice.
Contenido
Final.
http://www.di-mare.com/adolfo
Adolfo Di Mare <adolfo@di-mare.com>
| Referencia: | Di Mare, Adolfo.
Reutilización de Contenedores Parametrizables
con Lenguajes de Semántica Limitada
.
Tesis de Doctorado, Universidad Autónoma de Centro América. 1999.
|
| Internet: |
http://www.di-mare.com/adolfo/binder/index.htm
|
| Autor: | Adolfo Di Mare
<adolfo@di-mare.com>
|
| Contacto: | Apdo 4249-1000, San José Costa Rica Tel: (506) 383-7793 Fax: (506) 591-8369 |
| Revisión: | UACA, Junio 1999
|
|
|
|