]> git.llucax.com Git - z.facultad/75.00/informe.git/blobdiff - source/intro.rst
Agregar Problemas y limitaciones del recolector actual
[z.facultad/75.00/informe.git] / source / intro.rst
index 4f1282448b51836798ea16acc40c9bf14fbc8f1c..393a10bff0c9eb1fc930dc370512327a42753711 100644 (file)
@@ -4,7 +4,7 @@
    ESTADO: TERMINADO
 
 
-.. _ref_intro:
+.. _intro:
 
 Introducción
 ============================================================================
@@ -12,63 +12,61 @@ Introducción
 La recolección de basura es una técnica que data de fines de los años '50,
 cuando `John McCarthy`_, creador de Lisp_, agregó a dicho lenguaje la
 capacidad de administrar la memoria automáticamente (utilizando conteo de
-referencias), entre muchos otros conceptos revolucionarios para la época
-que recién fueron explotados masivamente en lenguajes dinámicos más
-modernos como Perl_, Python_, Ruby_, etc. A partir de este momento, muchos
-lenguajes tomaron esta característica y hubo una gran cantidad de
-investigación al respecto, tomando particular importancia.
+referencias), entre muchos otros conceptos revolucionarios para la época que
+recién fueron explotados masivamente en lenguajes dinámicos más modernos como
+Perl_, Python_, Ruby_, etc. A partir de este momento, muchos lenguajes tomaron
+esta característica y hubo una gran cantidad de investigación al respecto,
+tomando particular importancia.
 
 Nuevos algoritmos fueron desarrollados para atacar distintos problemas
 particulares y para mejorar la *performance*, que ha sido una inquietud
 incesante en la investigación de recolectores de basura. Sin embargo el
 lenguaje más masivo que ha adoptado un recolector de basura (al menos en el
-ámbito empresarial) fue Java_, con el cual la investigación sobre
-recolección de basura tomó un impulso extra. Probablemente el mayor
-desarrollo e investigación en cuanto a recolección de basura se siga dando
-para Java_, acotando tal vez un poco el alcance de estos avances dado que
-ese lenguaje tiene características muy particulares (*tipado* estático, corre
-sobre una máquina virtual muy rica en cuanto a información de tipos, etc.)
-no disponibles en otros lenguajes. Sin embargo los lenguajes funcionales
-y con *tipado* dinámico siguieron teniendo un nivel de investigación
-y desarrollo importante, dado que fueron concebidos en su mayoría con la
-recolección de basura como parte del diseño.
-
-Probablemente los lenguajes en los cuales es más difícil aplicar los
-avances que se desprendieron de Java_ o de las otras categoría de lenguajes
-con más avances en recolección de basura sean los de más bajo nivel (como
-C y C++), en los cuales se da lo inverso en cuanto a disponibilidad de
-información en tiempo de ejecución, sumado a la permisividad de estos
-lenguajes para realizar manipulación de memoria directamente y trabajar
-a muy bajo nivel. De la mano de estos lenguajes apareció otra veta de
-investigación en lo que se denominó recolectores de basura *conservativos*.
-
-Una categoría de lenguaje que ha quedado prácticamente vacante es un
-término intermedio entre los lenguajes de muy alto nivel (como Java_,
-Python_, Haskell_, etc.). El lenguaje de programación D_ está en esta
-categoría y, a pesar de haber sido diseñado con soporte de recolección de
-basura, al ser un lenguaje relativamente nuevo, ha tenido muy poco
-desarrollo en ese área. El lenguaje tiene todas las limitaciones de
-lenguajes de bajo nivel como C y C++ pero esas limitaciones suelen estar
-más aisladas, y provee un poco más de información que puede ser aprovechada
-por un recolector de la que suelen proveer los demás lenguajes de estas
-características. Esto presenta una oportunidad única en cuanto
-a investigación y desarrollo de recolectores que se ajusten a estas
-características.
+ámbito empresarial) fue Java_, con el cual la investigación sobre recolección
+de basura tomó un impulso extra. Probablemente el mayor desarrollo
+e investigación en cuanto a recolección de basura se siga dando para Java_,
+acotando tal vez un poco el alcance de estos avances dado que ese lenguaje
+tiene características muy particulares (*tipado* estático, corre sobre una
+máquina virtual muy rica en cuanto a información de tipos, etc.) no
+disponibles en otros lenguajes. Sin embargo los lenguajes funcionales y con
+*tipado* dinámico siguieron teniendo un nivel de investigación y desarrollo
+importante, dado que fueron concebidos en su mayoría con la recolección de
+basura como parte del diseño.
+
+Probablemente los lenguajes en los cuales es más difícil aplicar los avances
+que se desprendieron de Java_ o de las otras categoría de lenguajes con más
+avances en recolección de basura sean los de más bajo nivel (como C y C++), en
+los cuales se da lo inverso en cuanto a disponibilidad de información en
+tiempo de ejecución, sumado a la permisividad de estos lenguajes para realizar
+manipulación de memoria directamente y trabajar a muy bajo nivel. De la mano
+de estos lenguajes apareció otra veta de investigación en lo que se denominó
+recolectores de basura *conservativos*.
+
+Una categoría de lenguaje que ha quedado prácticamente vacante es un término
+intermedio entre los lenguajes de muy alto nivel (como Java_, Python_,
+Haskell_, etc.). El lenguaje de programación D_ está en esta categoría y,
+a pesar de haber sido diseñado con soporte de recolección de basura, al ser un
+lenguaje relativamente nuevo, ha tenido muy poco desarrollo en ese área. El
+lenguaje tiene todas las limitaciones de lenguajes de bajo nivel como C y C++
+pero esas limitaciones suelen estar más aisladas, y provee un poco más de
+información que puede ser aprovechada por un recolector de la que suelen
+proveer los demás lenguajes de estas características. Esto presenta una
+oportunidad única en cuanto a investigación y desarrollo de recolectores que
+se ajusten a estas características.
 
 
 
 Objetivo
 ----------------------------------------------------------------------------
 
-El objetivos de esta tesis es mejorar el recolector de basura de el
-lenguaje D_, investigando el estado del arte en recolección de basura
-y haciendo un análisis de viabilidad de los algoritmos principales para
-optar por el que mejor se ajuste a D_. Una parte muy importante de este
-análisis es participar de la comunidad del lenguaje y sus diseñadores para
-poder desarrollar una mejora que sea aceptada y pueda ser utilizada por el
-lenguaje. Por lo tanto el algoritmo o mejora que "mejor se ajuste a D_"
-estará supeditado en gran parte a los requerimientos más urgentes de los
-usuarios de D_.
+El objetivos de esta tesis es mejorar el recolector de basura de el lenguaje
+D_, investigando el estado del arte en recolección de basura y haciendo un
+análisis de viabilidad de los algoritmos principales para optar por el que
+mejor se ajuste a D_. Una parte muy importante de este análisis es participar
+de la comunidad del lenguaje y sus diseñadores para poder desarrollar una
+mejora que sea aceptada y pueda ser utilizada por el lenguaje. Por lo tanto el
+algoritmo o mejora que "mejor se ajuste a D_" estará supeditado en gran parte
+a los requerimientos más urgentes de los usuarios de D_.
 
 
 
@@ -93,13 +91,13 @@ El alcance de este trabajo se limita a los siguientes puntos:
 Limitaciones
 ----------------------------------------------------------------------------
 
-Dado que el lenguaje de programación D_ puede ser enlazado con código
-objeto C, y por lo tanto interactuar directamente con éste, podrán haber
-limitaciones en el recolector resultante con respecto a esto. En este
-trabajo se busca lograr un recolector que sea eficiente para casos en donde
-el código que interactúa con C esté bien aislado, por lo que estas
-porciones de código pueden quedar por fuera del recolector de basura
-o necesitar un manejo especial.
+Dado que el lenguaje de programación D_ puede ser enlazado con código objeto
+C, y por lo tanto interactuar directamente con éste, podrán haber limitaciones
+en el recolector resultante con respecto a esto. En este trabajo se busca
+lograr un recolector que sea eficiente para casos en donde el código que
+interactúa con C esté bien aislado, por lo que estas porciones de código
+pueden quedar por fuera del recolector de basura o necesitar un manejo
+especial.
 
 
 Organización
@@ -108,21 +106,21 @@ Organización
 Este trabajo se encuentra dividido en 7 cápitos que se describen
 a continuación:
 
-1. :ref:`ref_intro`: breve descripción del problema a tratar, presentando
+1. :ref:`intro`: breve descripción del problema a tratar, presentando
    los objetivos y alcances del trabajo.
-2. :ref:`ref_d`: presenta las características principales del lenguaje,
+2. :ref:`d_lang`: presenta las características principales del lenguaje,
    destacando aquellas de mayor relevancia para este trabajo.
-3. :ref:`ref_gc`: presenta los algoritmos básicos de recolección de basura
+3. :ref:`gc`: presenta los algoritmos básicos de recolección de basura
    y describe el estado del arte.
-4. :ref:`ref_dgc`: explica los problemas particulares que presenta el
+4. :ref:`dgc`: explica los problemas particulares que presenta el
    lenguaje para la recolección de basura, describe el diseño
    e implementación del recolector actual y presenta sus principales
    deficiencias.
-5. :ref:`ref_analisis`: realiza un recorrido por los algoritmos presentados
-   en :ref:`ref_gc` analizando su viabilidad para aplicarse en D_.
-6. :ref:`ref_solucion`: propone una solución a los problemas encontrados en
-   :ref:`ref_dgc` en base al análisis hecho en :ref:`ref_analisis`.
-7. :ref:`ref_conclusion`: describe los resultados del trabajo, proponiendo
+5. :ref:`analisis`: realiza un recorrido por los algoritmos presentados
+   en :ref:`gc` analizando su viabilidad para aplicarse en D_.
+6. :ref:`solucion`: propone una solución a los problemas encontrados en
+   :ref:`dgc` en base al análisis hecho en :ref:`analisis`.
+7. :ref:`conclusion`: describe los resultados del trabajo, proponiendo
    trabajos futuros y relacionados.