[UACA]

Reutilización de Contenedores Parametrizables con Lenguajes de Semántica Limitada


[home] [<>] [<>] En el día [/\] [\/] [sigue]

1 de junio de 1999
esta tesis fue aceptada para otorgar el grado de:
Doctor en Filosofía

al postulante

Adolfo Di Mare

Tutor: José Ronald Argüello, PhD.

Tribunal de la tesis [<>] [\/] [/\] [<>]

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 Binder.pas, que sirve para reutilizar con comodidad contenedores, entre ellos la lista. También se han hecho pruebas para mostrar que es aceptable la eficiencia de los contenedores parametrizados usando los métodos aquí expuestos.

      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 Binder.pas is included. It is the basis to reuse containers with ease, including the list. Tests have been run to show that the efficiency of containers parameterized using the methods developed here is acceptable.

      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.

Dedicatoria [<>] [\/] [/\] [<>]

      Este trabajo es para mis hijos, Laura y Alejandro, quienes alegran mi vida, dan razón a mi esfuerzo y me entregan siempre su cariño y su respeto. Ellos son la dicha de mi corazón, que día con día me recuerda que los hombres estamos en la Tierra para servir a Dios.

Agradecimientos [<>] [\/] [/\] [<>]

      Muchas personas me han apoyado para concluir este trabajo, empezando por mis padres, Annemarie y Alberto, quienes me educaron y me ayudaron a culminar mis estudios universitarios.

      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.

Índice general [<>] [\/] [/\] [<>]


Tabla de contenidos [<>] [\/] [/\] [<>]

[-] Tribunal de la tesis    [-] Índice    [-] Tabla de contenidos
[-] Resumen    [-] Dedicatoria    [-] Bibliografía
[-] Abstract    [-] Agradecimientos    [-] Referencia
[/\] Principio.  [<>] Índice.  [<>] Contenido  [\/] Final.

Acerca del autor [<>] [\/] [/\] [<>]

Adolfo Di Mare: Investigador costarricense en la Escuela de Ciencias de la Computación e Informática [ECCI] de la Universidad de Costa Rica [UCR], en donde ostenta el rango de Profesor Catedrático. Es Maestro Tutor del Stvdivm Generale de la Universidad Autónoma de Centro América [UACA], en donde ostenta el rango de Catedrático y funge como Consiliario Académico. Obtuvo la Licenciatura en la Universidad de Costa Rica y la Maestría en Ciencias en la Universidad de California, Los Angeles [UCLA].
      http://www.di-mare.com/adolfo

[mailto] Adolfo Di Mare <adolfo@di-mare.com>


Acerca de este documento

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


Copyright © 1999 Adolfo Di Mare
Derechos de autor reservados © 1999 Adolfo Di Mare <adolfo@di-mare.com>
[/\] [<>] [sigue]